mirror of https://github.com/OpenTTD/OpenTTD
(svn r9707) -Codechange: Add some support for NewGRF var 7D, temporary storage array.
parent
01ae38e3d7
commit
e5a314399a
|
@ -76,6 +76,8 @@ void InitializeSpriteGroupPool()
|
||||||
_spritegroup_count = 0;
|
_spritegroup_count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint32 _temp_store[0x110];
|
||||||
|
|
||||||
|
|
||||||
static inline uint32 GetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available)
|
static inline uint32 GetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available)
|
||||||
{
|
{
|
||||||
|
@ -96,6 +98,8 @@ static inline uint32 GetVariable(const ResolverObject *object, byte variable, by
|
||||||
case 0x1C: return object->last_value;
|
case 0x1C: return object->last_value;
|
||||||
case 0x20: return _opt.landscape == LT_ARCTIC ? GetSnowLine() : 0xFF;
|
case 0x20: return _opt.landscape == LT_ARCTIC ? GetSnowLine() : 0xFF;
|
||||||
|
|
||||||
|
case 0x7D: return _temp_store[parameter];
|
||||||
|
|
||||||
/* Not a common variable, so evalute the feature specific variables */
|
/* Not a common variable, so evalute the feature specific variables */
|
||||||
default: return object->GetVariable(object, variable, parameter, available);
|
default: return object->GetVariable(object, variable, parameter, available);
|
||||||
}
|
}
|
||||||
|
@ -133,6 +137,10 @@ static U EvalAdjustT(const DeterministicSpriteGroupAdjust *adjust, U last_value,
|
||||||
case DSGA_OP_AND: return last_value & value;
|
case DSGA_OP_AND: return last_value & value;
|
||||||
case DSGA_OP_OR: return last_value | value;
|
case DSGA_OP_OR: return last_value | value;
|
||||||
case DSGA_OP_XOR: return last_value ^ value;
|
case DSGA_OP_XOR: return last_value ^ value;
|
||||||
|
case DSGA_OP_STO:
|
||||||
|
if (value < lengthof(_temp_store)) _temp_store[value] = last_value;
|
||||||
|
return last_value;
|
||||||
|
case DSGA_OP_RST: return value;
|
||||||
default: return value;
|
default: return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,6 +60,8 @@ enum DeterministicSpriteGroupAdjustOperation {
|
||||||
DSGA_OP_AND, ///< a & b
|
DSGA_OP_AND, ///< a & b
|
||||||
DSGA_OP_OR, ///< a | b
|
DSGA_OP_OR, ///< a | b
|
||||||
DSGA_OP_XOR, ///< a ^ b
|
DSGA_OP_XOR, ///< a ^ b
|
||||||
|
DSGA_OP_STO, ///< store a into temporary storage, indexed by b. return a
|
||||||
|
DSGA_OP_RST, ///< return b
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue