From 01ef0284cb0742a1779e773fe2e46fe397d52109 Mon Sep 17 00:00:00 2001 From: peter1138 Date: Fri, 13 Apr 2007 21:18:48 +0000 Subject: [PATCH] (svn r9621) -Codechange: implement newgrf house property 1E (cargo types) --- src/newgrf.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index fcfa39a41a..7bb24f3b06 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: