(svn r17672) -Revert (r8081): 'last_value' and 'reseed' are shared between procedure and main chain.

-Fix (r8075): 'scope' and 'count' are not.
replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
frosch 15 years ago
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.
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
const GRFFile *grffile; ///< GRFFile the resolved SpriteGroup belongs to
union {
struct {

Loading…
Cancel
Save