mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-02 20:34:41 +00:00
(svn r17672) -Revert (r8081): 'last_value' and 'reseed' are shared between procedure and main chain.
-Fix (r8075): 'scope' and 'count' are not.
This commit is contained in:
parent
3863742c72
commit
2fa312aab9
@ -142,13 +142,16 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject *object) con
|
||||
/* Try to get the variable. We shall assume it is available, unless told otherwise. */
|
||||
bool available = true;
|
||||
if (adjust->variable == 0x7E) {
|
||||
ResolverObject subobject = *object;
|
||||
const SpriteGroup *subgroup = SpriteGroup::Resolve(adjust->subroutine, &subobject);
|
||||
const SpriteGroup *subgroup = SpriteGroup::Resolve(adjust->subroutine, object);
|
||||
if (subgroup == NULL) {
|
||||
value = CALLBACK_FAILED;
|
||||
} else {
|
||||
value = subgroup->GetCallbackResult();
|
||||
}
|
||||
|
||||
/* Reset values to current scope.
|
||||
* Note: 'last_value' and 'reseed' are shared between the main chain and the procedure */
|
||||
object->scope = this->var_scope;
|
||||
} else {
|
||||
value = GetVariable(object, adjust->variable, adjust->parameter, &available);
|
||||
}
|
||||
|
@ -291,14 +291,16 @@ struct ResolverObject {
|
||||
uint32 callback_param2;
|
||||
|
||||
byte trigger;
|
||||
byte count;
|
||||
uint32 last_value;
|
||||
uint32 reseed;
|
||||
VarSpriteGroupScope scope;
|
||||
|
||||
BaseStorageArray *psa; ///< The persistent storage array of this resolved object.
|
||||
uint32 last_value; ///< Result of most recent DeterministicSpriteGroup (including procedure calls)
|
||||
uint32 reseed; ///< Collects bits to rerandomise while triggering triggers.
|
||||
|
||||
const GRFFile *grffile; ///< GRFFile the resolved SpriteGroup belongs to
|
||||
VarSpriteGroupScope scope; ///< Scope of currently resolved DeterministicSpriteGroup resp. RandomizedSpriteGroup
|
||||
byte count; ///< Additional scope for RandomizedSpriteGroup
|
||||
|
||||
BaseStorageArray *psa; ///< The persistent storage array of this resolved object.
|
||||
|
||||
const GRFFile *grffile; ///< GRFFile the resolved SpriteGroup belongs to
|
||||
|
||||
union {
|
||||
struct {
|
||||
|
Loading…
Reference in New Issue
Block a user