File diff r15750:3bcbb46bc1fc → r15751:f4fe02ef4406
src/newgrf_airport.cpp
Show inline comments
 
@@ -178,82 +178,82 @@ static uint32 AirportGetRandomBits(const
 
{
 
	const Station *st = object->u.airport.st;
 
	const TileIndex tile = object->u.airport.tile;
 
	return (st == NULL ? 0 : st->random_bits) | (tile == INVALID_TILE ? 0 : GetStationTileRandomBits(tile) << 16);
 
}
 

	
 
static uint32 AirportGetTriggers(const ResolverObject *object)
 
{
 
	return 0;
 
}
 

	
 
static void AirportSetTriggers(const ResolverObject *object, int triggers)
 
{
 
}
 

	
 
static void NewAirportResolver(ResolverObject *res, TileIndex tile, Station *st, byte airport_id, byte layout)
 
{
 
	res->GetRandomBits = AirportGetRandomBits;
 
	res->GetTriggers   = AirportGetTriggers;
 
	res->SetTriggers   = AirportSetTriggers;
 
	res->GetVariable   = AirportGetVariable;
 
	res->ResolveReal   = AirportResolveReal;
 

	
 
	res->psa                  = st != NULL ? &st->airport.psa : NULL;
 
	res->u.airport.st         = st;
 
	res->u.airport.airport_id = airport_id;
 
	res->u.airport.layout     = layout;
 
	res->u.airport.tile       = tile;
 

	
 
	res->callback        = CBID_NO_CALLBACK;
 
	res->callback_param1 = 0;
 
	res->callback_param2 = 0;
 
	res->last_value      = 0;
 
	res->trigger         = 0;
 
	res->reseed          = 0;
 
	res->count           = 0;
 

	
 
	const AirportSpec *as = AirportSpec::Get(airport_id);
 
	res->grffile = (as != NULL ? as->grf_prop.grffile : NULL);
 
}
 

	
 
SpriteID GetCustomAirportSprite(const AirportSpec *as, byte layout)
 
{
 
	const SpriteGroup *group;
 
	ResolverObject object;
 

	
 
	NewAirportResolver(&object, INVALID_TILE, NULL, as->GetIndex(), layout);
 

	
 
	group = SpriteGroup::Resolve(as->grf_prop.spritegroup, &object);
 
	group = SpriteGroup::Resolve(as->grf_prop.spritegroup[0], &object);
 
	if (group == NULL) return as->preview_sprite;
 

	
 
	return group->GetResult();
 
}
 

	
 
uint16 GetAirportCallback(CallbackID callback, uint32 param1, uint32 param2, Station *st, TileIndex tile)
 
{
 
	ResolverObject object;
 

	
 
	NewAirportResolver(&object, tile, st, st->airport.type, st->airport.layout);
 
	object.callback = callback;
 
	object.callback_param1 = param1;
 
	object.callback_param2 = param2;
 

	
 
	const SpriteGroup *group = SpriteGroup::Resolve(st->airport.GetSpec()->grf_prop.spritegroup, &object);
 
	const SpriteGroup *group = SpriteGroup::Resolve(st->airport.GetSpec()->grf_prop.spritegroup[0], &object);
 
	if (group == NULL) return CALLBACK_FAILED;
 

	
 
	return group->GetCallbackResult();
 
}
 

	
 
StringID GetAirportTextCallback(const AirportSpec *as, byte layout, uint16 callback)
 
{
 
	const SpriteGroup *group;
 
	ResolverObject object;
 

	
 
	NewAirportResolver(&object, INVALID_TILE, NULL, as->GetIndex(), layout);
 
	object.callback = (CallbackID)callback;
 

	
 
	group = SpriteGroup::Resolve(as->grf_prop.spritegroup, &object);
 
	group = SpriteGroup::Resolve(as->grf_prop.spritegroup[0], &object);
 
	if (group == NULL) return STR_UNDEFINED;
 

	
 
	return GetGRFStringID(as->grf_prop.grffile->grfid, 0xD000 + group->GetResult());
 
}