(svn r26388) -Codechange: Move resolving of Action 3 into ResolverObject constructor.

This commit is contained in:
frosch
2014-03-03 20:02:31 +00:00
parent b0680afaa5
commit ce92faf682
17 changed files with 143 additions and 184 deletions

View File

@@ -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();
}
/**