Add train cached_curve_speed_mod to VENC, cache checks and debug window
This commit is contained in:
@@ -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. */
|
||||
TrainCacheFlags cached_tflags;///< train cached flags
|
||||
int cached_curve_speed_mod; ///< curve speed modifier of the entire train
|
||||
TrainCacheFlags cached_tflags;///< train cached flags
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user