VarAction2: Add quick exit case to last-level callback groups if possible

This commit is contained in:
Jonathan G Rennison
2022-08-21 18:41:13 +01:00
parent 35063b2176
commit 14de8c7f34
5 changed files with 85 additions and 8 deletions

View File

@@ -5539,10 +5539,8 @@ static void SkipAct1(ByteReader *buf)
grfmsg(3, "SkipAct1: Skipping %d sprites", _cur.skip_sprites);
}
static const CallbackResultSpriteGroup *NewCallbackResultSpriteGroup(uint16 groupid)
const CallbackResultSpriteGroup *NewCallbackResultSpriteGroupNoTransform(uint16 result)
{
uint16 result = CallbackResultSpriteGroup::TransformResultValue(groupid, _cur.grffile->grf_version >= 8);
const CallbackResultSpriteGroup *&ptr = _callback_result_cache[result];
if (ptr == nullptr) {
assert(CallbackResultSpriteGroup::CanAllocateItem());
@@ -5551,6 +5549,12 @@ static const CallbackResultSpriteGroup *NewCallbackResultSpriteGroup(uint16 grou
return ptr;
}
static const CallbackResultSpriteGroup *NewCallbackResultSpriteGroup(uint16 groupid)
{
uint16 result = CallbackResultSpriteGroup::TransformResultValue(groupid, _cur.grffile->grf_version >= 8);
return NewCallbackResultSpriteGroupNoTransform(result);
}
/* Helper function to either create a callback or link to a previously
* defined spritegroup. */
static const SpriteGroup *GetGroupFromGroupID(byte setid, byte type, uint16 groupid)