diff options
author | frosch <frosch@openttd.org> | 2014-03-03 20:02:31 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2014-03-03 20:02:31 +0000 |
commit | 6b61c4608fab00c7bfc78c296b3c85f611681f59 (patch) | |
tree | 9919983ecf008602a497445b2b3e05b5c32892b8 /src/newgrf_canal.cpp | |
parent | b935cb84156f18b51196288ff6d12f8ca5b26630 (diff) | |
download | openttd-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.cpp | 20 |
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(); } /** |