Codechange: Cache train curve speed limit can be stored in 16 bits.

Cache curve speed modifier and max curve speed are both 16 bit values so can be stored in 16 bit types instead of 32 bit types.

(cherry picked from commit 3fc7b3b9a0)
This commit is contained in:
Peter Nelson
2024-03-14 20:40:32 +00:00
committed by Jonathan G Rennison
parent a1b7ca979b
commit 64bc95722b
3 changed files with 14 additions and 15 deletions

View File

@@ -1268,7 +1268,6 @@ struct vehicle_venc {
struct train_venc {
VehicleID id;
GroundVehicleCache gvcache;
int cached_curve_speed_mod;
uint8_t cached_tflags;
uint8_t cached_num_engines;
uint16_t cached_centre_mass;
@@ -1277,7 +1276,8 @@ struct train_venc {
uint16_t cached_uncapped_decel;
uint8_t cached_deceleration;
byte user_def_data;
int cached_max_curve_speed;
int16_t cached_curve_speed_mod;
uint16_t cached_max_curve_speed;
};
struct roadvehicle_venc {
@@ -1340,7 +1340,6 @@ void Save_VENC()
for (Train *t : Train::Iterate()) {
SlWriteUint32(t->index);
write_gv_cache(t->gcache);
SlWriteUint32(t->tcache.cached_curve_speed_mod);
SlWriteByte(t->tcache.cached_tflags);
SlWriteByte(t->tcache.cached_num_engines);
SlWriteUint16(t->tcache.cached_centre_mass);
@@ -1349,7 +1348,8 @@ void Save_VENC()
SlWriteUint16(t->tcache.cached_uncapped_decel);
SlWriteByte(t->tcache.cached_deceleration);
SlWriteByte(t->tcache.user_def_data);
SlWriteUint32(t->tcache.cached_max_curve_speed);
SlWriteUint16((uint16_t)t->tcache.cached_curve_speed_mod);
SlWriteUint16(t->tcache.cached_max_curve_speed);
}
/* road vehicle */
@@ -1403,7 +1403,6 @@ void Load_VENC()
for (train_venc &venc : _train_vencs) {
venc.id = SlReadUint32();
read_gv_cache(venc.gvcache);
venc.cached_curve_speed_mod = SlReadUint32();
venc.cached_tflags = SlReadByte();
venc.cached_num_engines = SlReadByte();
venc.cached_centre_mass = SlReadUint16();
@@ -1412,7 +1411,8 @@ void Load_VENC()
venc.cached_uncapped_decel = SlReadUint16();
venc.cached_deceleration = SlReadByte();
venc.user_def_data = SlReadByte();
venc.cached_max_curve_speed = SlReadUint32();
venc.cached_curve_speed_mod = (int16_t)SlReadUint16();
venc.cached_max_curve_speed = SlReadUint16();
}
_roadvehicle_vencs.resize(SlReadUint32());