summaryrefslogtreecommitdiff
path: root/src/newgrf_canal.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2014-03-03 20:02:31 +0000
committerfrosch <frosch@openttd.org>2014-03-03 20:02:31 +0000
commit6b61c4608fab00c7bfc78c296b3c85f611681f59 (patch)
tree9919983ecf008602a497445b2b3e05b5c32892b8 /src/newgrf_canal.cpp
parentb935cb84156f18b51196288ff6d12f8ca5b26630 (diff)
downloadopenttd-6b61c4608fab00c7bfc78c296b3c85f611681f59.tar.xz
(svn r26388) -Codechange: Move resolving of Action 3 into ResolverObject constructor.
Diffstat (limited to 'src/newgrf_canal.cpp')
-rw-r--r--src/newgrf_canal.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/newgrf_canal.cpp b/src/newgrf_canal.cpp
index 7310186c0..8f81fd0d8 100644
--- a/src/newgrf_canal.cpp
+++ b/src/newgrf_canal.cpp
@@ -33,7 +33,7 @@ struct CanalScopeResolver : public ScopeResolver {
struct CanalResolverObject : public ResolverObject {
CanalScopeResolver canal_scope;
- CanalResolverObject(const GRFFile *grffile, TileIndex tile,
+ CanalResolverObject(CanalFeature feature, TileIndex tile,
CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0);
/* virtual */ ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0)
@@ -115,16 +115,17 @@ CanalScopeResolver::CanalScopeResolver(ResolverObject &ro, TileIndex tile) : Sco
/**
* Canal resolver constructor.
- * @param grffile Grf file.
+ * @param feature Which canal feature we want.
* @param tile Tile index of canal.
* @param callback Callback ID.
* @param callback_param1 First parameter (var 10) of the callback.
* @param callback_param2 Second parameter (var 18) of the callback.
*/
-CanalResolverObject::CanalResolverObject(const GRFFile *grffile, TileIndex tile,
+CanalResolverObject::CanalResolverObject(CanalFeature feature, TileIndex tile,
CallbackID callback, uint32 callback_param1, uint32 callback_param2)
- : ResolverObject(grffile, callback, callback_param1, callback_param2), canal_scope(*this, tile)
+ : ResolverObject(_water_feature[feature].grffile, callback, callback_param1, callback_param2), canal_scope(*this, tile)
{
+ this->root_spritegroup = _water_feature[feature].group;
}
/**
@@ -135,8 +136,8 @@ CanalResolverObject::CanalResolverObject(const GRFFile *grffile, TileIndex tile,
*/
SpriteID GetCanalSprite(CanalFeature feature, TileIndex tile)
{
- CanalResolverObject object(_water_feature[feature].grffile, tile);
- const SpriteGroup *group = SpriteGroup::Resolve(_water_feature[feature].group, object);
+ CanalResolverObject object(feature, tile);
+ const SpriteGroup *group = object.Resolve();
if (group == NULL) return 0;
return group->GetResult();
@@ -153,11 +154,8 @@ SpriteID GetCanalSprite(CanalFeature feature, TileIndex tile)
*/
static uint16 GetCanalCallback(CallbackID callback, uint32 param1, uint32 param2, CanalFeature feature, TileIndex tile)
{
- CanalResolverObject object(_water_feature[feature].grffile, tile, callback, param1, param2);
- const SpriteGroup *group = SpriteGroup::Resolve(_water_feature[feature].group, object);
- if (group == NULL) return CALLBACK_FAILED;
-
- return group->GetCallbackResult();
+ CanalResolverObject object(feature, tile, callback, param1, param2);
+ return object.ResolveCallback();
}
/**