diff options
author | alberth <alberth@openttd.org> | 2012-11-10 20:45:04 +0000 |
---|---|---|
committer | alberth <alberth@openttd.org> | 2012-11-10 20:45:04 +0000 |
commit | 69e07c3e00180053cc087ceb1dfeb89845b79857 (patch) | |
tree | 5d6689768caf5afbafa1d3b7ff6063ca8f40ae24 /src/newgrf_engine.h | |
parent | e087503fd6cf8a461fac7a11bbd9a96f7b4180e7 (diff) | |
download | openttd-69e07c3e00180053cc087ceb1dfeb89845b79857.tar.xz |
(svn r24691) -Codechange: Add resolver classes for vehicles.
Diffstat (limited to 'src/newgrf_engine.h')
-rw-r--r-- | src/newgrf_engine.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/newgrf_engine.h b/src/newgrf_engine.h index 539826669..645f6310b 100644 --- a/src/newgrf_engine.h +++ b/src/newgrf_engine.h @@ -18,6 +18,37 @@ #include "vehicle_type.h" #include "engine_type.h" #include "gfx_type.h" +#include "newgrf_spritegroup.h" + +struct VehicleScopeResolver : public ScopeResolver { + const struct Vehicle *v; + EngineID self_type; + bool info_view; ///< Indicates if the item is being drawn in an info window + + VehicleScopeResolver(ResolverObject *ro, EngineID engine_type, const Vehicle *v, bool info_view); + + void SetVehicle(const Vehicle *v) { this->v = v; } + + /* virtual */ uint32 GetRandomBits() const; + /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; + /* virtual */ uint32 GetTriggers() const; + /* virtual */ void SetTriggers(int triggers) const; +}; + +struct VehicleResolverObject : public ResolverObject { + VehicleScopeResolver self_scope; + VehicleScopeResolver parent_scope; + + VehicleScopeResolver relative_scope; + byte cached_relative_count; + + VehicleResolverObject(EngineID engine_type, const Vehicle *v, bool info_view = false, + CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0); + + /* virtual */ ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0); + + /* virtual */ const SpriteGroup *ResolveReal(const RealSpriteGroup *group) const; +}; static const uint TRAININFO_DEFAULT_VEHICLE_WIDTH = 29; static const uint ROADVEHINFO_DEFAULT_VEHICLE_WIDTH = 32; |