diff options
author | alberth <alberth@openttd.org> | 2012-11-10 20:38:46 +0000 |
---|---|---|
committer | alberth <alberth@openttd.org> | 2012-11-10 20:38:46 +0000 |
commit | b985c4c0f8f0428f1d036e66ec919e33063bb32c (patch) | |
tree | 4503b67df89b900337572d62bc051b2dc96505bb /src/newgrf_town.h | |
parent | 438495b433f5b4d3ce81f8efc7d655d2337582fe (diff) | |
download | openttd-b985c4c0f8f0428f1d036e66ec919e33063bb32c.tar.xz |
(svn r24679) -Codechange: Add resolver classes for towns.
Diffstat (limited to 'src/newgrf_town.h')
-rw-r--r-- | src/newgrf_town.h | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/newgrf_town.h b/src/newgrf_town.h index 659de7691..af79e0141 100644 --- a/src/newgrf_town.h +++ b/src/newgrf_town.h @@ -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 */ |