Dump infrastructure totals when mismatch detected in CheckCaches.
This commit is contained in:
@@ -43,6 +43,8 @@ struct CompanyInfrastructure {
|
||||
for (RailType rt = RAILTYPE_BEGIN; rt < RAILTYPE_END; rt++) total += this->rail[rt];
|
||||
return total;
|
||||
}
|
||||
|
||||
char *Dump(char *buffer, const char *last) const;
|
||||
};
|
||||
|
||||
typedef Pool<Company, CompanyID, 1, MAX_COMPANIES> CompanyPool;
|
||||
|
@@ -1166,3 +1166,18 @@ int CompanyServiceInterval(const Company *c, VehicleType type)
|
||||
case VEH_SHIP: return vds->servint_ships;
|
||||
}
|
||||
}
|
||||
|
||||
char *CompanyInfrastructure::Dump(char *buffer, const char *last) const
|
||||
{
|
||||
for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) {
|
||||
if (rail[rt]) buffer += seprintf(buffer, last, "Rail: %s: %u\n", GetStringPtr(GetRailTypeInfo(rt)->strings.name), rail[rt]);
|
||||
}
|
||||
buffer += seprintf(buffer, last, "Signal: %u\n", signal);
|
||||
buffer += seprintf(buffer, last, "Road: %u\n", road[ROADTYPE_ROAD]);
|
||||
buffer += seprintf(buffer, last, "Tram: %u\n", road[ROADTYPE_TRAM]);
|
||||
buffer += seprintf(buffer, last, "Water: %u\n", water);
|
||||
buffer += seprintf(buffer, last, "Station: %u\n", station);
|
||||
buffer += seprintf(buffer, last, "Airport: %u\n", airport);
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
@@ -1317,6 +1317,11 @@ void CheckCaches(bool force_check)
|
||||
FOR_ALL_COMPANIES(c) {
|
||||
if (MemCmpT(old_infrastructure.Get(i), &c->infrastructure) != 0) {
|
||||
DEBUG(desync, 0, "infrastructure cache mismatch: company %i", (int)c->index);
|
||||
char buffer[4096];
|
||||
old_infrastructure.Get(i)->Dump(buffer, lastof(buffer));
|
||||
DEBUG(desync, 0, "Previous:\n%s", buffer);
|
||||
c->infrastructure.Dump(buffer, lastof(buffer));
|
||||
DEBUG(desync, 0, "Recalculated:\n%s", buffer);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
Reference in New Issue
Block a user