summaryrefslogtreecommitdiff
path: root/newgrf_spritegroup.h
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2006-04-27 19:53:58 +0000
committerpeter1138 <peter1138@openttd.org>2006-04-27 19:53:58 +0000
commit7aaedf038522579b2210d91234beb0e3cb919960 (patch)
tree4ca30a240de71e8e2740d19c74db62d34bec9182 /newgrf_spritegroup.h
parent3ac1832fd1c901a82851556b3503b320f20f783d (diff)
downloadopenttd-7aaedf038522579b2210d91234beb0e3cb919960.tar.xz
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
Diffstat (limited to 'newgrf_spritegroup.h')
-rw-r--r--newgrf_spritegroup.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/newgrf_spritegroup.h b/newgrf_spritegroup.h
index bd03f00a8..36680f451 100644
--- a/newgrf_spritegroup.h
+++ b/newgrf_spritegroup.h
@@ -154,4 +154,39 @@ struct SpriteGroup {
SpriteGroup *AllocateSpriteGroup(void);
void InitializeSpriteGroupPool(void);
+
+typedef struct ResolverObject {
+ byte callback;
+ uint32 callback_param1;
+ uint32 callback_param2;
+
+ byte trigger;
+ uint32 last_value;
+ uint32 reseed;
+ VarSpriteGroupScope scope;
+
+ union {
+ struct {
+ const struct Vehicle *self;
+ const struct Vehicle *parent;
+ } vehicle;
+ struct {
+ TileIndex tile;
+ const struct Station *st;
+ const struct StationSpec *statspec;
+ } station;
+ };
+
+ uint32 (*GetRandomBits)(const struct ResolverObject*);
+ uint32 (*GetTriggers)(const struct ResolverObject*);
+ void (*SetTriggers)(const struct ResolverObject*, int);
+ uint32 (*GetVariable)(const struct ResolverObject*, byte, byte);
+ uint32 (*ResolveReal)(const struct ResolverObject*, uint, uint, bool*);
+} ResolverObject;
+
+
+/* Base sprite group resolver */
+const SpriteGroup *Resolve(const SpriteGroup *group, ResolverObject *object);
+
+
#endif /* NEWGRF_SPRITEGROUP_H */