|
@@ -214,12 +214,13 @@ static uint32 GetAirportTileIDAtOffset(T
|
|
|
* @param callback_param2 Second parameter (var 18) of the callback.
|
|
|
*/
|
|
|
AirportTileResolverObject::AirportTileResolverObject(const AirportTileSpec *ats, TileIndex tile, Station *st,
|
|
|
CallbackID callback, uint32 callback_param1, uint32 callback_param2)
|
|
|
: ResolverObject(ats->grf_prop.grffile, callback, callback_param1, callback_param2), tiles_scope(*this, ats, tile, st)
|
|
|
{
|
|
|
this->root_spritegroup = ats->grf_prop.spritegroup[0];
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Constructor of the scope resolver specific for airport tiles.
|
|
|
* @param ats Specification of the airport tiles.
|
|
|
* @param tile %Tile for the callback, only valid for airporttile callbacks.
|
|
@@ -234,16 +235,13 @@ AirportTileScopeResolver::AirportTileSco
|
|
|
this->tile = tile;
|
|
|
}
|
|
|
|
|
|
uint16 GetAirportTileCallback(CallbackID callback, uint32 param1, uint32 param2, const AirportTileSpec *ats, Station *st, TileIndex tile, int extra_data = 0)
|
|
|
{
|
|
|
AirportTileResolverObject object(ats, tile, st, callback, param1, param2);
|
|
|
const SpriteGroup *group = SpriteGroup::Resolve(ats->grf_prop.spritegroup[0], object);
|
|
|
if (group == NULL) return CALLBACK_FAILED;
|
|
|
|
|
|
return group->GetCallbackResult();
|
|
|
return object.ResolveCallback();
|
|
|
}
|
|
|
|
|
|
static void AirportDrawTileLayout(const TileInfo *ti, const TileLayoutSpriteGroup *group, byte colour, StationGfx gfx)
|
|
|
{
|
|
|
const DrawTileSprites *dts = group->ProcessRegisters(NULL);
|
|
|
|
|
@@ -272,13 +270,13 @@ bool DrawNewAirportTile(TileInfo *ti, St
|
|
|
}
|
|
|
|
|
|
if (draw_old_one) DrawFoundation(ti, FOUNDATION_LEVELED);
|
|
|
}
|
|
|
|
|
|
AirportTileResolverObject object(airts, ti->tile, st);
|
|
|
const SpriteGroup *group = SpriteGroup::Resolve(airts->grf_prop.spritegroup[0], object);
|
|
|
const SpriteGroup *group = object.Resolve();
|
|
|
if (group == NULL || group->type != SGT_TILELAYOUT) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
const TileLayoutSpriteGroup *tlgroup = (const TileLayoutSpriteGroup *)group;
|
|
|
AirportDrawTileLayout(ti, tlgroup, Company::Get(st->owner)->colour, gfx);
|