summaryrefslogtreecommitdiff
path: root/src/newgrf_engine.h
diff options
context:
space:
mode:
authoralberth <alberth@openttd.org>2012-11-10 20:45:04 +0000
committeralberth <alberth@openttd.org>2012-11-10 20:45:04 +0000
commit69e07c3e00180053cc087ceb1dfeb89845b79857 (patch)
tree5d6689768caf5afbafa1d3b7ff6063ca8f40ae24 /src/newgrf_engine.h
parente087503fd6cf8a461fac7a11bbd9a96f7b4180e7 (diff)
downloadopenttd-69e07c3e00180053cc087ceb1dfeb89845b79857.tar.xz
(svn r24691) -Codechange: Add resolver classes for vehicles.
Diffstat (limited to 'src/newgrf_engine.h')
-rw-r--r--src/newgrf_engine.h31
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;