(svn r16394) -Codechange: move (NewGRF) cache variables into a separate struct so (some vehicle related) NewGRF cache 'desyncs' can be tested easier.

This commit is contained in:
rubidium
2009-05-23 09:10:56 +00:00
parent da5661a0c8
commit 6237fe1462
16 changed files with 71 additions and 53 deletions

View File

@@ -1119,8 +1119,11 @@ void StateGameLoop()
switch (v->type) {
case VEH_ROAD: {
extern byte GetRoadVehLength(const RoadVehicle *v);
if (GetRoadVehLength((RoadVehicle *)v) != ((RoadVehicle *)v)->cached_veh_length) {
RoadVehicle *rv = (RoadVehicle *)v;
RoadVehicleCache cache = rv->rcache;
RoadVehUpdateCache(rv);
if (memcmp(&cache, &rv->rcache, sizeof(RoadVehicleCache)) != 0) {
DEBUG(desync, 2, "cache mismatch: vehicle %i, company %i, unit number %i\n", v->index, (int)v->owner, v->unitnumber);
}
} break;
@@ -1149,9 +1152,10 @@ void StateGameLoop()
case VEH_AIRCRAFT: {
Aircraft *a = (Aircraft *)v;
uint speed = a->cached_max_speed;
AircraftCache cache = a->acache;
UpdateAircraftCache(a);
if (speed != a->cached_max_speed) {
if (memcmp(&cache, &a->acache, sizeof(AircraftCache)) != 0) {
DEBUG(desync, 2, "cache mismatch: vehicle %i, company %i, unit number %i\n", v->index, (int)v->owner, v->unitnumber);
}
} break;