diff options
author | smatz <smatz@openttd.org> | 2009-09-07 07:39:08 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2009-09-07 07:39:08 +0000 |
commit | 22e9d595591dab19e9d37a42f8d529570f582847 (patch) | |
tree | 066e3cee3770b84cb97671dd3bffa78f7df61882 /src/town_cmd.cpp | |
parent | 9168ddd5507026b6346797f48bd0853091cbcb4e (diff) | |
download | openttd-22e9d595591dab19e9d37a42f8d529570f582847.tar.xz |
(svn r17439) -Fix (r17436): you weren't paid for cargo delivered to houses and headquarters anymore
Diffstat (limited to 'src/town_cmd.cpp')
-rw-r--r-- | src/town_cmd.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index d15cead5e..49775798c 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -579,7 +579,14 @@ static void AddProducedCargo_Town(TileIndex tile, CargoArray &produced) } } -static void AddAcceptedCargo_Town(TileIndex tile, CargoArray &acceptance) +static inline void AddAcceptedCargoSetMask(CargoID cargo, uint amount, CargoArray &acceptance, uint32 *town_acc) +{ + if (cargo == CT_INVALID || amount == 0) return; + acceptance[cargo] += amount; + SetBit(*town_acc, cargo); +} + +static void AddAcceptedCargo_Town(TileIndex tile, CargoArray &acceptance, uint32 *town_acc) { const HouseSpec *hs = HouseSpec::Get(GetHouseType(tile)); CargoID accepts[3]; @@ -604,13 +611,13 @@ static void AddAcceptedCargo_Town(TileIndex tile, CargoArray &acceptance) if (HasBit(hs->callback_mask, CBM_HOUSE_CARGO_ACCEPTANCE)) { uint16 callback = GetHouseCallback(CBID_HOUSE_CARGO_ACCEPTANCE, 0, 0, GetHouseType(tile), Town::GetByTile(tile), tile); if (callback != CALLBACK_FAILED) { - if (accepts[0] != CT_INVALID) acceptance[accepts[0]] += GB(callback, 0, 4); - if (accepts[1] != CT_INVALID) acceptance[accepts[1]] += GB(callback, 4, 4); + AddAcceptedCargoSetMask(accepts[0], GB(callback, 0, 4), acceptance, town_acc); + AddAcceptedCargoSetMask(accepts[1], GB(callback, 4, 4), acceptance, town_acc); if (_settings_game.game_creation.landscape != LT_TEMPERATE && HasBit(callback, 12)) { /* The 'S' bit indicates food instead of goods */ - acceptance[CT_FOOD] += GB(callback, 8, 4); + AddAcceptedCargoSetMask(CT_FOOD, GB(callback, 8, 4), acceptance, town_acc); } else { - if (accepts[2] != CT_INVALID) acceptance[accepts[2]] += GB(callback, 8, 4); + AddAcceptedCargoSetMask(accepts[2], GB(callback, 8, 4), acceptance, town_acc); } return; } @@ -618,7 +625,7 @@ static void AddAcceptedCargo_Town(TileIndex tile, CargoArray &acceptance) /* No custom acceptance, so fill in with the default values */ for (uint8 i = 0; i < lengthof(accepts); i++) { - if (accepts[i] != CT_INVALID) acceptance[accepts[i]] += hs->cargo_acceptance[i]; + AddAcceptedCargoSetMask(accepts[i], hs->cargo_acceptance[i], acceptance, town_acc); } } |