(svn r24679) -Codechange: Add resolver classes for towns.

This commit is contained in:
alberth
2012-11-10 20:38:46 +00:00
parent 438495b433
commit b985c4c0f8
4 changed files with 55 additions and 4 deletions

View File

@@ -13,11 +13,37 @@
#define NEWGRF_TOWN_H
#include "town_type.h"
#include "newgrf_spritegroup.h"
/* Currently there is no direct town resolver; we only need to get town
* variable results from inside stations, house tiles and industries,
* and to check the town's persistent storage. */
* and to check the town's persistent storage.
* XXX Remove the functions. */
uint32 TownGetVariable(byte variable, uint32 parameter, bool *available, Town *t, const struct GRFFile *caller_grffile);
void TownStorePSA(Town *t, const struct GRFFile *caller_grffile, uint pos, int32 value);
struct TownScopeResolver : public ScopeResolver {
Town *t;
bool readonly;
TownScopeResolver(ResolverObject *ro, Town *t, bool readonly);
virtual uint32 GetVariable(byte variable, uint32 parameter, bool *available) const;
virtual void StorePSA(uint reg, int32 value);
};
struct TownResolverObject : public ResolverObject {
TownScopeResolver town_scope;
TownResolverObject(const struct GRFFile *grffile, Town *t, bool readonly);
/* virtual */ ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0)
{
switch (scope) {
case VSG_SCOPE_SELF: return &town_scope;
default: return &this->default_scope; // XXX return ResolverObject::GetScope(scope, relative);
}
}
};
#endif /* NEWGRF_TOWN_H */