diff options
author | peter1138 <peter1138@openttd.org> | 2007-04-13 21:18:48 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2007-04-13 21:18:48 +0000 |
commit | 01ef0284cb0742a1779e773fe2e46fe397d52109 (patch) | |
tree | f8e40defa57dea8ae4ebfbd5806cf74a3310d9c5 | |
parent | 59399480b3af919eea479b1dd3e2ee69dcd0bc5a (diff) | |
download | openttd-01ef0284cb0742a1779e773fe2e46fe397d52109.tar.xz |
(svn r9621) -Codechange: implement newgrf house property 1E (cargo types)
-rw-r--r-- | src/newgrf.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/newgrf.cpp b/src/newgrf.cpp index fcfa39a41..7bb24f3b0 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -1403,8 +1403,25 @@ static bool TownHouseChangeInfo(uint hid, int numinfo, int prop, byte **bufp, in break; case 0x1E: // Accepted cargo types - FOR_EACH_OBJECT grf_load_dword(&buf); - ret = true; + FOR_EACH_OBJECT { + uint32 cargotypes = grf_load_dword(&buf); + + /* Check if the cargo types should not be changed */ + if (cargotypes == 0xFFFFFFFF) break; + + for (uint j = 0; j < 3; j++) { + /* Get the cargo number from the 'list' */ + uint8 cargo_part = GB(cargotypes, 8 * j, 8); + CargoID cargo = GetCargoTranslation(cargo_part, _cur_grffile); + + if (cargo == CT_INVALID) { + /* Disable acceptance of invalid cargo type */ + housespec[i]->cargo_acceptance[j] = 0; + } else { + housespec[i]->accepts_cargo[j] = cargo; + } + } + } break; default: |