# HG changeset patch # User frosch # Date 2018-03-11 13:17:44 # Node ID 42d63bfa05037f0513453cbd7c96d01996a06ff2 # Parent a6479056b79c1ca7994761b96409569570e643a7 (svn r27982) -Codechange: Reduce invocations of GetGlobalVariable. Speedup sprite resolving by about 3 percent. diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp --- a/src/newgrf_spritegroup.cpp +++ b/src/newgrf_spritegroup.cpp @@ -60,11 +60,7 @@ RandomizedSpriteGroup::~RandomizedSprite static inline uint32 GetVariable(const ResolverObject &object, ScopeResolver *scope, byte variable, uint32 parameter, bool *available) { - /* First handle variables common with Action7/9/D */ uint32 value; - if (GetGlobalVariable(variable, &value, object.grffile)) return value; - - /* Non-common variable */ switch (variable) { case 0x0C: return object.callback; case 0x10: return object.callback_param1; @@ -79,8 +75,11 @@ static inline uint32 GetVariable(const R if (object.grffile == NULL) return 0; return object.grffile->GetParam(parameter); - /* Not a common variable, so evaluate the feature specific variables */ - default: return scope->GetVariable(variable, parameter, available); + default: + /* First handle variables common with Action7/9/D */ + if (variable < 0x40 && GetGlobalVariable(variable, &value, object.grffile)) return value; + /* Not a common variable, so evaluate the feature specific variables */ + return scope->GetVariable(variable, parameter, available); } }