Changeset - r17768:a8b4e13e2113
[Not reviewed]
master
0 6 0
terkhen - 13 years ago 2011-06-12 20:38:46
terkhen@openttd.org
(svn r22563) -Codechange: Use a function for storing values inside the persistent storage.
6 files changed with 45 insertions and 7 deletions:
0 comments (0 inline, 0 general)
src/newgrf_airport.cpp
Show inline comments
 
@@ -184,6 +184,19 @@ static void AirportSetTriggers(const Res
 
{
 
}
 

	
 
/**
 
 * Store a value into the object's persistent storage.
 
 * @param object Object that we want to query.
 
 * @param pos Position in the persistent storage to use.
 
 * @param value Value to store.
 
 */
 
void AirportStorePSA(ResolverObject *object, uint pos, int32 value)
 
{
 
	Station *st = object->u.airport.st;
 
	if (object->scope != VSG_SCOPE_SELF || st == NULL) return;
 
	st->airport.psa.Store(pos, value);
 
}
 

	
 
static void NewAirportResolver(ResolverObject *res, TileIndex tile, Station *st, byte airport_id, byte layout)
 
{
 
	res->GetRandomBits = AirportGetRandomBits;
 
@@ -191,8 +204,8 @@ static void NewAirportResolver(ResolverO
 
	res->SetTriggers   = AirportSetTriggers;
 
	res->GetVariable   = AirportGetVariable;
 
	res->ResolveReal   = AirportResolveReal;
 
	res->StorePSA      = AirportStorePSA;
 

	
 
	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;
src/newgrf_airporttiles.cpp
Show inline comments
 
@@ -228,9 +228,9 @@ static void AirportTileResolver(Resolver
 
	res->SetTriggers   = NULL;
 
	res->GetVariable   = AirportTileGetVariable;
 
	res->ResolveReal   = AirportTileResolveReal;
 
	res->StorePSA      = NULL;
 

	
 
	assert(st != NULL);
 
	res->psa                  = NULL;
 
	res->u.airport.airport_id = st->airport.type;
 
	res->u.airport.st         = st;
 
	res->u.airport.tile       = tile;
src/newgrf_industries.cpp
Show inline comments
 
@@ -376,6 +376,19 @@ static void IndustrySetTriggers(const Re
 
	ind->random_triggers = triggers;
 
}
 

	
 
/**
 
 * Store a value into the object's persistent storage.
 
 * @param object Object that we want to query.
 
 * @param pos Position in the persistent storage to use.
 
 * @param value Value to store.
 
 */
 
void IndustryStorePSA(ResolverObject *object, uint pos, int32 value)
 
{
 
	Industry *ind = object->u.industry.ind;
 
	if (object->scope != VSG_SCOPE_SELF || ind->index == INVALID_INDUSTRY) return;
 
	ind->psa.Store(pos, value);
 
}
 

	
 
static void NewIndustryResolver(ResolverObject *res, TileIndex tile, Industry *indus, IndustryType type)
 
{
 
	res->GetRandomBits = IndustryGetRandomBits;
 
@@ -383,8 +396,8 @@ static void NewIndustryResolver(Resolver
 
	res->SetTriggers   = IndustrySetTriggers;
 
	res->GetVariable   = IndustryGetVariable;
 
	res->ResolveReal   = IndustryResolveReal;
 
	res->StorePSA      = IndustryStorePSA;
 

	
 
	res->psa             = &indus->psa;
 
	res->u.industry.tile = tile;
 
	res->u.industry.ind  = indus;
 
	res->u.industry.gfx  = INVALID_INDUSTRYTILE;
src/newgrf_industrytiles.cpp
Show inline comments
 
@@ -148,6 +148,19 @@ static void IndustryTileSetTriggers(cons
 
	}
 
}
 

	
 
/**
 
 * Store a value into the persistent storage of the object's parent.
 
 * @param object Object that we want to query.
 
 * @param pos Position in the persistent storage to use.
 
 * @param value Value to store.
 
 */
 
void IndustryTileStorePSA(ResolverObject *object, uint pos, int32 value)
 
{
 
	Industry *ind = object->u.industry.ind;
 
	if (object->scope != VSG_SCOPE_PARENT || ind->index == INVALID_INDUSTRY) return;
 
	ind->psa.Store(pos, value);
 
}
 

	
 
static void NewIndustryTileResolver(ResolverObject *res, IndustryGfx gfx, TileIndex tile, Industry *indus)
 
{
 
	res->GetRandomBits = IndustryTileGetRandomBits;
 
@@ -155,8 +168,8 @@ static void NewIndustryTileResolver(Reso
 
	res->SetTriggers   = IndustryTileSetTriggers;
 
	res->GetVariable   = IndustryTileGetVariable;
 
	res->ResolveReal   = IndustryTileResolveReal;
 
	res->StorePSA      = IndustryTileStorePSA;
 

	
 
	res->psa             = &indus->psa;
 
	res->u.industry.tile = tile;
 
	res->u.industry.ind  = indus;
 
	res->u.industry.gfx  = gfx;
src/newgrf_spritegroup.cpp
Show inline comments
 
@@ -113,7 +113,7 @@ static U EvalAdjustT(const Deterministic
 
		case DSGA_OP_XOR:  return last_value ^ value;
 
		case DSGA_OP_STO:  _temp_store.Store((U)value, (S)last_value); return last_value;
 
		case DSGA_OP_RST:  return value;
 
		case DSGA_OP_STOP: if (object->psa != NULL) object->psa->Store((U)value, (S)last_value); return last_value;
 
		case DSGA_OP_STOP: if (object->StorePSA != NULL) object->StorePSA(object, (U)value, (S)last_value); return last_value;
 
		case DSGA_OP_ROR:  return RotateRight(last_value, value);
 
		case DSGA_OP_SCMP: return ((S)last_value == (S)value) ? 1 : ((S)last_value < (S)value ? 0 : 2);
 
		case DSGA_OP_UCMP: return ((U)last_value == (U)value) ? 1 : ((U)last_value < (U)value ? 0 : 2);
src/newgrf_spritegroup.h
Show inline comments
 
@@ -314,8 +314,6 @@ struct ResolverObject {
 
	VarSpriteGroupScope scope;  ///< Scope of currently resolved DeterministicSpriteGroup resp. RandomizedSpriteGroup
 
	byte count;                 ///< Additional scope for RandomizedSpriteGroup
 

	
 
	BaseStorageArray *psa;      ///< The persistent storage array of this resolved object.
 

	
 
	const GRFFile *grffile;     ///< GRFFile the resolved SpriteGroup belongs to
 

	
 
	union {
 
@@ -382,6 +380,7 @@ struct ResolverObject {
 
	void (*SetTriggers)(const struct ResolverObject*, int);
 
	uint32 (*GetVariable)(const struct ResolverObject*, byte, byte, bool*);
 
	const SpriteGroup *(*ResolveReal)(const struct ResolverObject*, const RealSpriteGroup*);
 
	void (*StorePSA)(struct ResolverObject*, uint, int32);
 
};
 

	
 
#endif /* NEWGRF_SPRITEGROUP_H */
0 comments (0 inline, 0 general)