Add train cached_curve_speed_mod to VENC, cache checks and debug window

pull/332/head
Jonathan G Rennison 3 years ago
parent 3ef1a0943b
commit 3cff5e53e4

@ -1636,8 +1636,9 @@ void CheckCaches(bool force_check, std::function<void(const char *)> log, CheckC
print_gv_cache_diff("train", gro_cache[length], Train::From(u)->gcache);
}
if (memcmp(&tra_cache[length], &Train::From(u)->tcache, sizeof(TrainCache)) != 0) {
CCLOGV("train cache mismatch: %c%c%c%c%c%c%c%c%c",
CCLOGV("train cache mismatch: %c%c%c%c%c%c%c%c%c%c",
tra_cache[length].cached_override != Train::From(u)->tcache.cached_override ? 'o' : '-',
tra_cache[length].cached_curve_speed_mod != Train::From(u)->tcache.cached_curve_speed_mod ? 'C' : '-',
tra_cache[length].cached_tflags != Train::From(u)->tcache.cached_tflags ? 'f' : '-',
tra_cache[length].cached_num_engines != Train::From(u)->tcache.cached_num_engines ? 'e' : '-',
tra_cache[length].cached_centre_mass != Train::From(u)->tcache.cached_centre_mass ? 'm' : '-',

@ -1132,6 +1132,7 @@ struct vehicle_venc {
struct train_venc {
VehicleID id;
GroundVehicleCache gvcache;
int cached_curve_speed_mod;
uint8 cached_tflags;
uint8 cached_num_engines;
uint16 cached_centre_mass;
@ -1200,6 +1201,7 @@ 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);
@ -1261,6 +1263,7 @@ 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();
@ -1348,6 +1351,7 @@ void SlProcessVENC()
Train *t = Train::GetIfValid(venc.id);
if (t == nullptr) continue;
check_gv_cache(t->gcache, venc.gvcache, t);
CheckVehicleVENCProp(t->tcache.cached_curve_speed_mod, venc.cached_curve_speed_mod, t, "cached_curve_speed_mod");
CheckVehicleVENCProp(t->tcache.cached_tflags, (TrainCacheFlags)venc.cached_tflags, t, "cached_tflags");
CheckVehicleVENCProp(t->tcache.cached_num_engines, venc.cached_num_engines, t, "cached_num_engines");
CheckVehicleVENCProp(t->tcache.cached_centre_mass, venc.cached_centre_mass, t, "cached_centre_mass");

@ -170,8 +170,8 @@ class NIHVehicle : public NIHelper {
}
if (v->type == VEH_TRAIN) {
const Train *t = Train::From(v);
seprintf(buffer, lastof(buffer), " T cache: tilt: %d, engines: %u",
(t->tcache.cached_tflags & TCF_TILT) ? 1 : 0, t->tcache.cached_num_engines);
seprintf(buffer, lastof(buffer), " T cache: tilt: %d, curve speed mod: %d, engines: %u",
(t->tcache.cached_tflags & TCF_TILT) ? 1 : 0, t->tcache.cached_curve_speed_mod, t->tcache.cached_num_engines);
print(buffer);
seprintf(buffer, lastof(buffer), " T cache: RL braking: %d, decel: %u, uncapped decel: %u, centre mass: %u",
(t->UsingRealisticBraking()) ? 1 : 0, t->tcache.cached_deceleration, t->tcache.cached_uncapped_decel, t->tcache.cached_centre_mass);

@ -110,8 +110,8 @@ struct TrainCache {
int cached_max_curve_speed; ///< max consist speed limited by curves
/* cached values, recalculated on load and each time a vehicle is added to/removed from the consist. */
int cached_curve_speed_mod; ///< curve speed modifier of the entire train
TrainCacheFlags cached_tflags;///< train cached flags
int cached_curve_speed_mod; ///< curve speed modifier of the entire train
uint8 cached_num_engines; ///< total number of engines, including rear ends of multiheaded engines
uint16 cached_centre_mass; ///< Cached position of the centre of mass, from the front
uint16 cached_veh_weight; ///< Cached individual vehicle weight

@ -419,6 +419,7 @@ void Train::ConsistChanged(ConsistChangeFlags allowed_changes)
u->tcache.cached_deceleration = 0;
u->tcache.cached_uncapped_decel = 0;
u->tcache.cached_tflags = TCF_NONE;
u->tcache.cached_curve_speed_mod = 0;
u->tcache.cached_max_curve_speed = 0;
}
}

Loading…
Cancel
Save