100
100
static uint32 HouseGetRandomBits(const ResolverObject *object)
102
const TileIndex tile = object->u.house.tile;
103
return (tile == INVALID_TILE || !IsTileType(tile, MP_HOUSE)) ? 0 : GetHouseRandomBits(tile);
102
/* Note: Towns build houses over houses. So during construction checks 'tile' may be a valid but unrelated house. */
103
TileIndex tile = object->u.house.tile;
104
assert(IsValidTile(tile) && (object->u.house.not_yet_constructed || IsTileType(tile, MP_HOUSE)));
105
return object->u.house.not_yet_constructed ? 0 : GetHouseRandomBits(tile);
106
108
static uint32 HouseGetTriggers(const ResolverObject *object)
108
const TileIndex tile = object->u.house.tile;
109
return (tile == INVALID_TILE || !IsTileType(tile, MP_HOUSE)) ? 0 : GetHouseTriggers(tile);
110
/* Note: Towns build houses over houses. So during construction checks 'tile' may be a valid but unrelated house. */
111
TileIndex tile = object->u.house.tile;
112
assert(IsValidTile(tile) && (object->u.house.not_yet_constructed || IsTileType(tile, MP_HOUSE)));
113
return object->u.house.not_yet_constructed ? 0 : GetHouseTriggers(tile);
112
116
static void HouseSetTriggers(const ResolverObject *object, int triggers)
114
const TileIndex tile = object->u.house.tile;
115
if (IsTileType(tile, MP_HOUSE)) SetHouseTriggers(tile, triggers);
118
TileIndex tile = object->u.house.tile;
119
assert(!object->u.house.not_yet_constructed && IsValidTile(tile) && IsTileType(tile, MP_HOUSE));
120
SetHouseTriggers(tile, triggers);
118
123
static uint32 GetNumHouses(HouseID house_id, const Town *town)
370
375
res->u.house.tile = tile;
371
376
res->u.house.town = town;
372
377
res->u.house.house_id = house_id;
378
res->u.house.not_yet_constructed = false;
374
380
res->callback = CBID_NO_CALLBACK;
375
381
res->callback_param1 = 0;
383
389
res->grffile = (hs != NULL ? hs->grffile : NULL);
386
uint16 GetHouseCallback(CallbackID callback, uint32 param1, uint32 param2, HouseID house_id, Town *town, TileIndex tile)
392
uint16 GetHouseCallback(CallbackID callback, uint32 param1, uint32 param2, HouseID house_id, Town *town, TileIndex tile, bool not_yet_constructed)
388
394
ResolverObject object;
389
395
const SpriteGroup *group;
397
assert(IsValidTile(tile) && (not_yet_constructed || IsTileType(tile, MP_HOUSE)));
391
399
NewHouseResolver(&object, house_id, tile, town);
392
400
object.callback = callback;
393
401
object.callback_param1 = param1;
394
402
object.callback_param2 = param2;
403
object.u.house.not_yet_constructed = not_yet_constructed;
396
405
group = SpriteGroup::Resolve(HouseSpec::Get(house_id)->spritegroup, &object);
397
406
if (group == NULL) return CALLBACK_FAILED;