mirror of
https://github.com/OpenTTD/OpenTTD
synced 2026-01-20 10:52:41 +01:00
Codechange: Access temporary storage through ResolverObject during Resolve.
This commit is contained in:
@@ -325,7 +325,7 @@ static uint8_t MapAircraftMovementAction(const Aircraft *v)
|
||||
if (this->self_scope.v != nullptr && (relative != this->cached_relative_count || count == 0)) {
|
||||
/* Note: This caching only works as long as the VSG_SCOPE_RELATIVE cannot be used in
|
||||
* VarAct2 with procedure calls. */
|
||||
if (count == 0) count = GetRegister(0x100);
|
||||
if (count == 0) count = this->GetRegister(0x100);
|
||||
|
||||
const Vehicle *v = nullptr;
|
||||
switch (GB(relative, 6, 2)) {
|
||||
@@ -621,14 +621,14 @@ static uint32_t VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *objec
|
||||
if (object->ro.callback == CBID_NO_CALLBACK || object->ro.callback == CBID_RANDOM_TRIGGER || object->ro.callback == CBID_TRAIN_ALLOW_WAGON_ATTACH ||
|
||||
object->ro.callback == CBID_VEHICLE_START_STOP_CHECK || object->ro.callback == CBID_VEHICLE_32DAY_CALLBACK || object->ro.callback == CBID_VEHICLE_COLOUR_MAPPING ||
|
||||
object->ro.callback == CBID_VEHICLE_SPAWN_VISUAL_EFFECT) {
|
||||
Vehicle *u = v->Move(GetRegister(0x10F));
|
||||
Vehicle *u = v->Move(object->ro.GetRegister(0x10F));
|
||||
if (u == nullptr) return 0; // available, but zero
|
||||
|
||||
if (parameter == 0x5F) {
|
||||
/* This seems to be the only variable that makes sense to access via var 61, but is not handled by VehicleGetVariable */
|
||||
return (u->random_bits << 8) | u->waiting_random_triggers.base();
|
||||
} else {
|
||||
return VehicleGetVariable(u, object, parameter, GetRegister(0x10E), available);
|
||||
return VehicleGetVariable(u, object, parameter, object->ro.GetRegister(0x10E), available);
|
||||
}
|
||||
}
|
||||
/* Not available */
|
||||
@@ -1102,7 +1102,7 @@ static void GetCustomEngineSprite(EngineID engine, const Vehicle *v, Direction d
|
||||
object.ResetState();
|
||||
object.callback_param1 = image_type | (stack << 8);
|
||||
const auto *group = object.Resolve<ResultSpriteGroup>();
|
||||
int32_t reg100 = sprite_stack ? GetRegister(0x100) : 0;
|
||||
int32_t reg100 = sprite_stack ? object.GetRegister(0x100) : 0;
|
||||
if (group != nullptr && group->num_sprites != 0) {
|
||||
result->seq[result->count].sprite = group->sprite + (direction % group->num_sprites);
|
||||
result->seq[result->count].pal = GB(reg100, 0, 16); // zero means default recolouring
|
||||
@@ -1145,7 +1145,7 @@ static void GetRotorOverrideSprite(EngineID engine, const struct Aircraft *v, En
|
||||
object.ResetState();
|
||||
object.callback_param1 = image_type | (stack << 8);
|
||||
const auto *group = object.Resolve<ResultSpriteGroup>();
|
||||
int32_t reg100 = sprite_stack ? GetRegister(0x100) : 0;
|
||||
int32_t reg100 = sprite_stack ? object.GetRegister(0x100) : 0;
|
||||
if (group != nullptr && group->num_sprites != 0) {
|
||||
result->seq[result->count].sprite = group->sprite + (rotor_pos % group->num_sprites);
|
||||
result->seq[result->count].pal = GB(reg100, 0, 16); // zero means default recolouring
|
||||
|
||||
Reference in New Issue
Block a user