Merge: Codechange: Use null pointer literal instead of the NULL macro
This commit is contained in:
@@ -270,14 +270,14 @@ static void InitializeWindowsAndCaches()
|
||||
/* Identify owners of persistent storage arrays */
|
||||
Industry *i;
|
||||
FOR_ALL_INDUSTRIES(i) {
|
||||
if (i->psa != NULL) {
|
||||
if (i->psa != nullptr) {
|
||||
i->psa->feature = GSF_INDUSTRIES;
|
||||
i->psa->tile = i->location.tile;
|
||||
}
|
||||
}
|
||||
Station *s;
|
||||
FOR_ALL_STATIONS(s) {
|
||||
if (s->airport.psa != NULL) {
|
||||
if (s->airport.psa != nullptr) {
|
||||
s->airport.psa->feature = GSF_AIRPORTS;
|
||||
s->airport.psa->tile = s->airport.tile;
|
||||
}
|
||||
@@ -317,9 +317,9 @@ static struct sigaction _prev_fpe;
|
||||
static void CDECL HandleSavegameLoadCrash(int signum, siginfo_t *si, void *context);
|
||||
#else
|
||||
typedef void (CDECL *SignalHandlerPointer)(int);
|
||||
static SignalHandlerPointer _prev_segfault = NULL;
|
||||
static SignalHandlerPointer _prev_abort = NULL;
|
||||
static SignalHandlerPointer _prev_fpe = NULL;
|
||||
static SignalHandlerPointer _prev_segfault = nullptr;
|
||||
static SignalHandlerPointer _prev_abort = nullptr;
|
||||
static SignalHandlerPointer _prev_fpe = nullptr;
|
||||
|
||||
static void CDECL HandleSavegameLoadCrash(int signum);
|
||||
#endif
|
||||
@@ -352,9 +352,9 @@ static void SetSignalHandlers()
|
||||
static void ResetSignalHandlers()
|
||||
{
|
||||
#ifdef WITH_SIGACTION
|
||||
sigaction(SIGSEGV, &_prev_segfault, NULL);
|
||||
sigaction(SIGABRT, &_prev_abort, NULL);
|
||||
sigaction(SIGFPE, &_prev_fpe, NULL);
|
||||
sigaction(SIGSEGV, &_prev_segfault, nullptr);
|
||||
sigaction(SIGABRT, &_prev_abort, nullptr);
|
||||
sigaction(SIGFPE, &_prev_fpe, nullptr);
|
||||
#else
|
||||
signal(SIGSEGV, _prev_segfault);
|
||||
signal(SIGABRT, _prev_abort);
|
||||
@@ -411,7 +411,7 @@ static void CDECL HandleSavegameLoadCrash(int signum)
|
||||
char *p = buffer;
|
||||
p += seprintf(p, lastof(buffer), "Loading your savegame caused OpenTTD to crash.\n");
|
||||
|
||||
for (const GRFConfig *c = _grfconfig; !_saveload_crash_with_missing_newgrfs && c != NULL; c = c->next) {
|
||||
for (const GRFConfig *c = _grfconfig; !_saveload_crash_with_missing_newgrfs && c != nullptr; c = c->next) {
|
||||
_saveload_crash_with_missing_newgrfs = HasBit(c->flags, GCF_COMPATIBLE) || c->status == GCS_NOT_FOUND;
|
||||
}
|
||||
|
||||
@@ -429,7 +429,7 @@ static void CDECL HandleSavegameLoadCrash(int signum)
|
||||
"Please load the savegame with the appropriate NewGRFs installed.\n"
|
||||
"The missing/compatible NewGRFs are:\n");
|
||||
|
||||
for (const GRFConfig *c = _grfconfig; c != NULL; c = c->next) {
|
||||
for (const GRFConfig *c = _grfconfig; c != nullptr; c = c->next) {
|
||||
if (HasBit(c->flags, GCF_COMPATIBLE)) {
|
||||
const GRFIdentifier *replaced = GetOverriddenIdentifier(c);
|
||||
char buf[40];
|
||||
@@ -453,7 +453,7 @@ static void CDECL HandleSavegameLoadCrash(int signum)
|
||||
#ifdef WITH_SIGACTION
|
||||
struct sigaction call;
|
||||
#else
|
||||
SignalHandlerPointer call = NULL;
|
||||
SignalHandlerPointer call = nullptr;
|
||||
#endif
|
||||
switch (signum) {
|
||||
case SIGSEGV: call = _prev_segfault; break;
|
||||
@@ -463,12 +463,12 @@ static void CDECL HandleSavegameLoadCrash(int signum)
|
||||
}
|
||||
#ifdef WITH_SIGACTION
|
||||
if (call.sa_flags & SA_SIGINFO) {
|
||||
if (call.sa_sigaction != NULL) call.sa_sigaction(signum, si, context);
|
||||
if (call.sa_sigaction != nullptr) call.sa_sigaction(signum, si, context);
|
||||
} else {
|
||||
if (call.sa_handler != NULL) call.sa_handler(signum);
|
||||
if (call.sa_handler != nullptr) call.sa_handler(signum);
|
||||
}
|
||||
#else
|
||||
if (call != NULL) call(signum);
|
||||
if (call != nullptr) call(signum);
|
||||
#endif
|
||||
|
||||
}
|
||||
@@ -483,7 +483,7 @@ static void FixOwnerOfRailTrack(TileIndex t)
|
||||
assert(!Company::IsValidID(GetTileOwner(t)) && (IsLevelCrossingTile(t) || IsPlainRailTile(t)));
|
||||
|
||||
/* remove leftover rail piece from crossing (from very old savegames) */
|
||||
Train *v = NULL, *w;
|
||||
Train *v = nullptr, *w;
|
||||
FOR_ALL_TRAINS(w) {
|
||||
if (w->tile == t) {
|
||||
v = w;
|
||||
@@ -491,7 +491,7 @@ static void FixOwnerOfRailTrack(TileIndex t)
|
||||
}
|
||||
}
|
||||
|
||||
if (v != NULL) {
|
||||
if (v != nullptr) {
|
||||
/* when there is a train on crossing (it could happen in TTD), set owner of crossing to train owner */
|
||||
SetTileOwner(t, v->owner);
|
||||
return;
|
||||
@@ -709,22 +709,22 @@ bool AfterLoadGame()
|
||||
Company *c;
|
||||
FOR_ALL_COMPANIES(c) {
|
||||
c->name = CopyFromOldName(c->name_1);
|
||||
if (c->name != NULL) c->name_1 = STR_SV_UNNAMED;
|
||||
if (c->name != nullptr) c->name_1 = STR_SV_UNNAMED;
|
||||
c->president_name = CopyFromOldName(c->president_name_1);
|
||||
if (c->president_name != NULL) c->president_name_1 = SPECSTR_PRESIDENT_NAME;
|
||||
if (c->president_name != nullptr) c->president_name_1 = SPECSTR_PRESIDENT_NAME;
|
||||
}
|
||||
|
||||
Station *st;
|
||||
FOR_ALL_STATIONS(st) {
|
||||
st->name = CopyFromOldName(st->string_id);
|
||||
/* generating new name would be too much work for little effect, use the station name fallback */
|
||||
if (st->name != NULL) st->string_id = STR_SV_STNAME_FALLBACK;
|
||||
if (st->name != nullptr) st->string_id = STR_SV_STNAME_FALLBACK;
|
||||
}
|
||||
|
||||
Town *t;
|
||||
FOR_ALL_TOWNS(t) {
|
||||
t->name = CopyFromOldName(t->townnametype);
|
||||
if (t->name != NULL) t->townnametype = SPECSTR_TOWNNAME_START + _settings_game.game_creation.town_name;
|
||||
if (t->name != nullptr) t->townnametype = SPECSTR_TOWNNAME_START + _settings_game.game_creation.town_name;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -754,7 +754,7 @@ bool AfterLoadGame()
|
||||
|
||||
/* Check if all NewGRFs are present, we are very strict in MP mode */
|
||||
GRFListCompatibility gcf_res = IsGoodGRFConfigList(_grfconfig);
|
||||
for (GRFConfig *c = _grfconfig; c != NULL; c = c->next) {
|
||||
for (GRFConfig *c = _grfconfig; c != nullptr; c = c->next) {
|
||||
if (c->status == GCS_NOT_FOUND) {
|
||||
GamelogGRFRemove(c->ident.grfid);
|
||||
} else if (HasBit(c->flags, GCF_COMPATIBLE)) {
|
||||
@@ -904,7 +904,7 @@ bool AfterLoadGame()
|
||||
Aircraft *v;
|
||||
FOR_ALL_AIRCRAFT(v) {
|
||||
Station *st = GetTargetAirportIfValid(v);
|
||||
if (st != NULL && ((st->dock_station.tile != INVALID_TILE && IsOilRig(st->dock_station.tile)) || st->airport.type == AT_OILRIG)) {
|
||||
if (st != nullptr && ((st->dock_station.tile != INVALID_TILE && IsOilRig(st->dock_station.tile)) || st->airport.type == AT_OILRIG)) {
|
||||
/* aircraft is on approach to an oil rig, bail out now */
|
||||
SetSaveLoadError(STR_GAME_SAVELOAD_ERROR_HELI_OILRIG_BUG);
|
||||
/* Restore the signals */
|
||||
@@ -924,7 +924,7 @@ bool AfterLoadGame()
|
||||
{
|
||||
Company *c;
|
||||
FOR_ALL_COMPANIES(c) {
|
||||
if (c->is_ai && c->ai_instance == NULL) AI::StartNew(c->index);
|
||||
if (c->is_ai && c->ai_instance == nullptr) AI::StartNew(c->index);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1144,7 +1144,7 @@ bool AfterLoadGame()
|
||||
if (IsSavegameVersionBefore(SLV_16)) {
|
||||
Company *c;
|
||||
FOR_ALL_COMPANIES(c) {
|
||||
c->engine_renew_list = NULL;
|
||||
c->engine_renew_list = nullptr;
|
||||
c->settings.engine_renew = false;
|
||||
c->settings.engine_renew_months = 6;
|
||||
c->settings.engine_renew_money = 100000;
|
||||
@@ -1157,7 +1157,7 @@ bool AfterLoadGame()
|
||||
* companies are 'invalid'.
|
||||
*/
|
||||
c = Company::GetIfValid(COMPANY_FIRST);
|
||||
if (!_network_dedicated && c != NULL) {
|
||||
if (!_network_dedicated && c != nullptr) {
|
||||
c->settings = _settings_client.company;
|
||||
}
|
||||
}
|
||||
@@ -1261,7 +1261,7 @@ bool AfterLoadGame()
|
||||
}
|
||||
if (!IsRoadDepot(t) && !HasTownOwnedRoad(t)) {
|
||||
const Town *town = CalcClosestTownFromTile(t);
|
||||
if (town != NULL) SetTownIndex(t, town->index);
|
||||
if (town != nullptr) SetTownIndex(t, town->index);
|
||||
}
|
||||
_m[t].m4 = 0;
|
||||
break;
|
||||
@@ -1906,9 +1906,9 @@ bool AfterLoadGame()
|
||||
|
||||
Vehicle *v;
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
if (v->orders.list != NULL && v->orders.list->GetFirstOrder() != NULL && v->orders.list->GetFirstOrder()->IsType(OT_NOTHING)) {
|
||||
if (v->orders.list != nullptr && v->orders.list->GetFirstOrder() != nullptr && v->orders.list->GetFirstOrder()->IsType(OT_NOTHING)) {
|
||||
v->orders.list->FreeChain();
|
||||
v->orders.list = NULL;
|
||||
v->orders.list = nullptr;
|
||||
}
|
||||
|
||||
v->current_order.ConvertFromOldSavegame();
|
||||
@@ -2385,7 +2385,7 @@ bool AfterLoadGame()
|
||||
FOR_ALL_DISASTERVEHICLES(v) {
|
||||
if (v->subtype == 2 /* ST_SMALL_UFO */ && v->current_order.GetDestination() != 0) {
|
||||
const Vehicle *u = Vehicle::GetIfValid(v->dest_tile);
|
||||
if (u == NULL || u->type != VEH_ROAD || !RoadVehicle::From(u)->IsFrontEngine()) {
|
||||
if (u == nullptr || u->type != VEH_ROAD || !RoadVehicle::From(u)->IsFrontEngine()) {
|
||||
delete v;
|
||||
}
|
||||
}
|
||||
@@ -2404,7 +2404,7 @@ bool AfterLoadGame()
|
||||
* assert() in Pool::GetNew() happy by calling CanAllocateItem(). */
|
||||
assert_compile(CargoPaymentPool::MAX_SIZE == VehiclePool::MAX_SIZE);
|
||||
assert(CargoPayment::CanAllocateItem());
|
||||
if (v->cargo_payment == NULL) v->cargo_payment = new CargoPayment(v);
|
||||
if (v->cargo_payment == nullptr) v->cargo_payment = new CargoPayment(v);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2417,7 +2417,7 @@ bool AfterLoadGame()
|
||||
|
||||
for (auto tile = _animated_tiles.begin(); tile < _animated_tiles.end(); /* Nothing */) {
|
||||
/* Remove if tile is not animated */
|
||||
bool remove = _tile_type_procs[GetTileType(*tile)]->animate_tile_proc == NULL;
|
||||
bool remove = _tile_type_procs[GetTileType(*tile)]->animate_tile_proc == nullptr;
|
||||
|
||||
/* and remove if duplicate */
|
||||
for (auto j = _animated_tiles.begin(); !remove && j < tile; j++) {
|
||||
@@ -2489,7 +2489,7 @@ bool AfterLoadGame()
|
||||
/* Town -> Town */
|
||||
const Station *ss = Station::GetIfValid(s->src);
|
||||
const Station *sd = Station::GetIfValid(s->dst);
|
||||
if (ss != NULL && sd != NULL && ss->owner == sd->owner &&
|
||||
if (ss != nullptr && sd != nullptr && ss->owner == sd->owner &&
|
||||
Company::IsValidID(ss->owner)) {
|
||||
s->src_type = s->dst_type = ST_TOWN;
|
||||
s->src = ss->town->index;
|
||||
@@ -2670,13 +2670,13 @@ bool AfterLoadGame()
|
||||
FOR_ALL_AIRCRAFT(v) {
|
||||
if (!v->IsNormalAircraft()) continue;
|
||||
Station *st = GetTargetAirportIfValid(v);
|
||||
if (st == NULL && v->state != FLYING) {
|
||||
if (st == nullptr && v->state != FLYING) {
|
||||
v->state = FLYING;
|
||||
UpdateAircraftCache(v);
|
||||
AircraftNextAirportPos_and_Order(v);
|
||||
/* get aircraft back on running altitude */
|
||||
if ((v->vehstatus & VS_CRASHED) == 0) {
|
||||
GetAircraftFlightLevelBounds(v, &v->z_pos, NULL);
|
||||
GetAircraftFlightLevelBounds(v, &v->z_pos, nullptr);
|
||||
SetAircraftPosition(v, v->x_pos, v->y_pos, GetAircraftFlightLevel(v));
|
||||
}
|
||||
}
|
||||
@@ -2738,11 +2738,11 @@ bool AfterLoadGame()
|
||||
* order they have in the pool. */
|
||||
Waypoint *wp;
|
||||
FOR_ALL_WAYPOINTS(wp) {
|
||||
if (wp->name != NULL) wp->town_cn = UINT16_MAX;
|
||||
if (wp->name != nullptr) wp->town_cn = UINT16_MAX;
|
||||
}
|
||||
|
||||
FOR_ALL_WAYPOINTS(wp) {
|
||||
if (wp->name != NULL) MakeDefaultName(wp);
|
||||
if (wp->name != nullptr) MakeDefaultName(wp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2974,7 +2974,7 @@ bool AfterLoadGame()
|
||||
if (!IsSavegameVersionBefore(SLV_76)) {
|
||||
Industry *ind;
|
||||
FOR_ALL_INDUSTRIES(ind) {
|
||||
assert(ind->psa != NULL);
|
||||
assert(ind->psa != nullptr);
|
||||
|
||||
/* Check if the old storage was empty. */
|
||||
bool is_empty = true;
|
||||
@@ -2989,7 +2989,7 @@ bool AfterLoadGame()
|
||||
ind->psa->grfid = _industry_mngr.GetGRFID(ind->type);
|
||||
} else {
|
||||
delete ind->psa;
|
||||
ind->psa = NULL;
|
||||
ind->psa = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2998,7 +2998,7 @@ bool AfterLoadGame()
|
||||
Station *st;
|
||||
FOR_ALL_STATIONS(st) {
|
||||
if (!(st->facilities & FACIL_AIRPORT)) continue;
|
||||
assert(st->airport.psa != NULL);
|
||||
assert(st->airport.psa != nullptr);
|
||||
|
||||
/* Check if the old storage was empty. */
|
||||
bool is_empty = true;
|
||||
@@ -3013,7 +3013,7 @@ bool AfterLoadGame()
|
||||
st->airport.psa->grfid = _airport_mngr.GetGRFID(st->airport.type);
|
||||
} else {
|
||||
delete st->airport.psa;
|
||||
st->airport.psa = NULL;
|
||||
st->airport.psa = nullptr;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -3053,12 +3053,12 @@ bool AfterLoadGame()
|
||||
/* Set the default cargo requirement for town growth */
|
||||
switch (_settings_game.game_creation.landscape) {
|
||||
case LT_ARCTIC:
|
||||
if (FindFirstCargoWithTownEffect(TE_FOOD) != NULL) t->goal[TE_FOOD] = TOWN_GROWTH_WINTER;
|
||||
if (FindFirstCargoWithTownEffect(TE_FOOD) != nullptr) t->goal[TE_FOOD] = TOWN_GROWTH_WINTER;
|
||||
break;
|
||||
|
||||
case LT_TROPIC:
|
||||
if (FindFirstCargoWithTownEffect(TE_FOOD) != NULL) t->goal[TE_FOOD] = TOWN_GROWTH_DESERT;
|
||||
if (FindFirstCargoWithTownEffect(TE_WATER) != NULL) t->goal[TE_WATER] = TOWN_GROWTH_DESERT;
|
||||
if (FindFirstCargoWithTownEffect(TE_FOOD) != nullptr) t->goal[TE_FOOD] = TOWN_GROWTH_DESERT;
|
||||
if (FindFirstCargoWithTownEffect(TE_WATER) != nullptr) t->goal[TE_WATER] = TOWN_GROWTH_DESERT;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -3249,7 +3249,7 @@ bool AfterLoadGame()
|
||||
TileIndex prev_tile = v->tile;
|
||||
uint prev_tile_skip = 0;
|
||||
uint cur_skip = 0;
|
||||
for (RoadVehicle *u = v; u != NULL; u = u->Next()) {
|
||||
for (RoadVehicle *u = v; u != nullptr; u = u->Next()) {
|
||||
if (u->tile != prev_tile) {
|
||||
prev_tile_skip = cur_skip;
|
||||
prev_tile = u->tile;
|
||||
@@ -3283,7 +3283,7 @@ bool AfterLoadGame()
|
||||
}
|
||||
while (cur_skip > skip_frames[0]) {
|
||||
RoadVehicle *u = v;
|
||||
RoadVehicle *prev = NULL;
|
||||
RoadVehicle *prev = nullptr;
|
||||
for (uint sf : skip_frames) {
|
||||
extern bool IndividualRoadVehicleController(RoadVehicle *v, const RoadVehicle *prev);
|
||||
if (sf >= cur_skip) IndividualRoadVehicleController(u, prev);
|
||||
@@ -3559,7 +3559,7 @@ bool AfterLoadGame()
|
||||
} else {
|
||||
/* Link neutral station back to industry, as this is not saved. */
|
||||
Industry *ind;
|
||||
FOR_ALL_INDUSTRIES(ind) if (ind->neutral_station != NULL) ind->neutral_station->industry = ind;
|
||||
FOR_ALL_INDUSTRIES(ind) if (ind->neutral_station != nullptr) ind->neutral_station->industry = ind;
|
||||
}
|
||||
|
||||
if (IsSavegameVersionBefore(SLV_TREES_WATER_CLASS) && !SlXvIsFeaturePresent(XSLFI_CHUNNEL, 2)) {
|
||||
@@ -3643,7 +3643,7 @@ bool AfterLoadGame()
|
||||
Vehicle *v;
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
if (v->cargo_payment == nullptr) {
|
||||
for (Vehicle *u = v; u != NULL; u = u->Next()) {
|
||||
for (Vehicle *u = v; u != nullptr; u = u->Next()) {
|
||||
if (HasBit(v->vehicle_flags, VF_CARGO_UNLOADING)) ClrBit(v->vehicle_flags, VF_CARGO_UNLOADING);
|
||||
}
|
||||
}
|
||||
|
@@ -53,7 +53,7 @@ static void SaveReal_AIPL(int *index_ptr)
|
||||
_ai_saveload_settings[0] = '\0';
|
||||
config->SettingsToString(_ai_saveload_settings, lastof(_ai_saveload_settings));
|
||||
|
||||
SlObject(NULL, _ai_company);
|
||||
SlObject(nullptr, _ai_company);
|
||||
/* If the AI was active, store his data too */
|
||||
if (Company::IsValidAiID(index)) AI::Save(index);
|
||||
}
|
||||
@@ -62,7 +62,7 @@ static void Load_AIPL()
|
||||
{
|
||||
/* Free all current data */
|
||||
for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) {
|
||||
AIConfig::GetConfig(c, AIConfig::SSS_FORCE_GAME)->Change(NULL);
|
||||
AIConfig::GetConfig(c, AIConfig::SSS_FORCE_GAME)->Change(nullptr);
|
||||
}
|
||||
|
||||
CompanyID index;
|
||||
@@ -71,7 +71,7 @@ static void Load_AIPL()
|
||||
|
||||
_ai_saveload_is_random = 0;
|
||||
_ai_saveload_version = -1;
|
||||
SlObject(NULL, _ai_company);
|
||||
SlObject(nullptr, _ai_company);
|
||||
|
||||
if (_networking && !_network_server) {
|
||||
if (Company::IsValidAiID(index)) AIInstance::LoadEmpty();
|
||||
@@ -81,7 +81,7 @@ static void Load_AIPL()
|
||||
AIConfig *config = AIConfig::GetConfig(index, AIConfig::SSS_FORCE_GAME);
|
||||
if (StrEmpty(_ai_saveload_name)) {
|
||||
/* A random AI. */
|
||||
config->Change(NULL, -1, false, true);
|
||||
config->Change(nullptr, -1, false, true);
|
||||
} else {
|
||||
config->Change(_ai_saveload_name, _ai_saveload_version, false, _ai_saveload_is_random);
|
||||
if (!config->HasScript()) {
|
||||
@@ -125,5 +125,5 @@ static void Save_AIPL()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _ai_chunk_handlers[] = {
|
||||
{ 'AIPL', Save_AIPL, Load_AIPL, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'AIPL', Save_AIPL, Load_AIPL, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -37,6 +37,6 @@ static void Load_ATID()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _airport_chunk_handlers[] = {
|
||||
{ 'ATID', Save_ATID, Load_ATID, NULL, NULL, CH_ARRAY },
|
||||
{ 'APID', Save_APID, Load_APID, NULL, NULL, CH_ARRAY | CH_LAST },
|
||||
{ 'ATID', Save_ATID, Load_ATID, nullptr, nullptr, CH_ARRAY },
|
||||
{ 'APID', Save_APID, Load_APID, nullptr, nullptr, CH_ARRAY | CH_LAST },
|
||||
};
|
||||
|
@@ -58,5 +58,5 @@ static void Load_ANIT()
|
||||
* the animated tile table.
|
||||
*/
|
||||
extern const ChunkHandler _animated_tile_chunk_handlers[] = {
|
||||
{ 'ANIT', Save_ANIT, Load_ANIT, NULL, NULL, CH_RIFF | CH_LAST},
|
||||
{ 'ANIT', Save_ANIT, Load_ANIT, nullptr, nullptr, CH_RIFF | CH_LAST},
|
||||
};
|
||||
|
@@ -63,5 +63,5 @@ static void Ptrs_ERNW()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _autoreplace_chunk_handlers[] = {
|
||||
{ 'ERNW', Save_ERNW, Load_ERNW, Ptrs_ERNW, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'ERNW', Save_ERNW, Load_ERNW, Ptrs_ERNW, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -54,5 +54,5 @@ static void Save_XBSS()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _bridge_signal_chunk_handlers[] = {
|
||||
{ 'XBSS', Save_XBSS, Load_XBSS, NULL, NULL, CH_SPARSE_ARRAY | CH_LAST},
|
||||
{ 'XBSS', Save_XBSS, Load_XBSS, nullptr, nullptr, CH_SPARSE_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -121,6 +121,6 @@ static void LoadPickup()
|
||||
|
||||
/** Chunk definition of the cargomonitoring maps. */
|
||||
extern const ChunkHandler _cargomonitor_chunk_handlers[] = {
|
||||
{ 'CMDL', SaveDelivery, LoadDelivery, NULL, NULL, CH_ARRAY},
|
||||
{ 'CMPU', SavePickup, LoadPickup, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'CMDL', SaveDelivery, LoadDelivery, nullptr, nullptr, CH_ARRAY},
|
||||
{ 'CMPU', SavePickup, LoadPickup, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -176,6 +176,6 @@ void Load_CPDP()
|
||||
|
||||
/** Chunk handlers related to cargo packets. */
|
||||
extern const ChunkHandler _cargopacket_chunk_handlers[] = {
|
||||
{ 'CAPA', Save_CAPA, Load_CAPA, NULL, NULL, CH_ARRAY },
|
||||
{ 'CPDP', Save_CPDP, Load_CPDP, NULL, NULL, CH_RIFF | CH_LAST },
|
||||
{ 'CAPA', Save_CAPA, Load_CAPA, nullptr, nullptr, CH_ARRAY },
|
||||
{ 'CPDP', Save_CPDP, Load_CPDP, nullptr, nullptr, CH_RIFF | CH_LAST },
|
||||
};
|
||||
|
@@ -51,5 +51,5 @@ static void Load_CHTS()
|
||||
|
||||
/** Chunk handlers related to cheats. */
|
||||
extern const ChunkHandler _cheat_chunk_handlers[] = {
|
||||
{ 'CHTS', Save_CHTS, Load_CHTS, NULL, NULL, CH_RIFF | CH_LAST},
|
||||
{ 'CHTS', Save_CHTS, Load_CHTS, nullptr, nullptr, CH_RIFF | CH_LAST},
|
||||
};
|
||||
|
@@ -112,7 +112,7 @@ void AfterLoadCompanyStats()
|
||||
switch (GetTileType(tile)) {
|
||||
case MP_RAILWAY:
|
||||
c = Company::GetIfValid(GetTileOwner(tile));
|
||||
if (c != NULL) {
|
||||
if (c != nullptr) {
|
||||
uint pieces = 1;
|
||||
if (IsPlainRail(tile)) {
|
||||
TrackBits bits = GetTrackBits(tile);
|
||||
@@ -132,7 +132,7 @@ void AfterLoadCompanyStats()
|
||||
case MP_ROAD: {
|
||||
if (IsLevelCrossing(tile)) {
|
||||
c = Company::GetIfValid(GetTileOwner(tile));
|
||||
if (c != NULL) c->infrastructure.rail[GetRailType(tile)] += LEVELCROSSING_TRACKBIT_FACTOR;
|
||||
if (c != nullptr) c->infrastructure.rail[GetRailType(tile)] += LEVELCROSSING_TRACKBIT_FACTOR;
|
||||
}
|
||||
|
||||
/* Iterate all present road types as each can have a different owner. */
|
||||
@@ -140,19 +140,19 @@ void AfterLoadCompanyStats()
|
||||
FOR_EACH_SET_ROADTYPE(rt, GetRoadTypes(tile)) {
|
||||
c = Company::GetIfValid(IsRoadDepot(tile) ? GetTileOwner(tile) : GetRoadOwner(tile, rt));
|
||||
/* A level crossings and depots have two road bits. */
|
||||
if (c != NULL) c->infrastructure.road[rt] += IsNormalRoad(tile) ? CountBits(GetRoadBits(tile, rt)) : 2;
|
||||
if (c != nullptr) c->infrastructure.road[rt] += IsNormalRoad(tile) ? CountBits(GetRoadBits(tile, rt)) : 2;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case MP_STATION:
|
||||
c = Company::GetIfValid(GetTileOwner(tile));
|
||||
if (c != NULL && GetStationType(tile) != STATION_AIRPORT && !IsBuoy(tile)) c->infrastructure.station++;
|
||||
if (c != nullptr && GetStationType(tile) != STATION_AIRPORT && !IsBuoy(tile)) c->infrastructure.station++;
|
||||
|
||||
switch (GetStationType(tile)) {
|
||||
case STATION_RAIL:
|
||||
case STATION_WAYPOINT:
|
||||
if (c != NULL && !IsStationTileBlocked(tile)) c->infrastructure.rail[GetRailType(tile)]++;
|
||||
if (c != nullptr && !IsStationTileBlocked(tile)) c->infrastructure.rail[GetRailType(tile)]++;
|
||||
break;
|
||||
|
||||
case STATION_BUS:
|
||||
@@ -161,7 +161,7 @@ void AfterLoadCompanyStats()
|
||||
RoadType rt;
|
||||
FOR_EACH_SET_ROADTYPE(rt, GetRoadTypes(tile)) {
|
||||
c = Company::GetIfValid(GetRoadOwner(tile, rt));
|
||||
if (c != NULL) c->infrastructure.road[rt] += 2; // A road stop has two road bits.
|
||||
if (c != nullptr) c->infrastructure.road[rt] += 2; // A road stop has two road bits.
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -169,7 +169,7 @@ void AfterLoadCompanyStats()
|
||||
case STATION_DOCK:
|
||||
case STATION_BUOY:
|
||||
if (GetWaterClass(tile) == WATER_CLASS_CANAL) {
|
||||
if (c != NULL) c->infrastructure.water++;
|
||||
if (c != nullptr) c->infrastructure.water++;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -181,7 +181,7 @@ void AfterLoadCompanyStats()
|
||||
case MP_WATER:
|
||||
if (IsShipDepot(tile) || IsLock(tile)) {
|
||||
c = Company::GetIfValid(GetTileOwner(tile));
|
||||
if (c != NULL) {
|
||||
if (c != nullptr) {
|
||||
if (IsShipDepot(tile)) c->infrastructure.water += LOCK_DEPOT_TILE_FACTOR;
|
||||
if (IsLock(tile) && GetLockPart(tile) == LOCK_PART_MIDDLE) {
|
||||
/* The middle tile specifies the owner of the lock. */
|
||||
@@ -195,7 +195,7 @@ void AfterLoadCompanyStats()
|
||||
case MP_OBJECT:
|
||||
if (GetWaterClass(tile) == WATER_CLASS_CANAL) {
|
||||
c = Company::GetIfValid(GetTileOwner(tile));
|
||||
if (c != NULL) c->infrastructure.water++;
|
||||
if (c != nullptr) c->infrastructure.water++;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -219,7 +219,7 @@ void AfterLoadCompanyStats()
|
||||
|
||||
case TRANSPORT_WATER:
|
||||
c = Company::GetIfValid(GetTileOwner(tile));
|
||||
if (c != NULL) c->infrastructure.water += middle_len + (2 * TUNNELBRIDGE_TRACKBIT_FACTOR);
|
||||
if (c != nullptr) c->infrastructure.water += middle_len + (2 * TUNNELBRIDGE_TRACKBIT_FACTOR);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -417,7 +417,7 @@ static void SaveLoad_PLYR_common(Company *c, CompanyProperties *cprops)
|
||||
int i;
|
||||
|
||||
SlObject(cprops, _company_desc);
|
||||
if (c != NULL) {
|
||||
if (c != nullptr) {
|
||||
SlObject(c, _company_settings_desc);
|
||||
} else {
|
||||
char nothing;
|
||||
@@ -447,7 +447,7 @@ static void SaveLoad_PLYR_common(Company *c, CompanyProperties *cprops)
|
||||
/* Write each livery entry. */
|
||||
int num_liveries = IsSavegameVersionBefore(SLV_63) ? LS_END - 4 : (IsSavegameVersionBefore(SLV_85) ? LS_END - 2: LS_END);
|
||||
bool update_in_use = IsSavegameVersionBefore(SLV_GROUP_LIVERIES);
|
||||
if (c != NULL) {
|
||||
if (c != nullptr) {
|
||||
for (i = 0; i < num_liveries; i++) {
|
||||
SlObject(&c->livery[i], _company_livery_desc);
|
||||
if (update_in_use && i != LS_DEFAULT) {
|
||||
@@ -519,7 +519,7 @@ static void Check_PLYR()
|
||||
int index;
|
||||
while ((index = SlIterateArray()) != -1) {
|
||||
CompanyProperties *cprops = new CompanyProperties();
|
||||
SaveLoad_PLYR_common(NULL, cprops);
|
||||
SaveLoad_PLYR_common(nullptr, cprops);
|
||||
|
||||
/* We do not load old custom names */
|
||||
if (IsSavegameVersionBefore(SLV_84)) {
|
||||
@@ -532,7 +532,7 @@ static void Check_PLYR()
|
||||
}
|
||||
}
|
||||
|
||||
if (cprops->name == NULL && !IsInsideMM(cprops->name_1, SPECSTR_COMPANY_NAME_START, SPECSTR_COMPANY_NAME_LAST + 1) &&
|
||||
if (cprops->name == nullptr && !IsInsideMM(cprops->name_1, SPECSTR_COMPANY_NAME_START, SPECSTR_COMPANY_NAME_LAST + 1) &&
|
||||
cprops->name_1 != STR_GAME_SAVELOAD_NOT_AVAILABLE && cprops->name_1 != STR_SV_UNNAMED &&
|
||||
cprops->name_1 != SPECSTR_ANDCO_NAME && cprops->name_1 != SPECSTR_PRESIDENT_NAME &&
|
||||
cprops->name_1 != SPECSTR_SILLY_NAME) {
|
||||
@@ -571,5 +571,5 @@ static void Save_PLYX()
|
||||
|
||||
extern const ChunkHandler _company_chunk_handlers[] = {
|
||||
{ 'PLYR', Save_PLYR, Load_PLYR, Ptrs_PLYR, Check_PLYR, CH_ARRAY },
|
||||
{ 'PLYX', Save_PLYX, Load_PLYX, NULL, Check_PLYX, CH_RIFF | CH_LAST},
|
||||
{ 'PLYX', Save_PLYX, Load_PLYX, nullptr, Check_PLYX, CH_RIFF | CH_LAST},
|
||||
};
|
||||
|
@@ -65,5 +65,5 @@ static void Ptrs_DEPT()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _depot_chunk_handlers[] = {
|
||||
{ 'DEPT', Save_DEPT, Load_DEPT, Ptrs_DEPT, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'DEPT', Save_DEPT, Load_DEPT, Ptrs_DEPT, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -22,8 +22,8 @@ static void Load_PRIC()
|
||||
{
|
||||
/* Old games store 49 base prices, very old games store them as int32 */
|
||||
int vt = IsSavegameVersionBefore(SLV_65) ? SLE_FILE_I32 : SLE_FILE_I64;
|
||||
SlArray(NULL, 49, vt | SLE_VAR_NULL);
|
||||
SlArray(NULL, 49, SLE_FILE_U16 | SLE_VAR_NULL);
|
||||
SlArray(nullptr, 49, vt | SLE_VAR_NULL);
|
||||
SlArray(nullptr, 49, SLE_FILE_U16 | SLE_VAR_NULL);
|
||||
}
|
||||
|
||||
/** Cargo payment rates in pre 126 savegames */
|
||||
@@ -31,8 +31,8 @@ static void Load_CAPR()
|
||||
{
|
||||
uint num_cargo = IsSavegameVersionBefore(SLV_55) ? 12 : IsSavegameVersionBefore(SLV_EXTEND_CARGOTYPES) ? 32 : NUM_CARGO;
|
||||
int vt = IsSavegameVersionBefore(SLV_65) ? SLE_FILE_I32 : SLE_FILE_I64;
|
||||
SlArray(NULL, num_cargo, vt | SLE_VAR_NULL);
|
||||
SlArray(NULL, num_cargo, SLE_FILE_U16 | SLE_VAR_NULL);
|
||||
SlArray(nullptr, num_cargo, vt | SLE_VAR_NULL);
|
||||
SlArray(nullptr, num_cargo, SLE_FILE_U16 | SLE_VAR_NULL);
|
||||
}
|
||||
|
||||
static const SaveLoad _economy_desc[] = {
|
||||
@@ -101,8 +101,8 @@ static void Ptrs_CAPY()
|
||||
|
||||
|
||||
extern const ChunkHandler _economy_chunk_handlers[] = {
|
||||
{ 'CAPY', Save_CAPY, Load_CAPY, Ptrs_CAPY, NULL, CH_ARRAY},
|
||||
{ 'PRIC', NULL, Load_PRIC, NULL, NULL, CH_RIFF },
|
||||
{ 'CAPR', NULL, Load_CAPR, NULL, NULL, CH_RIFF },
|
||||
{ 'ECMY', Save_ECMY, Load_ECMY, NULL, NULL, CH_RIFF | CH_LAST},
|
||||
{ 'CAPY', Save_CAPY, Load_CAPY, Ptrs_CAPY, nullptr, CH_ARRAY},
|
||||
{ 'PRIC', nullptr, Load_PRIC, nullptr, nullptr, CH_RIFF },
|
||||
{ 'CAPR', nullptr, Load_CAPR, nullptr, nullptr, CH_RIFF },
|
||||
{ 'ECMY', Save_ECMY, Load_ECMY, nullptr, nullptr, CH_RIFF | CH_LAST},
|
||||
};
|
||||
|
@@ -68,7 +68,7 @@ static Engine* CallocEngine()
|
||||
*/
|
||||
static void FreeEngine(Engine *e)
|
||||
{
|
||||
if (e != NULL) {
|
||||
if (e != nullptr) {
|
||||
e->~Engine();
|
||||
free(e);
|
||||
}
|
||||
@@ -141,7 +141,7 @@ void CopyTempEngineData()
|
||||
e->preview_wait = se->preview_wait;
|
||||
e->company_avail = se->company_avail;
|
||||
e->company_hidden = se->company_hidden;
|
||||
if (se->name != NULL) e->name = stredup(se->name);
|
||||
if (se->name != nullptr) e->name = stredup(se->name);
|
||||
}
|
||||
|
||||
/* Get rid of temporary data */
|
||||
@@ -197,7 +197,7 @@ static void Load_EIDS()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _engine_chunk_handlers[] = {
|
||||
{ 'EIDS', Save_EIDS, Load_EIDS, NULL, NULL, CH_ARRAY },
|
||||
{ 'ENGN', Save_ENGN, Load_ENGN, NULL, NULL, CH_ARRAY },
|
||||
{ 'ENGS', NULL, Load_ENGS, NULL, NULL, CH_RIFF | CH_LAST },
|
||||
{ 'EIDS', Save_EIDS, Load_EIDS, nullptr, nullptr, CH_ARRAY },
|
||||
{ 'ENGN', Save_ENGN, Load_ENGN, nullptr, nullptr, CH_ARRAY },
|
||||
{ 'ENGS', nullptr, Load_ENGS, nullptr, nullptr, CH_RIFF | CH_LAST },
|
||||
};
|
||||
|
@@ -56,54 +56,54 @@ std::vector<uint32> _sl_xv_discardable_chunk_ids; ///< list of chunks
|
||||
static const uint32 _sl_xv_slxi_chunk_version = 0; ///< current version of SLXI chunk
|
||||
|
||||
const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = {
|
||||
{ XSLFI_TRACE_RESTRICT, XSCF_NULL, 10, 10, "tracerestrict", NULL, NULL, "TRRM,TRRP,TRRS" },
|
||||
{ XSLFI_TRACE_RESTRICT_OWNER, XSCF_NULL, 1, 1, "tracerestrict_owner", NULL, NULL, NULL },
|
||||
{ XSLFI_TRACE_RESTRICT_ORDRCND, XSCF_NULL, 3, 3, "tracerestrict_order_cond", NULL, NULL, NULL },
|
||||
{ XSLFI_TRACE_RESTRICT_STATUSCND,XSCF_NULL, 1, 1, "tracerestrict_status_cond", NULL, NULL, NULL },
|
||||
{ XSLFI_TRACE_RESTRICT_REVERSE, XSCF_NULL, 1, 1, "tracerestrict_reverse", NULL, NULL, NULL },
|
||||
{ XSLFI_PROG_SIGS, XSCF_NULL, 1, 1, "programmable_signals", NULL, NULL, "SPRG" },
|
||||
{ XSLFI_ADJACENT_CROSSINGS, XSCF_NULL, 1, 1, "adjacent_crossings", NULL, NULL, NULL },
|
||||
{ XSLFI_SAFER_CROSSINGS, XSCF_NULL, 1, 1, "safer_crossings", NULL, NULL, NULL },
|
||||
{ XSLFI_DEPARTURE_BOARDS, XSCF_IGNORABLE_UNKNOWN, 1, 1, "departure_boards", NULL, NULL, NULL },
|
||||
{ XSLFI_TIMETABLES_START_TICKS, XSCF_NULL, 2, 2, "timetable_start_ticks", NULL, NULL, NULL },
|
||||
{ XSLFI_TOWN_CARGO_ADJ, XSCF_IGNORABLE_UNKNOWN, 2, 2, "town_cargo_adj", NULL, NULL, NULL },
|
||||
{ XSLFI_SIG_TUNNEL_BRIDGE, XSCF_NULL, 7, 7, "signal_tunnel_bridge", NULL, NULL, "XBSS" },
|
||||
{ XSLFI_IMPROVED_BREAKDOWNS, XSCF_NULL, 6, 6, "improved_breakdowns", NULL, NULL, NULL },
|
||||
{ XSLFI_CONSIST_BREAKDOWN_FLAG, XSCF_NULL, 1, 1, "consist_breakdown_flag", NULL, NULL, NULL },
|
||||
{ XSLFI_TT_WAIT_IN_DEPOT, XSCF_NULL, 1, 1, "tt_wait_in_depot", NULL, NULL, NULL },
|
||||
{ XSLFI_AUTO_TIMETABLE, XSCF_NULL, 4, 4, "auto_timetables", NULL, NULL, NULL },
|
||||
{ XSLFI_VEHICLE_REPAIR_COST, XSCF_NULL, 2, 2, "vehicle_repair_cost", NULL, NULL, NULL },
|
||||
{ XSLFI_ENH_VIEWPORT_PLANS, XSCF_IGNORABLE_ALL, 3, 3, "enh_viewport_plans", NULL, NULL, "PLAN" },
|
||||
{ XSLFI_INFRA_SHARING, XSCF_NULL, 2, 2, "infra_sharing", NULL, NULL, "CPDP" },
|
||||
{ XSLFI_VARIABLE_DAY_LENGTH, XSCF_NULL, 2, 2, "variable_day_length", NULL, NULL, NULL },
|
||||
{ XSLFI_ORDER_OCCUPANCY, XSCF_NULL, 2, 2, "order_occupancy", NULL, NULL, NULL },
|
||||
{ XSLFI_MORE_COND_ORDERS, XSCF_NULL, 2, 2, "more_cond_orders", NULL, NULL, NULL },
|
||||
{ XSLFI_EXTRA_LARGE_MAP, XSCF_NULL, 0, 1, "extra_large_map", NULL, NULL, NULL },
|
||||
{ XSLFI_REVERSE_AT_WAYPOINT, XSCF_NULL, 1, 1, "reverse_at_waypoint", NULL, NULL, NULL },
|
||||
{ XSLFI_VEH_LIFETIME_PROFIT, XSCF_NULL, 1, 1, "veh_lifetime_profit", NULL, NULL, NULL },
|
||||
{ XSLFI_LINKGRAPH_DAY_SCALE, XSCF_NULL, 1, 1, "linkgraph_day_scale", NULL, NULL, NULL },
|
||||
{ XSLFI_TEMPLATE_REPLACEMENT, XSCF_NULL, 5, 5, "template_replacement", NULL, NULL, "TRPL,TMPL" },
|
||||
{ XSLFI_MORE_RAIL_TYPES, XSCF_NULL, 0, 1, "more_rail_types", NULL, NULL, NULL },
|
||||
{ XSLFI_CARGO_TYPE_ORDERS, XSCF_NULL, 3, 3, "cargo_type_orders", NULL, NULL, "ORDX,VEOX" },
|
||||
{ XSLFI_EXTENDED_GAMELOG, XSCF_NULL, 1, 1, "extended_gamelog", NULL, NULL, NULL },
|
||||
{ XSLFI_STATION_CATCHMENT_INC, XSCF_NULL, 1, 1, "station_catchment_inc", NULL, NULL, NULL },
|
||||
{ XSLFI_CUSTOM_BRIDGE_HEADS, XSCF_NULL, 2, 2, "custom_bridge_heads", NULL, NULL, NULL },
|
||||
{ XSLFI_CHUNNEL, XSCF_NULL, 2, 2, "chunnel", NULL, NULL, "TUNN" },
|
||||
{ XSLFI_SCHEDULED_DISPATCH, XSCF_NULL, 1, 1, "scheduled_dispatch", NULL, NULL, NULL },
|
||||
{ XSLFI_MORE_TOWN_GROWTH_RATES, XSCF_NULL, 1, 1, "more_town_growth_rates", NULL, NULL, NULL },
|
||||
{ XSLFI_MULTIPLE_DOCKS, XSCF_NULL, 1, 1, "multiple_docks", NULL, NULL, "DOCK" },
|
||||
{ XSLFI_TIMETABLE_EXTRA, XSCF_NULL, 6, 6, "timetable_extra", NULL, NULL, "ORDX" },
|
||||
{ XSLFI_TRAIN_FLAGS_EXTRA, XSCF_NULL, 1, 1, "train_flags_extra", NULL, NULL, NULL },
|
||||
{ XSLFI_TRAIN_THROUGH_LOAD, XSCF_NULL, 2, 2, "train_through_load", NULL, NULL, NULL },
|
||||
{ XSLFI_ORDER_EXTRA_DATA, XSCF_NULL, 1, 1, "order_extra_data", NULL, NULL, NULL },
|
||||
{ XSLFI_WHOLE_MAP_CHUNK, XSCF_NULL, 2, 2, "whole_map_chunk", NULL, NULL, "WMAP" },
|
||||
{ XSLFI_ST_LAST_VEH_TYPE, XSCF_NULL, 1, 1, "station_last_veh_type", NULL, NULL, NULL },
|
||||
{ XSLFI_SELL_AT_DEPOT_ORDER, XSCF_NULL, 1, 1, "sell_at_depot_order", NULL, NULL, NULL },
|
||||
{ XSLFI_BUY_LAND_RATE_LIMIT, XSCF_NULL, 1, 1, "buy_land_rate_limit", NULL, NULL, NULL },
|
||||
{ XSLFI_DUAL_RAIL_TYPES, XSCF_NULL, 1, 1, "dual_rail_types", NULL, NULL, NULL },
|
||||
{ XSLFI_CONSIST_SPEED_RD_FLAG, XSCF_NULL, 1, 1, "consist_speed_rd_flag", NULL, NULL, NULL },
|
||||
{ XSLFI_SAVEGAME_UNIQUE_ID, XSCF_IGNORABLE_ALL, 1, 1, "savegame_unique_id", NULL, NULL, NULL },
|
||||
{ XSLFI_NULL, XSCF_NULL, 0, 0, NULL, NULL, NULL, NULL },// This is the end marker
|
||||
{ XSLFI_TRACE_RESTRICT, XSCF_NULL, 10, 10, "tracerestrict", nullptr, nullptr, "TRRM,TRRP,TRRS" },
|
||||
{ XSLFI_TRACE_RESTRICT_OWNER, XSCF_NULL, 1, 1, "tracerestrict_owner", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_TRACE_RESTRICT_ORDRCND, XSCF_NULL, 3, 3, "tracerestrict_order_cond", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_TRACE_RESTRICT_STATUSCND,XSCF_NULL, 1, 1, "tracerestrict_status_cond", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_TRACE_RESTRICT_REVERSE, XSCF_NULL, 1, 1, "tracerestrict_reverse", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_PROG_SIGS, XSCF_NULL, 1, 1, "programmable_signals", nullptr, nullptr, "SPRG" },
|
||||
{ XSLFI_ADJACENT_CROSSINGS, XSCF_NULL, 1, 1, "adjacent_crossings", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_SAFER_CROSSINGS, XSCF_NULL, 1, 1, "safer_crossings", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_DEPARTURE_BOARDS, XSCF_IGNORABLE_UNKNOWN, 1, 1, "departure_boards", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_TIMETABLES_START_TICKS, XSCF_NULL, 2, 2, "timetable_start_ticks", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_TOWN_CARGO_ADJ, XSCF_IGNORABLE_UNKNOWN, 2, 2, "town_cargo_adj", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_SIG_TUNNEL_BRIDGE, XSCF_NULL, 7, 7, "signal_tunnel_bridge", nullptr, nullptr, "XBSS" },
|
||||
{ XSLFI_IMPROVED_BREAKDOWNS, XSCF_NULL, 6, 6, "improved_breakdowns", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_CONSIST_BREAKDOWN_FLAG, XSCF_NULL, 1, 1, "consist_breakdown_flag", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_TT_WAIT_IN_DEPOT, XSCF_NULL, 1, 1, "tt_wait_in_depot", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_AUTO_TIMETABLE, XSCF_NULL, 4, 4, "auto_timetables", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_VEHICLE_REPAIR_COST, XSCF_NULL, 2, 2, "vehicle_repair_cost", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_ENH_VIEWPORT_PLANS, XSCF_IGNORABLE_ALL, 3, 3, "enh_viewport_plans", nullptr, nullptr, "PLAN" },
|
||||
{ XSLFI_INFRA_SHARING, XSCF_NULL, 2, 2, "infra_sharing", nullptr, nullptr, "CPDP" },
|
||||
{ XSLFI_VARIABLE_DAY_LENGTH, XSCF_NULL, 2, 2, "variable_day_length", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_ORDER_OCCUPANCY, XSCF_NULL, 2, 2, "order_occupancy", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_MORE_COND_ORDERS, XSCF_NULL, 2, 2, "more_cond_orders", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_EXTRA_LARGE_MAP, XSCF_NULL, 0, 1, "extra_large_map", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_REVERSE_AT_WAYPOINT, XSCF_NULL, 1, 1, "reverse_at_waypoint", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_VEH_LIFETIME_PROFIT, XSCF_NULL, 1, 1, "veh_lifetime_profit", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_LINKGRAPH_DAY_SCALE, XSCF_NULL, 1, 1, "linkgraph_day_scale", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_TEMPLATE_REPLACEMENT, XSCF_NULL, 5, 5, "template_replacement", nullptr, nullptr, "TRPL,TMPL" },
|
||||
{ XSLFI_MORE_RAIL_TYPES, XSCF_NULL, 0, 1, "more_rail_types", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_CARGO_TYPE_ORDERS, XSCF_NULL, 3, 3, "cargo_type_orders", nullptr, nullptr, "ORDX,VEOX" },
|
||||
{ XSLFI_EXTENDED_GAMELOG, XSCF_NULL, 1, 1, "extended_gamelog", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_STATION_CATCHMENT_INC, XSCF_NULL, 1, 1, "station_catchment_inc", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_CUSTOM_BRIDGE_HEADS, XSCF_NULL, 2, 2, "custom_bridge_heads", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_CHUNNEL, XSCF_NULL, 2, 2, "chunnel", nullptr, nullptr, "TUNN" },
|
||||
{ XSLFI_SCHEDULED_DISPATCH, XSCF_NULL, 1, 1, "scheduled_dispatch", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_MORE_TOWN_GROWTH_RATES, XSCF_NULL, 1, 1, "more_town_growth_rates", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_MULTIPLE_DOCKS, XSCF_NULL, 1, 1, "multiple_docks", nullptr, nullptr, "DOCK" },
|
||||
{ XSLFI_TIMETABLE_EXTRA, XSCF_NULL, 6, 6, "timetable_extra", nullptr, nullptr, "ORDX" },
|
||||
{ XSLFI_TRAIN_FLAGS_EXTRA, XSCF_NULL, 1, 1, "train_flags_extra", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_TRAIN_THROUGH_LOAD, XSCF_NULL, 2, 2, "train_through_load", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_ORDER_EXTRA_DATA, XSCF_NULL, 1, 1, "order_extra_data", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_WHOLE_MAP_CHUNK, XSCF_NULL, 2, 2, "whole_map_chunk", nullptr, nullptr, "WMAP" },
|
||||
{ XSLFI_ST_LAST_VEH_TYPE, XSCF_NULL, 1, 1, "station_last_veh_type", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_SELL_AT_DEPOT_ORDER, XSCF_NULL, 1, 1, "sell_at_depot_order", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_BUY_LAND_RATE_LIMIT, XSCF_NULL, 1, 1, "buy_land_rate_limit", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_DUAL_RAIL_TYPES, XSCF_NULL, 1, 1, "dual_rail_types", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_CONSIST_SPEED_RD_FLAG, XSCF_NULL, 1, 1, "consist_speed_rd_flag", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_SAVEGAME_UNIQUE_ID, XSCF_IGNORABLE_ALL, 1, 1, "savegame_unique_id", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_NULL, XSCF_NULL, 0, 0, nullptr, nullptr, nullptr, nullptr },// This is the end marker
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -500,5 +500,5 @@ static void Load_SLXI()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _version_ext_chunk_handlers[] = {
|
||||
{ 'SLXI', Save_SLXI, Load_SLXI, NULL, Load_SLXI, CH_RIFF | CH_LAST},
|
||||
{ 'SLXI', Save_SLXI, Load_SLXI, nullptr, Load_SLXI, CH_RIFF | CH_LAST},
|
||||
};
|
||||
|
@@ -156,9 +156,9 @@ struct SlxiSubChunkInfo {
|
||||
uint16 save_version; ///< version to save
|
||||
uint16 max_version; ///< maximum version to accept on load
|
||||
const char *name; ///< feature name, this *IS* saved, so must be globally unique
|
||||
SlxiSubChunkSaveProc *save_proc; ///< save procedure of the sub chunk, this may be NULL in which case no extra chunk data is saved
|
||||
SlxiSubChunkLoadProc *load_proc; ///< load procedure of the sub chunk, this may be NULL in which case the extra chunk data must be missing or of 0 length
|
||||
const char *chunk_list; ///< this is a list of chunks that this feature uses, which should be written to the savegame, this must be a comma-seperated list of 4-character IDs, with no spaces, or NULL
|
||||
SlxiSubChunkSaveProc *save_proc; ///< save procedure of the sub chunk, this may be nullptr in which case no extra chunk data is saved
|
||||
SlxiSubChunkLoadProc *load_proc; ///< load procedure of the sub chunk, this may be nullptr in which case the extra chunk data must be missing or of 0 length
|
||||
const char *chunk_list; ///< this is a list of chunks that this feature uses, which should be written to the savegame, this must be a comma-seperated list of 4-character IDs, with no spaces, or nullptr
|
||||
};
|
||||
|
||||
void SlXvResetState();
|
||||
|
@@ -52,19 +52,19 @@ static void SaveReal_GSDT(int *index_ptr)
|
||||
_game_saveload_settings[0] = '\0';
|
||||
config->SettingsToString(_game_saveload_settings, lastof(_game_saveload_settings));
|
||||
|
||||
SlObject(NULL, _game_script);
|
||||
SlObject(nullptr, _game_script);
|
||||
Game::Save();
|
||||
}
|
||||
|
||||
static void Load_GSDT()
|
||||
{
|
||||
/* Free all current data */
|
||||
GameConfig::GetConfig(GameConfig::SSS_FORCE_GAME)->Change(NULL);
|
||||
GameConfig::GetConfig(GameConfig::SSS_FORCE_GAME)->Change(nullptr);
|
||||
|
||||
if ((CompanyID)SlIterateArray() == (CompanyID)-1) return;
|
||||
|
||||
_game_saveload_version = -1;
|
||||
SlObject(NULL, _game_script);
|
||||
SlObject(nullptr, _game_script);
|
||||
|
||||
if (_networking && !_network_server) {
|
||||
GameInstance::LoadEmpty();
|
||||
@@ -110,7 +110,7 @@ static void Load_GSDT()
|
||||
static void Save_GSDT()
|
||||
{
|
||||
SlSetArrayIndex(0);
|
||||
SlAutolength((AutolengthProc *)SaveReal_GSDT, NULL);
|
||||
SlAutolength((AutolengthProc *)SaveReal_GSDT, nullptr);
|
||||
}
|
||||
|
||||
extern GameStrings *_current_data;
|
||||
@@ -134,10 +134,10 @@ static void SaveReal_GSTR(const LanguageStrings *ls)
|
||||
_game_saveload_string = ls->language;
|
||||
_game_saveload_strings = (uint)ls->lines.size();
|
||||
|
||||
SlObject(NULL, _game_language_header);
|
||||
SlObject(nullptr, _game_language_header);
|
||||
for (const auto &i : ls->lines) {
|
||||
_game_saveload_string = i.c_str();
|
||||
SlObject(NULL, _game_language_string);
|
||||
SlObject(nullptr, _game_language_string);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,22 +147,22 @@ static void Load_GSTR()
|
||||
_current_data = new GameStrings();
|
||||
|
||||
while (SlIterateArray() != -1) {
|
||||
_game_saveload_string = NULL;
|
||||
SlObject(NULL, _game_language_header);
|
||||
_game_saveload_string = nullptr;
|
||||
SlObject(nullptr, _game_language_header);
|
||||
|
||||
std::unique_ptr<LanguageStrings> ls(new LanguageStrings(_game_saveload_string != NULL ? _game_saveload_string : ""));
|
||||
std::unique_ptr<LanguageStrings> ls(new LanguageStrings(_game_saveload_string != nullptr ? _game_saveload_string : ""));
|
||||
for (uint i = 0; i < _game_saveload_strings; i++) {
|
||||
SlObject(NULL, _game_language_string);
|
||||
ls->lines.emplace_back(_game_saveload_string != NULL ? _game_saveload_string : "");
|
||||
SlObject(nullptr, _game_language_string);
|
||||
ls->lines.emplace_back(_game_saveload_string != nullptr ? _game_saveload_string : "");
|
||||
}
|
||||
|
||||
_current_data->raw_strings.push_back(std::move(ls));
|
||||
}
|
||||
|
||||
/* If there were no strings in the savegame, set GameStrings to NULL */
|
||||
/* If there were no strings in the savegame, set GameStrings to nullptr */
|
||||
if (_current_data->raw_strings.size() == 0) {
|
||||
delete _current_data;
|
||||
_current_data = NULL;
|
||||
_current_data = nullptr;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ static void Load_GSTR()
|
||||
|
||||
static void Save_GSTR()
|
||||
{
|
||||
if (_current_data == NULL) return;
|
||||
if (_current_data == nullptr) return;
|
||||
|
||||
for (uint i = 0; i < _current_data->raw_strings.size(); i++) {
|
||||
SlSetArrayIndex(i);
|
||||
@@ -181,6 +181,6 @@ static void Save_GSTR()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _game_chunk_handlers[] = {
|
||||
{ 'GSTR', Save_GSTR, Load_GSTR, NULL, NULL, CH_ARRAY },
|
||||
{ 'GSDT', Save_GSDT, Load_GSDT, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'GSTR', Save_GSTR, Load_GSTR, nullptr, nullptr, CH_ARRAY },
|
||||
{ 'GSDT', Save_GSDT, Load_GSDT, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -109,7 +109,7 @@ assert_compile(lengthof(_glog_desc) == GLCT_END);
|
||||
|
||||
static void Load_GLOG_common(LoggedAction *&gamelog_action, uint &gamelog_actions)
|
||||
{
|
||||
assert(gamelog_action == NULL);
|
||||
assert(gamelog_action == nullptr);
|
||||
assert(gamelog_actions == 0);
|
||||
|
||||
GamelogActionType at;
|
||||
@@ -120,7 +120,7 @@ static void Load_GLOG_common(LoggedAction *&gamelog_action, uint &gamelog_action
|
||||
la->at = at;
|
||||
|
||||
SlObject(la, _glog_action_desc); // has to be saved after 'DATE'!
|
||||
la->change = NULL;
|
||||
la->change = nullptr;
|
||||
la->changes = 0;
|
||||
|
||||
GamelogChangeType ct;
|
||||
@@ -128,7 +128,7 @@ static void Load_GLOG_common(LoggedAction *&gamelog_action, uint &gamelog_action
|
||||
la->change = ReallocT(la->change, la->changes + 1);
|
||||
|
||||
LoggedChange *lc = &la->change[la->changes++];
|
||||
/* for SLE_STR, pointer has to be valid! so make it NULL */
|
||||
/* for SLE_STR, pointer has to be valid! so make it nullptr */
|
||||
memset(lc, 0, sizeof(*lc));
|
||||
lc->ct = ct;
|
||||
|
||||
@@ -185,5 +185,5 @@ static void Check_GLOG()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _gamelog_chunk_handlers[] = {
|
||||
{ 'GLOG', Save_GLOG, Load_GLOG, NULL, Check_GLOG, CH_RIFF | CH_LAST }
|
||||
{ 'GLOG', Save_GLOG, Load_GLOG, nullptr, Check_GLOG, CH_RIFF | CH_LAST }
|
||||
};
|
||||
|
@@ -45,5 +45,5 @@ static void Load_GOAL()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _goal_chunk_handlers[] = {
|
||||
{ 'GOAL', Save_GOAL, Load_GOAL, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'GOAL', Save_GOAL, Load_GOAL, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -61,5 +61,5 @@ static void Load_GRPS()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _group_chunk_handlers[] = {
|
||||
{ 'GRPS', Save_GRPS, Load_GRPS, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'GRPS', Save_GRPS, Load_GRPS, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -183,9 +183,9 @@ static void Load_ITBL()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _industry_chunk_handlers[] = {
|
||||
{ 'INDY', Save_INDY, Load_INDY, Ptrs_INDY, NULL, CH_ARRAY},
|
||||
{ 'IIDS', Save_IIDS, Load_IIDS, NULL, NULL, CH_ARRAY},
|
||||
{ 'TIDS', Save_TIDS, Load_TIDS, NULL, NULL, CH_ARRAY},
|
||||
{ 'IBLD', LoadSave_IBLD, LoadSave_IBLD, NULL, NULL, CH_RIFF},
|
||||
{ 'ITBL', Save_ITBL, Load_ITBL, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'INDY', Save_INDY, Load_INDY, Ptrs_INDY, nullptr, CH_ARRAY},
|
||||
{ 'IIDS', Save_IIDS, Load_IIDS, nullptr, nullptr, CH_ARRAY},
|
||||
{ 'TIDS', Save_TIDS, Load_TIDS, nullptr, nullptr, CH_ARRAY},
|
||||
{ 'IBLD', LoadSave_IBLD, LoadSave_IBLD, nullptr, nullptr, CH_RIFF},
|
||||
{ 'ITBL', Save_ITBL, Load_ITBL, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -128,6 +128,6 @@ static void Load_RAIL()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _labelmaps_chunk_handlers[] = {
|
||||
{ 'RAIL', Save_RAIL, Load_RAIL, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'RAIL', Save_RAIL, Load_RAIL, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
||||
|
@@ -71,7 +71,7 @@ const SaveLoad *GetLinkGraphJobDesc()
|
||||
int setting = 0;
|
||||
const SettingDesc *desc = GetSettingDescription(setting);
|
||||
while (desc->save.cmd != SL_END) {
|
||||
if (desc->desc.name != NULL && strncmp(desc->desc.name, prefix, prefixlen) == 0) {
|
||||
if (desc->desc.name != nullptr && strncmp(desc->desc.name, prefix, prefixlen) == 0) {
|
||||
SaveLoad sl = desc->save;
|
||||
char *&address = reinterpret_cast<char *&>(sl.address);
|
||||
address -= offset_gamesettings;
|
||||
@@ -301,7 +301,7 @@ static void Ptrs_LGRS()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _linkgraph_chunk_handlers[] = {
|
||||
{ 'LGRP', Save_LGRP, Load_LGRP, NULL, NULL, CH_ARRAY },
|
||||
{ 'LGRJ', Save_LGRJ, Load_LGRJ, NULL, NULL, CH_ARRAY },
|
||||
{ 'LGRS', Save_LGRS, Load_LGRS, Ptrs_LGRS, NULL, CH_LAST }
|
||||
{ 'LGRP', Save_LGRP, Load_LGRP, nullptr, nullptr, CH_ARRAY },
|
||||
{ 'LGRJ', Save_LGRJ, Load_LGRJ, nullptr, nullptr, CH_ARRAY },
|
||||
{ 'LGRS', Save_LGRS, Load_LGRS, Ptrs_LGRS, nullptr, CH_LAST }
|
||||
};
|
||||
|
@@ -267,16 +267,16 @@ static void Save_WMAP()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _map_chunk_handlers[] = {
|
||||
{ 'MAPS', Save_MAPS, Load_MAPS, NULL, Check_MAPS, CH_RIFF },
|
||||
{ 'MAPT', NULL, Load_MAPT, NULL, NULL, CH_RIFF },
|
||||
{ 'MAPH', NULL, Load_MAPH, NULL, NULL, CH_RIFF },
|
||||
{ 'MAPO', NULL, Load_MAP1, NULL, NULL, CH_RIFF },
|
||||
{ 'MAP2', NULL, Load_MAP2, NULL, NULL, CH_RIFF },
|
||||
{ 'M3LO', NULL, Load_MAP3, NULL, NULL, CH_RIFF },
|
||||
{ 'M3HI', NULL, Load_MAP4, NULL, NULL, CH_RIFF },
|
||||
{ 'MAP5', NULL, Load_MAP5, NULL, NULL, CH_RIFF },
|
||||
{ 'MAPE', NULL, Load_MAP6, NULL, NULL, CH_RIFF },
|
||||
{ 'MAP7', NULL, Load_MAP7, NULL, NULL, CH_RIFF },
|
||||
{ 'MAP8', NULL, Load_MAP8, NULL, NULL, CH_RIFF },
|
||||
{ 'WMAP', Save_WMAP, Load_WMAP, NULL, NULL, CH_RIFF | CH_LAST },
|
||||
{ 'MAPS', Save_MAPS, Load_MAPS, nullptr, Check_MAPS, CH_RIFF },
|
||||
{ 'MAPT', nullptr, Load_MAPT, nullptr, nullptr, CH_RIFF },
|
||||
{ 'MAPH', nullptr, Load_MAPH, nullptr, nullptr, CH_RIFF },
|
||||
{ 'MAPO', nullptr, Load_MAP1, nullptr, nullptr, CH_RIFF },
|
||||
{ 'MAP2', nullptr, Load_MAP2, nullptr, nullptr, CH_RIFF },
|
||||
{ 'M3LO', nullptr, Load_MAP3, nullptr, nullptr, CH_RIFF },
|
||||
{ 'M3HI', nullptr, Load_MAP4, nullptr, nullptr, CH_RIFF },
|
||||
{ 'MAP5', nullptr, Load_MAP5, nullptr, nullptr, CH_RIFF },
|
||||
{ 'MAPE', nullptr, Load_MAP6, nullptr, nullptr, CH_RIFF },
|
||||
{ 'MAP7', nullptr, Load_MAP7, nullptr, nullptr, CH_RIFF },
|
||||
{ 'MAP8', nullptr, Load_MAP8, nullptr, nullptr, CH_RIFF },
|
||||
{ 'WMAP', Save_WMAP, Load_WMAP, nullptr, nullptr, CH_RIFF | CH_LAST },
|
||||
};
|
||||
|
@@ -36,7 +36,7 @@ void SaveViewportBeforeSaveGame()
|
||||
{
|
||||
const Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
|
||||
|
||||
if (w != NULL) {
|
||||
if (w != nullptr) {
|
||||
_saved_scrollpos_x = w->viewport->scrollpos_x;
|
||||
_saved_scrollpos_y = w->viewport->scrollpos_y;
|
||||
_saved_scrollpos_zoom = w->viewport->zoom;
|
||||
@@ -154,6 +154,6 @@ static void SaveLoad_VIEW()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _misc_chunk_handlers[] = {
|
||||
{ 'DATE', SaveLoad_DATE, SaveLoad_DATE, NULL, Check_DATE, CH_RIFF},
|
||||
{ 'VIEW', SaveLoad_VIEW, SaveLoad_VIEW, NULL, NULL, CH_RIFF | CH_LAST},
|
||||
{ 'DATE', SaveLoad_DATE, SaveLoad_DATE, nullptr, Check_DATE, CH_RIFF},
|
||||
{ 'VIEW', SaveLoad_VIEW, SaveLoad_VIEW, nullptr, nullptr, CH_RIFF | CH_LAST},
|
||||
};
|
||||
|
@@ -73,7 +73,7 @@ static void Save_NGRF()
|
||||
{
|
||||
int index = 0;
|
||||
|
||||
for (GRFConfig *c = _grfconfig; c != NULL; c = c->next) {
|
||||
for (GRFConfig *c = _grfconfig; c != nullptr; c = c->next) {
|
||||
if (HasBit(c->flags, GCF_STATIC)) continue;
|
||||
SlSetArrayIndex(index++);
|
||||
SlObject(c, _grfconfig_desc);
|
||||
@@ -98,7 +98,7 @@ static void Load_NGRF()
|
||||
|
||||
if (_game_mode == GM_MENU) {
|
||||
/* Intro game must not have NewGRF. */
|
||||
if (_grfconfig != NULL) SlErrorCorrupt("The intro game must not use NewGRF");
|
||||
if (_grfconfig != nullptr) SlErrorCorrupt("The intro game must not use NewGRF");
|
||||
|
||||
/* Activate intro NewGRFs (townnames) */
|
||||
ResetGRFConfig(false);
|
||||
@@ -114,5 +114,5 @@ static void Check_NGRF()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _newgrf_chunk_handlers[] = {
|
||||
{ 'NGRF', Save_NGRF, Load_NGRF, NULL, Check_NGRF, CH_ARRAY | CH_LAST }
|
||||
{ 'NGRF', Save_NGRF, Load_NGRF, nullptr, Check_NGRF, CH_ARRAY | CH_LAST }
|
||||
};
|
||||
|
@@ -74,6 +74,6 @@ static void Load_OBID()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _object_chunk_handlers[] = {
|
||||
{ 'OBID', Save_OBID, Load_OBID, NULL, NULL, CH_ARRAY },
|
||||
{ 'OBJS', Save_OBJS, Load_OBJS, Ptrs_OBJS, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'OBID', Save_OBID, Load_OBID, nullptr, nullptr, CH_ARRAY },
|
||||
{ 'OBJS', Save_OBJS, Load_OBJS, Ptrs_OBJS, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -154,11 +154,11 @@ bool LoadChunk(LoadgameState *ls, void *base, const OldChunks *chunks)
|
||||
default: NOT_REACHED();
|
||||
}
|
||||
|
||||
/* When both pointers are NULL, we are just skipping data */
|
||||
if (base_ptr == NULL && chunk->ptr == NULL) continue;
|
||||
/* When both pointers are nullptr, we are just skipping data */
|
||||
if (base_ptr == nullptr && chunk->ptr == nullptr) continue;
|
||||
|
||||
/* Writing to the var: bits 8 to 15 have the VAR type */
|
||||
if (chunk->ptr == NULL) ptr = base_ptr + chunk->offset;
|
||||
if (chunk->ptr == nullptr) ptr = base_ptr + chunk->offset;
|
||||
|
||||
/* Write the data */
|
||||
switch (GetOldChunkVarType(chunk->type)) {
|
||||
@@ -174,7 +174,7 @@ bool LoadChunk(LoadgameState *ls, void *base, const OldChunks *chunks)
|
||||
}
|
||||
|
||||
/* Increase pointer base for arrays when looping */
|
||||
if (chunk->amount > 1 && chunk->ptr != NULL) ptr += CalcOldVarLen(chunk->type);
|
||||
if (chunk->amount > 1 && chunk->ptr != nullptr) ptr += CalcOldVarLen(chunk->type);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -259,7 +259,7 @@ static SavegameType DetermineOldSavegameType(FILE *f, char *title, const char *l
|
||||
}
|
||||
}
|
||||
|
||||
if (title != NULL) {
|
||||
if (title != nullptr) {
|
||||
switch (type) {
|
||||
case SGT_TTO: title = strecpy(title, "(TTO) ", last); break;
|
||||
case SGT_TTD: title = strecpy(title, "(TTD) ", last); break;
|
||||
@@ -284,14 +284,14 @@ bool LoadOldSaveGame(const char *file)
|
||||
/* Open file */
|
||||
ls.file = FioFOpenFile(file, "rb", NO_DIRECTORY);
|
||||
|
||||
if (ls.file == NULL) {
|
||||
if (ls.file == nullptr) {
|
||||
DEBUG(oldloader, 0, "Cannot open file '%s'", file);
|
||||
return false;
|
||||
}
|
||||
|
||||
SavegameType type = DetermineOldSavegameType(ls.file, NULL, NULL);
|
||||
SavegameType type = DetermineOldSavegameType(ls.file, nullptr, nullptr);
|
||||
|
||||
LoadOldMainProc *proc = NULL;
|
||||
LoadOldMainProc *proc = nullptr;
|
||||
|
||||
switch (type) {
|
||||
case SGT_TTO: proc = &LoadTTOMain; break;
|
||||
@@ -303,7 +303,7 @@ bool LoadOldSaveGame(const char *file)
|
||||
|
||||
bool game_loaded;
|
||||
try {
|
||||
game_loaded = proc != NULL && proc(&ls);
|
||||
game_loaded = proc != nullptr && proc(&ls);
|
||||
} catch (...) {
|
||||
game_loaded = false;
|
||||
}
|
||||
@@ -324,7 +324,7 @@ void GetOldSaveGameName(const char *file, char *title, const char *last)
|
||||
{
|
||||
FILE *f = FioFOpenFile(file, "rb", NO_DIRECTORY);
|
||||
|
||||
if (f == NULL) {
|
||||
if (f == nullptr) {
|
||||
*title = '\0';
|
||||
return;
|
||||
}
|
||||
|
@@ -90,7 +90,7 @@ struct OldChunks {
|
||||
uint32 amount; ///< Amount of fields
|
||||
|
||||
void *ptr; ///< Pointer where to save the data (may only be set if offset is 0)
|
||||
uint offset; ///< Offset from basepointer (may only be set if ptr is NULL)
|
||||
uint offset; ///< Offset from basepointer (may only be set if ptr is nullptr)
|
||||
OldChunkProc *proc; ///< Pointer to function that is called with OC_CHUNK
|
||||
};
|
||||
|
||||
@@ -125,12 +125,12 @@ static inline uint32 ReadUint32(LoadgameState *ls)
|
||||
* - OCL_CHUNK: load another proc to load a part of the savegame, 'amount' times
|
||||
* - OCL_ASSERT: to check if we are really at the place we expect to be.. because old savegames are too binary to be sure ;)
|
||||
*/
|
||||
#define OCL_SVAR(type, base, offset) { type, 1, NULL, (uint)cpp_offsetof(base, offset), NULL }
|
||||
#define OCL_VAR(type, amount, pointer) { type, amount, pointer, 0, NULL }
|
||||
#define OCL_END() { OC_END, 0, NULL, 0, NULL }
|
||||
#define OCL_CNULL(type, amount) { OC_NULL | type, amount, NULL, 0, NULL }
|
||||
#define OCL_CCHUNK(type, amount, proc) { OC_CHUNK | type, amount, NULL, 0, proc }
|
||||
#define OCL_ASSERT(type, size) { OC_ASSERT | type, 1, NULL, size, NULL }
|
||||
#define OCL_SVAR(type, base, offset) { type, 1, nullptr, (uint)cpp_offsetof(base, offset), nullptr }
|
||||
#define OCL_VAR(type, amount, pointer) { type, amount, pointer, 0, nullptr }
|
||||
#define OCL_END() { OC_END, 0, nullptr, 0, nullptr }
|
||||
#define OCL_CNULL(type, amount) { OC_NULL | type, amount, nullptr, 0, nullptr }
|
||||
#define OCL_CCHUNK(type, amount, proc) { OC_CHUNK | type, amount, nullptr, 0, proc }
|
||||
#define OCL_ASSERT(type, size) { OC_ASSERT | type, 1, nullptr, size, nullptr }
|
||||
#define OCL_NULL(amount) OCL_CNULL((OldChunkType)0, amount)
|
||||
#define OCL_CHUNK(amount, proc) OCL_CCHUNK((OldChunkType)0, amount, proc)
|
||||
|
||||
|
@@ -178,7 +178,7 @@ void FixOldVehicles()
|
||||
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
if ((size_t)v->next == 0xFFFF) {
|
||||
v->next = NULL;
|
||||
v->next = nullptr;
|
||||
} else {
|
||||
v->next = Vehicle::GetIfValid((size_t)v->next);
|
||||
}
|
||||
@@ -452,7 +452,7 @@ static bool FixTTOEngines()
|
||||
e->preview_company = INVALID_COMPANY;
|
||||
e->preview_asked = (CompanyMask)-1;
|
||||
e->preview_wait = 0;
|
||||
e->name = NULL;
|
||||
e->name = nullptr;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -621,7 +621,7 @@ static const OldChunks order_chunk[] = {
|
||||
|
||||
static bool LoadOldOrder(LoadgameState *ls, int num)
|
||||
{
|
||||
if (!LoadChunk(ls, NULL, order_chunk)) return false;
|
||||
if (!LoadChunk(ls, nullptr, order_chunk)) return false;
|
||||
|
||||
Order *o = new (num) Order();
|
||||
o->AssignOrder(UnpackOldOrder(_old_order));
|
||||
@@ -632,7 +632,7 @@ static bool LoadOldOrder(LoadgameState *ls, int num)
|
||||
/* Relink the orders to each other (in the orders for one vehicle are behind each other,
|
||||
* with an invalid order (OT_NOTHING) as indication that it is the last order */
|
||||
Order *prev = Order::GetIfValid(num - 1);
|
||||
if (prev != NULL) prev->next = o;
|
||||
if (prev != nullptr) prev->next = o;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -646,7 +646,7 @@ static bool LoadOldAnimTileList(LoadgameState *ls, int num)
|
||||
OCL_END ()
|
||||
};
|
||||
|
||||
if (!LoadChunk(ls, NULL, anim_chunk)) return false;
|
||||
if (!LoadChunk(ls, nullptr, anim_chunk)) return false;
|
||||
|
||||
/* The first zero in the loaded array indicates the end of the list. */
|
||||
for (int i = 0; i < 256; i++) {
|
||||
@@ -671,7 +671,7 @@ static bool LoadOldDepot(LoadgameState *ls, int num)
|
||||
if (d->xy != 0) {
|
||||
/* In some cases, there could be depots referencing invalid town. */
|
||||
Town *t = Town::GetIfValid(RemapTownIndex(_old_town_index));
|
||||
if (t == NULL) t = Town::GetRandom();
|
||||
if (t == nullptr) t = Town::GetRandom();
|
||||
d->town = t;
|
||||
} else {
|
||||
delete d;
|
||||
@@ -874,7 +874,7 @@ static bool LoadOldCompanyYearly(LoadgameState *ls, int num)
|
||||
if (_savegame_type == SGT_TTO && i == 6) {
|
||||
_old_yearly = 0; // property maintenance
|
||||
} else {
|
||||
if (!LoadChunk(ls, NULL, _company_yearly_chunk)) return false;
|
||||
if (!LoadChunk(ls, nullptr, _company_yearly_chunk)) return false;
|
||||
}
|
||||
|
||||
c->yearly_expenses[num][i] = _old_yearly;
|
||||
@@ -1104,8 +1104,8 @@ static bool LoadOldVehicleUnion(LoadgameState *ls, int num)
|
||||
uint temp = ls->total_read;
|
||||
bool res;
|
||||
|
||||
if (v == NULL) {
|
||||
res = LoadChunk(ls, NULL, vehicle_empty_chunk);
|
||||
if (v == nullptr) {
|
||||
res = LoadChunk(ls, nullptr, vehicle_empty_chunk);
|
||||
} else {
|
||||
switch (v->type) {
|
||||
default: SlErrorCorrupt("Invalid vehicle type");
|
||||
@@ -1238,7 +1238,7 @@ bool LoadOldVehicle(LoadgameState *ls, int num)
|
||||
uint type = ReadByte(ls);
|
||||
switch (type) {
|
||||
default: return false;
|
||||
case 0x00 /* VEH_INVALID */: v = NULL; break;
|
||||
case 0x00 /* VEH_INVALID */: v = nullptr; break;
|
||||
case 0x25 /* MONORAIL */:
|
||||
case 0x20 /* VEH_TRAIN */: v = new (_current_vehicle_id) Train(); break;
|
||||
case 0x21 /* VEH_ROAD */: v = new (_current_vehicle_id) RoadVehicle(); break;
|
||||
@@ -1249,7 +1249,7 @@ bool LoadOldVehicle(LoadgameState *ls, int num)
|
||||
}
|
||||
|
||||
if (!LoadChunk(ls, v, vehicle_chunk)) return false;
|
||||
if (v == NULL) continue;
|
||||
if (v == nullptr) continue;
|
||||
v->refit_cap = v->cargo_cap;
|
||||
|
||||
SpriteID sprite = v->sprite_seq.seq[0].sprite;
|
||||
@@ -1317,7 +1317,7 @@ bool LoadOldVehicle(LoadgameState *ls, int num)
|
||||
/* Read the vehicle type and allocate the right vehicle */
|
||||
switch (ReadByte(ls)) {
|
||||
default: SlErrorCorrupt("Invalid vehicle type");
|
||||
case 0x00 /* VEH_INVALID */: v = NULL; break;
|
||||
case 0x00 /* VEH_INVALID */: v = nullptr; break;
|
||||
case 0x10 /* VEH_TRAIN */: v = new (_current_vehicle_id) Train(); break;
|
||||
case 0x11 /* VEH_ROAD */: v = new (_current_vehicle_id) RoadVehicle(); break;
|
||||
case 0x12 /* VEH_SHIP */: v = new (_current_vehicle_id) Ship(); break;
|
||||
@@ -1327,7 +1327,7 @@ bool LoadOldVehicle(LoadgameState *ls, int num)
|
||||
}
|
||||
|
||||
if (!LoadChunk(ls, v, vehicle_chunk)) return false;
|
||||
if (v == NULL) continue;
|
||||
if (v == nullptr) continue;
|
||||
|
||||
_old_vehicle_names[_current_vehicle_id] = RemapOldStringID(_old_string_id);
|
||||
|
||||
@@ -1755,9 +1755,9 @@ bool LoadTTDMain(LoadgameState *ls)
|
||||
/* Load the biggest chunk */
|
||||
SmallStackSafeStackAlloc<byte, OLD_MAP_SIZE * 2> map3;
|
||||
_old_map3 = map3.data;
|
||||
_old_vehicle_names = NULL;
|
||||
_old_vehicle_names = nullptr;
|
||||
try {
|
||||
if (!LoadChunk(ls, NULL, main_chunk)) {
|
||||
if (!LoadChunk(ls, nullptr, main_chunk)) {
|
||||
DEBUG(oldloader, 0, "Loading failed");
|
||||
free(_old_vehicle_names);
|
||||
return false;
|
||||
@@ -1802,7 +1802,7 @@ bool LoadTTOMain(LoadgameState *ls)
|
||||
_old_vehicle_names = vehnames.data;
|
||||
|
||||
/* Load the biggest chunk */
|
||||
if (!LoadChunk(ls, NULL, main_chunk)) {
|
||||
if (!LoadChunk(ls, nullptr, main_chunk)) {
|
||||
DEBUG(oldloader, 0, "Loading failed");
|
||||
return false;
|
||||
}
|
||||
|
@@ -183,7 +183,7 @@ static void Load_ORDR()
|
||||
/* The orders were built like this:
|
||||
* While the order is valid, set the previous will get its next pointer set */
|
||||
Order *prev = Order::GetIfValid(order_index - 1);
|
||||
if (prev != NULL) prev->next = o;
|
||||
if (prev != nullptr) prev->next = o;
|
||||
}
|
||||
} else {
|
||||
int index;
|
||||
@@ -231,7 +231,7 @@ void Load_ORDX()
|
||||
int index;
|
||||
while ((index = SlIterateArray()) != -1) {
|
||||
Order *order = Order::GetIfValid(index);
|
||||
assert(order != NULL);
|
||||
assert(order != nullptr);
|
||||
order->AllocExtraInfo();
|
||||
SlObject(order->extra.get(), GetOrderExtraInfoDescription());
|
||||
}
|
||||
@@ -358,8 +358,8 @@ static void Ptrs_BKOR()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _order_chunk_handlers[] = {
|
||||
{ 'BKOR', Save_BKOR, Load_BKOR, Ptrs_BKOR, NULL, CH_ARRAY},
|
||||
{ 'ORDR', Save_ORDR, Load_ORDR, Ptrs_ORDR, NULL, CH_ARRAY},
|
||||
{ 'ORDL', Save_ORDL, Load_ORDL, Ptrs_ORDL, NULL, CH_ARRAY},
|
||||
{ 'ORDX', Save_ORDX, Load_ORDX, NULL, NULL, CH_SPARSE_ARRAY | CH_LAST},
|
||||
{ 'BKOR', Save_BKOR, Load_BKOR, Ptrs_BKOR, nullptr, CH_ARRAY},
|
||||
{ 'ORDR', Save_ORDR, Load_ORDR, Ptrs_ORDR, nullptr, CH_ARRAY},
|
||||
{ 'ORDL', Save_ORDL, Load_ORDL, Ptrs_ORDL, nullptr, CH_ARRAY},
|
||||
{ 'ORDX', Save_ORDX, Load_ORDX, nullptr, nullptr, CH_SPARSE_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -91,6 +91,6 @@ static void Load_PLANLINE()
|
||||
|
||||
/** Chunk handlers related to plans. */
|
||||
extern const ChunkHandler _plan_chunk_handlers[] = {
|
||||
{ 'PLAN', Save_PLAN, Load_PLAN, NULL, NULL, CH_ARRAY},
|
||||
{ 'PLLN', NULL, Load_PLANLINE, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'PLAN', Save_PLAN, Load_PLAN, nullptr, nullptr, CH_ARRAY},
|
||||
{ 'PLLN', nullptr, Load_PLANLINE, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -275,7 +275,7 @@ extern const ChunkHandler _template_vehicle_chunk_handlers[];
|
||||
extern const ChunkHandler _bridge_signal_chunk_handlers[];
|
||||
extern const ChunkHandler _tunnel_chunk_handlers[];
|
||||
|
||||
/** Array of all chunks in a savegame, \c NULL terminated. */
|
||||
/** Array of all chunks in a savegame, \c nullptr terminated. */
|
||||
static const ChunkHandler * const _chunk_handlers[] = {
|
||||
_version_ext_chunk_handlers, // this should be first, such that it is saved first, as when loading it affects the loading of subsequent chunks
|
||||
_gamelog_chunk_handlers,
|
||||
@@ -318,7 +318,7 @@ static const ChunkHandler * const _chunk_handlers[] = {
|
||||
_template_vehicle_chunk_handlers,
|
||||
_bridge_signal_chunk_handlers,
|
||||
_tunnel_chunk_handlers,
|
||||
NULL,
|
||||
nullptr,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -326,10 +326,10 @@ static const ChunkHandler * const _chunk_handlers[] = {
|
||||
* @param ch the chunk handler iterator
|
||||
*/
|
||||
#define FOR_ALL_CHUNK_HANDLERS(ch) \
|
||||
for (const ChunkHandler * const *chsc = _chunk_handlers; *chsc != NULL; chsc++) \
|
||||
for (const ChunkHandler *ch = *chsc; ch != NULL; ch = (ch->flags & CH_LAST) ? NULL : ch + 1)
|
||||
for (const ChunkHandler * const *chsc = _chunk_handlers; *chsc != nullptr; chsc++) \
|
||||
for (const ChunkHandler *ch = *chsc; ch != nullptr; ch = (ch->flags & CH_LAST) ? nullptr : ch + 1)
|
||||
|
||||
/** Null all pointers (convert index -> NULL) */
|
||||
/** Null all pointers (convert index -> nullptr) */
|
||||
static void SlNullPointers()
|
||||
{
|
||||
_sl.action = SLA_NULL;
|
||||
@@ -343,7 +343,7 @@ static void SlNullPointers()
|
||||
DEBUG(sl, 1, "Nulling pointers");
|
||||
|
||||
FOR_ALL_CHUNK_HANDLERS(ch) {
|
||||
if (ch->ptrs_proc != NULL) {
|
||||
if (ch->ptrs_proc != nullptr) {
|
||||
DEBUG(sl, 2, "Nulling pointers for %c%c%c%c", ch->id >> 24, ch->id >> 16, ch->id >> 8, ch->id);
|
||||
ch->ptrs_proc();
|
||||
}
|
||||
@@ -364,8 +364,8 @@ static void SlNullPointers()
|
||||
*/
|
||||
void NORETURN SlError(StringID string, const char *extra_msg, bool already_malloced)
|
||||
{
|
||||
char *str = NULL;
|
||||
if (extra_msg != NULL) {
|
||||
char *str = nullptr;
|
||||
if (extra_msg != nullptr) {
|
||||
str = already_malloced ? const_cast<char *>(extra_msg) : stredup(extra_msg);
|
||||
}
|
||||
|
||||
@@ -380,7 +380,7 @@ void NORETURN SlError(StringID string, const char *extra_msg, bool already_mallo
|
||||
_sl.extra_msg = str;
|
||||
}
|
||||
|
||||
/* We have to NULL all pointers here; we might be in a state where
|
||||
/* We have to nullptr all pointers here; we might be in a state where
|
||||
* the pointers are actually filled with indices, which means that
|
||||
* when we access them during cleaning the pool dereferences of
|
||||
* those indices will be made with segmentation faults as result. */
|
||||
@@ -439,7 +439,7 @@ static std::thread _save_thread; ///< The thread we'r
|
||||
static void SetAsyncSaveFinish(AsyncSaveFinishProc proc)
|
||||
{
|
||||
if (_exit_game) return;
|
||||
while (_async_save_finish.load(std::memory_order_acquire) != NULL) CSleep(10);
|
||||
while (_async_save_finish.load(std::memory_order_acquire) != nullptr) CSleep(10);
|
||||
|
||||
_async_save_finish.store(proc, std::memory_order_release);
|
||||
}
|
||||
@@ -449,8 +449,8 @@ static void SetAsyncSaveFinish(AsyncSaveFinishProc proc)
|
||||
*/
|
||||
void ProcessAsyncSaveFinish()
|
||||
{
|
||||
AsyncSaveFinishProc proc = _async_save_finish.exchange(NULL, std::memory_order_acq_rel);
|
||||
if (proc == NULL) return;
|
||||
AsyncSaveFinishProc proc = _async_save_finish.exchange(nullptr, std::memory_order_acq_rel);
|
||||
if (proc == nullptr) return;
|
||||
|
||||
proc();
|
||||
|
||||
@@ -939,7 +939,7 @@ static void SlSaveLoadConv(void *ptr, VarType conv)
|
||||
*/
|
||||
static inline size_t SlCalcNetStringLen(const char *ptr, size_t length)
|
||||
{
|
||||
if (ptr == NULL) return 0;
|
||||
if (ptr == nullptr) return 0;
|
||||
return min(strlen(ptr), length - 1);
|
||||
}
|
||||
|
||||
@@ -1036,7 +1036,7 @@ static void SlString(void *ptr, size_t length, VarType conv)
|
||||
case SLE_VAR_STRQ: // Malloc'd string, free previous incarnation, and allocate
|
||||
free(*(char **)ptr);
|
||||
if (len == 0) {
|
||||
*(char **)ptr = NULL;
|
||||
*(char **)ptr = nullptr;
|
||||
return;
|
||||
} else {
|
||||
*(char **)ptr = MallocT<char>(len + 1); // terminating '\0'
|
||||
@@ -1164,7 +1164,7 @@ void SlArray(void *array, size_t length, VarType conv)
|
||||
* Pointers cannot be saved to a savegame, so this functions gets
|
||||
* the index of the item, and if not available, it hussles with
|
||||
* pointers (looks really bad :()
|
||||
* Remember that a NULL item has value 0, and all
|
||||
* Remember that a nullptr item has value 0, and all
|
||||
* indices have +1, so vehicle 0 is saved as index 1.
|
||||
* @param obj The object that we want to get the index of
|
||||
* @param rt SLRefType type of the object the index is being sought of
|
||||
@@ -1174,7 +1174,7 @@ static size_t ReferenceToInt(const void *obj, SLRefType rt)
|
||||
{
|
||||
assert(_sl.action == SLA_SAVE);
|
||||
|
||||
if (obj == NULL) return 0;
|
||||
if (obj == nullptr) return 0;
|
||||
|
||||
switch (rt) {
|
||||
case REF_VEHICLE_OLD: // Old vehicles we save as new ones
|
||||
@@ -1199,7 +1199,7 @@ static size_t ReferenceToInt(const void *obj, SLRefType rt)
|
||||
* Pointers cannot be loaded from a savegame, so this function
|
||||
* gets the index from the savegame and returns the appropriate
|
||||
* pointer from the already loaded base.
|
||||
* Remember that an index of 0 is a NULL pointer so all indices
|
||||
* Remember that an index of 0 is a nullptr pointer so all indices
|
||||
* are +1 so vehicle 0 is saved as 1.
|
||||
* @param index The index that is being converted to a pointer
|
||||
* @param rt SLRefType type of the object the pointer is sought of
|
||||
@@ -1217,8 +1217,8 @@ static void *IntToReference(size_t index, SLRefType rt)
|
||||
rt = REF_VEHICLE;
|
||||
}
|
||||
|
||||
/* No need to look up NULL pointers, just return immediately */
|
||||
if (index == (rt == REF_VEHICLE_OLD ? 0xFFFF : 0)) return NULL;
|
||||
/* No need to look up nullptr pointers, just return immediately */
|
||||
if (index == (rt == REF_VEHICLE_OLD ? 0xFFFF : 0)) return nullptr;
|
||||
|
||||
/* Correct index. Old vehicles were saved differently:
|
||||
* invalid vehicle was 0xFFFF, now we use 0x0000 for everything invalid. */
|
||||
@@ -1232,7 +1232,7 @@ static void *IntToReference(size_t index, SLRefType rt)
|
||||
case REF_ORDER:
|
||||
if (Order::IsValidID(index)) return Order::Get(index);
|
||||
/* in old versions, invalid order was used to mark end of order list */
|
||||
if (IsSavegameVersionBefore(SLV_5, 2)) return NULL;
|
||||
if (IsSavegameVersionBefore(SLV_5, 2)) return nullptr;
|
||||
SlErrorCorrupt("Referencing invalid Order");
|
||||
|
||||
case REF_VEHICLE_OLD:
|
||||
@@ -1712,7 +1712,7 @@ bool SlObjectMember(void *ptr, const SaveLoad *sld)
|
||||
*(void **)ptr = IntToReference(*(size_t *)ptr, (SLRefType)conv);
|
||||
break;
|
||||
case SLA_NULL:
|
||||
*(void **)ptr = NULL;
|
||||
*(void **)ptr = nullptr;
|
||||
break;
|
||||
default: NOT_REACHED();
|
||||
}
|
||||
@@ -1791,7 +1791,7 @@ void SlObject(void *object, const SaveLoad *sld)
|
||||
*/
|
||||
void SlGlobList(const SaveLoadGlobVarList *sldg)
|
||||
{
|
||||
SlObject(NULL, (const SaveLoad*)sldg);
|
||||
SlObject(nullptr, (const SaveLoad*)sldg);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1884,8 +1884,8 @@ static void SlLoadChunk(const ChunkHandler *ch)
|
||||
|
||||
/**
|
||||
* Load a chunk of data for checking savegames.
|
||||
* If the chunkhandler is NULL, the chunk is skipped.
|
||||
* @param ch The chunkhandler that will be used for the operation, this may be NULL
|
||||
* If the chunkhandler is nullptr, the chunk is skipped.
|
||||
* @param ch The chunkhandler that will be used for the operation, this may be nullptr
|
||||
*/
|
||||
static void SlLoadCheckChunk(const ChunkHandler *ch)
|
||||
{
|
||||
@@ -1974,7 +1974,7 @@ static void SlSaveChunk(const ChunkHandler *ch)
|
||||
ChunkSaveLoadProc *proc = ch->save_proc;
|
||||
|
||||
/* Don't save any chunk information if there is no save handler. */
|
||||
if (proc == NULL) return;
|
||||
if (proc == nullptr) return;
|
||||
|
||||
SlWriteUint32(ch->id);
|
||||
DEBUG(sl, 2, "Saving chunk %c%c%c%c", ch->id >> 24, ch->id >> 16, ch->id >> 8, ch->id);
|
||||
@@ -2025,7 +2025,7 @@ static void SlSaveChunks()
|
||||
static const ChunkHandler *SlFindChunkHandler(uint32 id)
|
||||
{
|
||||
FOR_ALL_CHUNK_HANDLERS(ch) if (ch->id == id) return ch;
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/** Load all chunks */
|
||||
@@ -2040,10 +2040,10 @@ static void SlLoadChunks()
|
||||
if (_debug_sl_level >= 3) read = SlGetBytesRead();
|
||||
|
||||
ch = SlFindChunkHandler(id);
|
||||
if (ch == NULL) {
|
||||
if (ch == nullptr) {
|
||||
if (SlXvIsChunkDiscardable(id)) {
|
||||
DEBUG(sl, 1, "Discarding chunk %c%c%c%c", id >> 24, id >> 16, id >> 8, id);
|
||||
SlLoadCheckChunk(NULL);
|
||||
SlLoadCheckChunk(nullptr);
|
||||
} else {
|
||||
SlErrorCorrupt("Unknown chunk type");
|
||||
}
|
||||
@@ -2066,7 +2066,7 @@ static void SlLoadCheckChunks()
|
||||
if (_debug_sl_level >= 3) read = SlGetBytesRead();
|
||||
|
||||
ch = SlFindChunkHandler(id);
|
||||
if (ch == NULL && !SlXvIsChunkDiscardable(id)) SlErrorCorrupt("Unknown chunk type");
|
||||
if (ch == nullptr && !SlXvIsChunkDiscardable(id)) SlErrorCorrupt("Unknown chunk type");
|
||||
SlLoadCheckChunk(ch);
|
||||
DEBUG(sl, 3, "Loaded chunk %c%c%c%c (" PRINTF_SIZE " bytes)", id >> 24, id >> 16, id >> 8, id, SlGetBytesRead() - read);
|
||||
}
|
||||
@@ -2080,7 +2080,7 @@ static void SlFixPointers()
|
||||
DEBUG(sl, 1, "Fixing pointers");
|
||||
|
||||
FOR_ALL_CHUNK_HANDLERS(ch) {
|
||||
if (ch->ptrs_proc != NULL) {
|
||||
if (ch->ptrs_proc != nullptr) {
|
||||
DEBUG(sl, 2, "Fixing pointers for %c%c%c%c", ch->id >> 24, ch->id >> 16, ch->id >> 8, ch->id);
|
||||
ch->ptrs_proc();
|
||||
}
|
||||
@@ -2101,24 +2101,24 @@ struct FileReader : LoadFilter {
|
||||
* Create the file reader, so it reads from a specific file.
|
||||
* @param file The file to read from.
|
||||
*/
|
||||
FileReader(FILE *file) : LoadFilter(NULL), file(file), begin(ftell(file))
|
||||
FileReader(FILE *file) : LoadFilter(nullptr), file(file), begin(ftell(file))
|
||||
{
|
||||
}
|
||||
|
||||
/** Make sure everything is cleaned up. */
|
||||
~FileReader()
|
||||
{
|
||||
if (this->file != NULL) fclose(this->file);
|
||||
this->file = NULL;
|
||||
if (this->file != nullptr) fclose(this->file);
|
||||
this->file = nullptr;
|
||||
|
||||
/* Make sure we don't double free. */
|
||||
_sl.sf = NULL;
|
||||
_sl.sf = nullptr;
|
||||
}
|
||||
|
||||
size_t Read(byte *buf, size_t size) override
|
||||
{
|
||||
/* We're in the process of shutting down, i.e. in "failure" mode. */
|
||||
if (this->file == NULL) return 0;
|
||||
if (this->file == nullptr) return 0;
|
||||
|
||||
return fread(buf, 1, size, this->file);
|
||||
}
|
||||
@@ -2140,7 +2140,7 @@ struct FileWriter : SaveFilter {
|
||||
* Create the file writer, so it writes to a specific file.
|
||||
* @param file The file to write to.
|
||||
*/
|
||||
FileWriter(FILE *file) : SaveFilter(NULL), file(file)
|
||||
FileWriter(FILE *file) : SaveFilter(nullptr), file(file)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -2150,21 +2150,21 @@ struct FileWriter : SaveFilter {
|
||||
this->Finish();
|
||||
|
||||
/* Make sure we don't double free. */
|
||||
_sl.sf = NULL;
|
||||
_sl.sf = nullptr;
|
||||
}
|
||||
|
||||
void Write(byte *buf, size_t size) override
|
||||
{
|
||||
/* We're in the process of shutting down, i.e. in "failure" mode. */
|
||||
if (this->file == NULL) return;
|
||||
if (this->file == nullptr) return;
|
||||
|
||||
if (fwrite(buf, 1, size, this->file) != size) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE);
|
||||
}
|
||||
|
||||
void Finish() override
|
||||
{
|
||||
if (this->file != NULL) fclose(this->file);
|
||||
this->file = NULL;
|
||||
if (this->file != nullptr) fclose(this->file);
|
||||
this->file = nullptr;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2219,7 +2219,7 @@ struct LZOLoadFilter : LoadFilter {
|
||||
if (tmp[0] != lzo_adler32(0, out, size + sizeof(uint32))) SlErrorCorrupt("Bad checksum");
|
||||
|
||||
/* Decompress */
|
||||
int ret = lzo1x_decompress_safe(out + sizeof(uint32) * 1, size, buf, &len, NULL);
|
||||
int ret = lzo1x_decompress_safe(out + sizeof(uint32) * 1, size, buf, &len, nullptr);
|
||||
if (ret != LZO_E_OK) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE);
|
||||
return len;
|
||||
}
|
||||
@@ -2413,7 +2413,7 @@ struct ZlibSaveFilter : SaveFilter {
|
||||
|
||||
void Finish() override
|
||||
{
|
||||
this->WriteLoop(NULL, 0, Z_FINISH);
|
||||
this->WriteLoop(nullptr, 0, Z_FINISH);
|
||||
this->chain->Finish();
|
||||
}
|
||||
};
|
||||
@@ -2532,7 +2532,7 @@ struct LZMASaveFilter : SaveFilter {
|
||||
|
||||
void Finish() override
|
||||
{
|
||||
this->WriteLoop(NULL, 0, LZMA_FINISH);
|
||||
this->WriteLoop(nullptr, 0, LZMA_FINISH);
|
||||
this->chain->Finish();
|
||||
}
|
||||
};
|
||||
@@ -2562,7 +2562,7 @@ static const SaveLoadFormat _saveload_formats[] = {
|
||||
/* Roughly 75% larger than zlib level 6 at only ~7% of the CPU usage. */
|
||||
{"lzo", TO_BE32X('OTTD'), CreateLoadFilter<LZOLoadFilter>, CreateSaveFilter<LZOSaveFilter>, 0, 0, 0},
|
||||
#else
|
||||
{"lzo", TO_BE32X('OTTD'), NULL, NULL, 0, 0, 0},
|
||||
{"lzo", TO_BE32X('OTTD'), nullptr, nullptr, 0, 0, 0},
|
||||
#endif
|
||||
/* Roughly 5 times larger at only 1% of the CPU usage over zlib level 6. */
|
||||
{"none", TO_BE32X('OTTN'), CreateLoadFilter<NoCompLoadFilter>, CreateSaveFilter<NoCompSaveFilter>, 0, 0, 0},
|
||||
@@ -2572,7 +2572,7 @@ static const SaveLoadFormat _saveload_formats[] = {
|
||||
* 1 is "only" 3 times as fast. Level 0 results in uncompressed savegames at about 8 times the cost of "none". */
|
||||
{"zlib", TO_BE32X('OTTZ'), CreateLoadFilter<ZlibLoadFilter>, CreateSaveFilter<ZlibSaveFilter>, 0, 6, 9},
|
||||
#else
|
||||
{"zlib", TO_BE32X('OTTZ'), NULL, NULL, 0, 0, 0},
|
||||
{"zlib", TO_BE32X('OTTZ'), nullptr, nullptr, 0, 0, 0},
|
||||
#endif
|
||||
#if defined(WITH_LIBLZMA)
|
||||
/* Level 2 compression is speed wise as fast as zlib level 6 compression (old default), but results in ~10% smaller saves.
|
||||
@@ -2582,14 +2582,14 @@ static const SaveLoadFormat _saveload_formats[] = {
|
||||
* It's OTTX and not e.g. OTTL because liblzma is part of xz-utils and .tar.xz is preferred over .tar.lzma. */
|
||||
{"lzma", TO_BE32X('OTTX'), CreateLoadFilter<LZMALoadFilter>, CreateSaveFilter<LZMASaveFilter>, 0, 2, 9},
|
||||
#else
|
||||
{"lzma", TO_BE32X('OTTX'), NULL, NULL, 0, 0, 0},
|
||||
{"lzma", TO_BE32X('OTTX'), nullptr, nullptr, 0, 0, 0},
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
* Return the savegameformat of the game. Whether it was created with ZLIB compression
|
||||
* uncompressed, or another type
|
||||
* @param s Name of the savegame format. If NULL it picks the first available one
|
||||
* @param s Name of the savegame format. If nullptr it picks the first available one
|
||||
* @param compression_level Output for telling what compression level we want.
|
||||
* @return Pointer to SaveLoadFormat struct giving all characteristics of this type of savegame
|
||||
*/
|
||||
@@ -2603,12 +2603,12 @@ static const SaveLoadFormat *GetSavegameFormat(char *s, byte *compression_level)
|
||||
if (!StrEmpty(s)) {
|
||||
/* Get the ":..." of the compression level out of the way */
|
||||
char *complevel = strrchr(s, ':');
|
||||
if (complevel != NULL) *complevel = '\0';
|
||||
if (complevel != nullptr) *complevel = '\0';
|
||||
|
||||
for (const SaveLoadFormat *slf = &_saveload_formats[0]; slf != endof(_saveload_formats); slf++) {
|
||||
if (slf->init_write != NULL && strcmp(s, slf->name) == 0) {
|
||||
if (slf->init_write != nullptr && strcmp(s, slf->name) == 0) {
|
||||
*compression_level = slf->default_compression;
|
||||
if (complevel != NULL) {
|
||||
if (complevel != nullptr) {
|
||||
/* There is a compression level in the string.
|
||||
* First restore the : we removed to do proper name matching,
|
||||
* then move the the begin of the actual version. */
|
||||
@@ -2634,7 +2634,7 @@ static const SaveLoadFormat *GetSavegameFormat(char *s, byte *compression_level)
|
||||
ShowErrorMessage(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM, WL_CRITICAL);
|
||||
|
||||
/* Restore the string by adding the : back */
|
||||
if (complevel != NULL) *complevel = ':';
|
||||
if (complevel != nullptr) *complevel = ':';
|
||||
}
|
||||
*compression_level = def->default_compression;
|
||||
return def;
|
||||
@@ -2651,16 +2651,16 @@ extern bool LoadOldSaveGame(const char *file);
|
||||
static inline void ClearSaveLoadState()
|
||||
{
|
||||
delete _sl.dumper;
|
||||
_sl.dumper = NULL;
|
||||
_sl.dumper = nullptr;
|
||||
|
||||
delete _sl.sf;
|
||||
_sl.sf = NULL;
|
||||
_sl.sf = nullptr;
|
||||
|
||||
delete _sl.reader;
|
||||
_sl.reader = NULL;
|
||||
_sl.reader = nullptr;
|
||||
|
||||
delete _sl.lf;
|
||||
_sl.lf = NULL;
|
||||
_sl.lf = nullptr;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2891,7 +2891,7 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check)
|
||||
}
|
||||
|
||||
/* loader for this savegame type is not implemented? */
|
||||
if (fmt->init_load == NULL) {
|
||||
if (fmt->init_load == nullptr) {
|
||||
char err_str[64];
|
||||
seprintf(err_str, lastof(err_str), "Loader for '%s' is not available.", fmt->name);
|
||||
SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, err_str);
|
||||
@@ -3049,11 +3049,11 @@ SaveOrLoadResult SaveOrLoad(const char *filename, SaveLoadOperation fop, Detaile
|
||||
FILE *fh = (fop == SLO_SAVE) ? FioFOpenFile(filename, "wb", sb) : FioFOpenFile(filename, "rb", sb);
|
||||
|
||||
/* Make it a little easier to load savegames from the console */
|
||||
if (fh == NULL && fop != SLO_SAVE) fh = FioFOpenFile(filename, "rb", SAVE_DIR);
|
||||
if (fh == NULL && fop != SLO_SAVE) fh = FioFOpenFile(filename, "rb", BASE_DIR);
|
||||
if (fh == NULL && fop != SLO_SAVE) fh = FioFOpenFile(filename, "rb", SCENARIO_DIR);
|
||||
if (fh == nullptr && fop != SLO_SAVE) fh = FioFOpenFile(filename, "rb", SAVE_DIR);
|
||||
if (fh == nullptr && fop != SLO_SAVE) fh = FioFOpenFile(filename, "rb", BASE_DIR);
|
||||
if (fh == nullptr && fop != SLO_SAVE) fh = FioFOpenFile(filename, "rb", SCENARIO_DIR);
|
||||
|
||||
if (fh == NULL) {
|
||||
if (fh == nullptr) {
|
||||
SlError(fop == SLO_SAVE ? STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE : STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE);
|
||||
}
|
||||
|
||||
|
@@ -747,11 +747,11 @@ typedef SaveLoad SaveLoadGlobVarList;
|
||||
/** Translate values ingame to different values in the savegame and vv. */
|
||||
#define SLE_WRITEBYTE(base, variable) SLE_GENERAL(SL_WRITEBYTE, base, variable, 0, 0, SL_MIN_VERSION, SL_MAX_VERSION)
|
||||
|
||||
#define SLE_VEH_INCLUDE() {false, SL_VEH_INCLUDE, 0, 0, SL_MIN_VERSION, SL_MAX_VERSION, NULL, 0, SlXvFeatureTest()}
|
||||
#define SLE_ST_INCLUDE() {false, SL_ST_INCLUDE, 0, 0, SL_MIN_VERSION, SL_MAX_VERSION, NULL, 0, SlXvFeatureTest()}
|
||||
#define SLE_VEH_INCLUDE() {false, SL_VEH_INCLUDE, 0, 0, SL_MIN_VERSION, SL_MAX_VERSION, nullptr, 0, SlXvFeatureTest()}
|
||||
#define SLE_ST_INCLUDE() {false, SL_ST_INCLUDE, 0, 0, SL_MIN_VERSION, SL_MAX_VERSION, nullptr, 0, SlXvFeatureTest()}
|
||||
|
||||
/** End marker of a struct/class save or load. */
|
||||
#define SLE_END() {false, SL_END, 0, 0, SL_MIN_VERSION, SL_MIN_VERSION, NULL, 0, SlXvFeatureTest()}
|
||||
#define SLE_END() {false, SL_END, 0, 0, SL_MIN_VERSION, SL_MIN_VERSION, nullptr, 0, SlXvFeatureTest()}
|
||||
|
||||
/**
|
||||
* Storage of global simple variables, references (pointers), and arrays.
|
||||
@@ -901,10 +901,10 @@ typedef SaveLoad SaveLoadGlobVarList;
|
||||
* @param to Last savegame version that has the empty space.
|
||||
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have empty space
|
||||
*/
|
||||
#define SLEG_CONDNULL(length, from, to) {true, SL_ARR, SLE_FILE_U8 | SLE_VAR_NULL | SLF_NOT_IN_CONFIG, length, from, to, (void*)NULL, SlXvFeatureTest()}
|
||||
#define SLEG_CONDNULL(length, from, to) {true, SL_ARR, SLE_FILE_U8 | SLE_VAR_NULL | SLF_NOT_IN_CONFIG, length, from, to, (void*)nullptr, SlXvFeatureTest()}
|
||||
|
||||
/** End marker of global variables save or load. */
|
||||
#define SLEG_END() {true, SL_END, 0, 0, SL_MIN_VERSION, SL_MIN_VERSION, NULL, 0, SlXvFeatureTest()}
|
||||
#define SLEG_END() {true, SL_END, 0, 0, SL_MIN_VERSION, SL_MIN_VERSION, nullptr, 0, SlXvFeatureTest()}
|
||||
|
||||
/**
|
||||
* Checks whether the savegame is below \a major.\a minor.
|
||||
@@ -968,13 +968,13 @@ static inline bool IsNumericType(VarType conv)
|
||||
|
||||
/**
|
||||
* Get the address of the variable. Which one to pick depends on the object
|
||||
* pointer. If it is NULL we are dealing with global variables so the address
|
||||
* pointer. If it is nullptr we are dealing with global variables so the address
|
||||
* is taken. If non-null only the offset is stored in the union and we need
|
||||
* to add this to the address of the object
|
||||
*/
|
||||
static inline void *GetVariableAddress(const void *object, const SaveLoad *sld)
|
||||
{
|
||||
return const_cast<byte *>((const byte*)(sld->global ? NULL : object) + (ptrdiff_t)sld->address);
|
||||
return const_cast<byte *>((const byte*)(sld->global ? nullptr : object) + (ptrdiff_t)sld->address);
|
||||
}
|
||||
|
||||
int64 ReadValue(const void *ptr, VarType conv);
|
||||
@@ -1009,7 +1009,7 @@ void SlGlobList(const SaveLoadGlobVarList *sldg);
|
||||
void SlArray(void *array, size_t length, VarType conv);
|
||||
void SlObject(void *object, const SaveLoad *sld);
|
||||
bool SlObjectMember(void *object, const SaveLoad *sld);
|
||||
void NORETURN SlError(StringID string, const char *extra_msg = NULL, bool already_malloced = false);
|
||||
void NORETURN SlError(StringID string, const char *extra_msg = nullptr, bool already_malloced = false);
|
||||
void NORETURN SlErrorCorrupt(const char *msg, bool already_malloced = false);
|
||||
void NORETURN CDECL SlErrorFmt(StringID string, const char *msg, ...) WARN_FORMAT(2, 3);
|
||||
void NORETURN CDECL SlErrorCorruptFmt(const char *format, ...) WARN_FORMAT(1, 2);
|
||||
|
@@ -38,7 +38,7 @@ struct ReadBuffer {
|
||||
* Initialise our variables.
|
||||
* @param reader The filter to actually read data.
|
||||
*/
|
||||
ReadBuffer(LoadFilter *reader) : bufp(NULL), bufe(NULL), reader(reader), read(0)
|
||||
ReadBuffer(LoadFilter *reader) : bufp(nullptr), bufe(nullptr), reader(reader), read(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
@@ -89,7 +89,7 @@ struct SaveFilter {
|
||||
*/
|
||||
virtual void Finish()
|
||||
{
|
||||
if (this->chain != NULL) this->chain->Finish();
|
||||
if (this->chain != nullptr) this->chain->Finish();
|
||||
}
|
||||
};
|
||||
|
||||
|
@@ -231,14 +231,14 @@ static void Load_SPRG()
|
||||
switch(op) {
|
||||
case PSO_FIRST: {
|
||||
sp->first_instruction = new SignalSpecial(sp, PSO_FIRST);
|
||||
sp->first_instruction->GetPrevHandle() = NULL;
|
||||
sp->first_instruction->GetPrevHandle() = nullptr;
|
||||
MakeFixup(l, sp->first_instruction->next, ReadVLI());
|
||||
break;
|
||||
}
|
||||
|
||||
case PSO_LAST: {
|
||||
sp->last_instruction = new SignalSpecial(sp, PSO_LAST);
|
||||
sp->last_instruction->next = NULL;
|
||||
sp->last_instruction->next = nullptr;
|
||||
MakeFixup(l, sp->last_instruction->GetPrevHandle(), ReadVLI());
|
||||
break;
|
||||
}
|
||||
@@ -280,5 +280,5 @@ static void Load_SPRG()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _signal_chunk_handlers[] = {
|
||||
{ 'SPRG', Save_SPRG, Load_SPRG, NULL, NULL, CH_RIFF | CH_LAST},
|
||||
{ 'SPRG', Save_SPRG, Load_SPRG, nullptr, nullptr, CH_RIFF | CH_LAST},
|
||||
};
|
||||
|
@@ -68,5 +68,5 @@ static void Load_SIGN()
|
||||
|
||||
/** Chunk handlers related to signs. */
|
||||
extern const ChunkHandler _sign_chunk_handlers[] = {
|
||||
{ 'SIGN', Save_SIGN, Load_SIGN, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'SIGN', Save_SIGN, Load_SIGN, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -51,7 +51,7 @@ void MoveBuoysToWaypoints()
|
||||
VehicleType vt = ol->GetFirstSharedVehicle()->type;
|
||||
if (vt != VEH_SHIP && vt != VEH_TRAIN) continue;
|
||||
|
||||
for (Order *o = ol->GetFirstOrder(); o != NULL; o = o->next) UpdateWaypointOrder(o);
|
||||
for (Order *o = ol->GetFirstOrder(); o != nullptr; o = o->next) UpdateWaypointOrder(o);
|
||||
}
|
||||
|
||||
Vehicle *v;
|
||||
@@ -72,7 +72,7 @@ void MoveBuoysToWaypoints()
|
||||
Town *town = st->town;
|
||||
StringID string_id = st->string_id;
|
||||
char *name = st->name;
|
||||
st->name = NULL;
|
||||
st->name = nullptr;
|
||||
Date build_date = st->build_date;
|
||||
/* TTDPatch could use "buoys with rail station" for rail waypoints */
|
||||
bool train = st->train_station.tile != INVALID_TILE;
|
||||
@@ -120,15 +120,15 @@ void AfterLoadStations()
|
||||
for (uint i = 0; i < st->num_specs; i++) {
|
||||
if (st->speclist[i].grfid == 0) continue;
|
||||
|
||||
st->speclist[i].spec = StationClass::GetByGrf(st->speclist[i].grfid, st->speclist[i].localidx, NULL);
|
||||
st->speclist[i].spec = StationClass::GetByGrf(st->speclist[i].grfid, st->speclist[i].localidx, nullptr);
|
||||
}
|
||||
|
||||
if (Station::IsExpected(st)) {
|
||||
Station *sta = Station::From(st);
|
||||
for (const RoadStop *rs = sta->bus_stops; rs != NULL; rs = rs->next) sta->bus_station.Add(rs->xy);
|
||||
for (const RoadStop *rs = sta->truck_stops; rs != NULL; rs = rs->next) sta->truck_station.Add(rs->xy);
|
||||
for (const RoadStop *rs = sta->bus_stops; rs != nullptr; rs = rs->next) sta->bus_station.Add(rs->xy);
|
||||
for (const RoadStop *rs = sta->truck_stops; rs != nullptr; rs = rs->next) sta->truck_station.Add(rs->xy);
|
||||
|
||||
for (const Dock *d = sta->docks; d != NULL; d = d->next) {
|
||||
for (const Dock *d = sta->docks; d != nullptr; d = d->next) {
|
||||
sta->dock_station.Add(d->sloped);
|
||||
sta->dock_station.Add(d->flat);
|
||||
}
|
||||
@@ -581,7 +581,7 @@ static void Load_STNN()
|
||||
for (CargoID i = 0; i < num_cargo; i++) {
|
||||
SlObject(&st->goods[i], GetGoodsDesc());
|
||||
FlowSaveLoad flow;
|
||||
FlowStat *fs = NULL;
|
||||
FlowStat *fs = nullptr;
|
||||
StationID prev_source = INVALID_STATION;
|
||||
for (uint32 j = 0; j < _num_flows; ++j) {
|
||||
// SlObject(&flow, _flow_desc); /* this is highly performance-sensitive, manually unroll */
|
||||
@@ -591,7 +591,7 @@ static void Load_STNN()
|
||||
flow.share = buffer->RawReadUint32();
|
||||
if (!IsSavegameVersionBefore(SLV_187)) flow.restricted = (buffer->ReadByte() != 0);
|
||||
|
||||
if (fs == NULL || prev_source != flow.source) {
|
||||
if (fs == nullptr || prev_source != flow.source) {
|
||||
fs = &(st->goods[i].flows.insert(std::make_pair(flow.source, FlowStat(flow.via, flow.share, flow.restricted))).first->second);
|
||||
} else {
|
||||
fs->AppendShare(flow.via, flow.share, flow.restricted);
|
||||
@@ -711,8 +711,8 @@ static void Ptrs_DOCK()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _station_chunk_handlers[] = {
|
||||
{ 'STNS', NULL, Load_STNS, Ptrs_STNS, NULL, CH_ARRAY },
|
||||
{ 'STNN', Save_STNN, Load_STNN, Ptrs_STNN, NULL, CH_ARRAY },
|
||||
{ 'ROAD', Save_ROADSTOP, Load_ROADSTOP, Ptrs_ROADSTOP, NULL, CH_ARRAY},
|
||||
{ 'DOCK', Save_DOCK, Load_DOCK, Ptrs_DOCK, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'STNS', nullptr, Load_STNS, Ptrs_STNS, nullptr, CH_ARRAY },
|
||||
{ 'STNN', Save_STNN, Load_STNN, Ptrs_STNN, nullptr, CH_ARRAY },
|
||||
{ 'ROAD', Save_ROADSTOP, Load_ROADSTOP, Ptrs_ROADSTOP, nullptr, CH_ARRAY},
|
||||
{ 'DOCK', Save_DOCK, Load_DOCK, Ptrs_DOCK, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -50,5 +50,5 @@ static void Save_PSAC()
|
||||
|
||||
/** Chunk handler for persistent storages. */
|
||||
extern const ChunkHandler _persistent_storage_chunk_handlers[] = {
|
||||
{ 'PSAC', Save_PSAC, Load_PSAC, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'PSAC', Save_PSAC, Load_PSAC, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -102,6 +102,6 @@ static void Load_STORY_PAGE()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _story_page_chunk_handlers[] = {
|
||||
{ 'STPE', Save_STORY_PAGE_ELEMENT, Load_STORY_PAGE_ELEMENT, NULL, NULL, CH_ARRAY},
|
||||
{ 'STPA', Save_STORY_PAGE, Load_STORY_PAGE, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'STPE', Save_STORY_PAGE_ELEMENT, Load_STORY_PAGE_ELEMENT, nullptr, nullptr, CH_ARRAY},
|
||||
{ 'STPA', Save_STORY_PAGE, Load_STORY_PAGE, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -49,7 +49,7 @@ StringID RemapOldStringID(StringID s)
|
||||
}
|
||||
|
||||
/** Location to load the old names to. */
|
||||
char *_old_name_array = NULL;
|
||||
char *_old_name_array = nullptr;
|
||||
|
||||
/**
|
||||
* Copy and convert old custom names to UTF-8.
|
||||
@@ -61,7 +61,7 @@ char *_old_name_array = NULL;
|
||||
char *CopyFromOldName(StringID id)
|
||||
{
|
||||
/* Is this name an (old) custom name? */
|
||||
if (GetStringTab(id) != TEXT_TAB_OLD_CUSTOM) return NULL;
|
||||
if (GetStringTab(id) != TEXT_TAB_OLD_CUSTOM) return nullptr;
|
||||
|
||||
if (IsSavegameVersionBefore(SLV_37)) {
|
||||
/* Allow for expansion when converted to UTF-8. */
|
||||
@@ -109,7 +109,7 @@ char *CopyFromOldName(StringID id)
|
||||
void ResetOldNames()
|
||||
{
|
||||
free(_old_name_array);
|
||||
_old_name_array = NULL;
|
||||
_old_name_array = nullptr;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -140,5 +140,5 @@ static void Load_NAME()
|
||||
|
||||
/** Chunk handlers related to strings. */
|
||||
extern const ChunkHandler _name_chunk_handlers[] = {
|
||||
{ 'NAME', NULL, Load_NAME, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'NAME', nullptr, Load_NAME, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -48,5 +48,5 @@ static void Load_SUBS()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _subsidy_chunk_handlers[] = {
|
||||
{ 'SUBS', Save_SUBS, Load_SUBS, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'SUBS', Save_SUBS, Load_SUBS, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -31,5 +31,5 @@ static void Load_TMPL_RPLS()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _template_replacement_chunk_handlers[] = {
|
||||
{'TRPL', Save_TMPL_RPLS, Load_TMPL_RPLS, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{'TRPL', Save_TMPL_RPLS, Load_TMPL_RPLS, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -89,13 +89,13 @@ void AfterLoadTemplateVehicles()
|
||||
|
||||
FOR_ALL_TEMPLATES(tv) {
|
||||
/* Reinstate the previous pointer */
|
||||
if (tv->next != NULL) tv->next->previous = tv;
|
||||
tv->first = NULL;
|
||||
if (tv->next != nullptr) tv->next->previous = tv;
|
||||
tv->first = nullptr;
|
||||
}
|
||||
FOR_ALL_TEMPLATES(tv) {
|
||||
/* Fill the first pointers */
|
||||
if (tv->previous == NULL) {
|
||||
for (TemplateVehicle *u = tv; u != NULL; u = u->Next()) {
|
||||
if (tv->previous == nullptr) {
|
||||
for (TemplateVehicle *u = tv; u != nullptr; u = u->Next()) {
|
||||
u->first = tv;
|
||||
}
|
||||
}
|
||||
@@ -111,7 +111,7 @@ void AfterLoadTemplateVehiclesUpdateImage()
|
||||
|
||||
if (!SlXvIsFeaturePresent(XSLFI_TEMPLATE_REPLACEMENT, 3)) {
|
||||
FOR_ALL_TEMPLATES(tv) {
|
||||
if (tv->Prev() == NULL && !Company::IsValidID(tv->owner)) {
|
||||
if (tv->Prev() == nullptr && !Company::IsValidID(tv->owner)) {
|
||||
// clean up leftover template vehicles which no longer have a valid owner
|
||||
delete tv;
|
||||
}
|
||||
@@ -119,22 +119,22 @@ void AfterLoadTemplateVehiclesUpdateImage()
|
||||
}
|
||||
|
||||
FOR_ALL_TEMPLATES(tv) {
|
||||
if (tv->Prev() == NULL) {
|
||||
if (tv->Prev() == nullptr) {
|
||||
Backup<CompanyByte> cur_company(_current_company, tv->owner, FILE_LINE);
|
||||
StringID err;
|
||||
Train* t = VirtualTrainFromTemplateVehicle(tv, err);
|
||||
if (t != NULL) {
|
||||
if (t != nullptr) {
|
||||
int tv_len = 0;
|
||||
for (TemplateVehicle *u = tv; u != NULL; u = u->Next()) {
|
||||
for (TemplateVehicle *u = tv; u != nullptr; u = u->Next()) {
|
||||
tv_len++;
|
||||
}
|
||||
int t_len = 0;
|
||||
for (Train *u = t; u != NULL; u = u->Next()) {
|
||||
for (Train *u = t; u != nullptr; u = u->Next()) {
|
||||
t_len++;
|
||||
}
|
||||
if (t_len == tv_len) {
|
||||
Train *v = t;
|
||||
for (TemplateVehicle *u = tv; u != NULL; u = u->Next(), v = v->Next()) {
|
||||
for (TemplateVehicle *u = tv; u != nullptr; u = u->Next(), v = v->Next()) {
|
||||
v->GetImage(DIR_W, EIT_IN_DEPOT, &u->sprite_seq);
|
||||
u->image_dimensions.SetFromTrain(v);
|
||||
}
|
||||
@@ -151,5 +151,5 @@ void AfterLoadTemplateVehiclesUpdateImage()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _template_vehicle_chunk_handlers[] = {
|
||||
{'TMPL', Save_TMPLS, Load_TMPLS, Ptrs_TMPLS, NULL, CH_ARRAY | CH_LAST},
|
||||
{'TMPL', Save_TMPLS, Load_TMPLS, Ptrs_TMPLS, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -341,6 +341,6 @@ static void Ptrs_TOWN()
|
||||
|
||||
/** Chunk handler for towns. */
|
||||
extern const ChunkHandler _town_chunk_handlers[] = {
|
||||
{ 'HIDS', Save_HIDS, Load_HIDS, NULL, NULL, CH_ARRAY },
|
||||
{ 'CITY', Save_TOWN, Load_TOWN, Ptrs_TOWN, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'HIDS', Save_HIDS, Load_HIDS, nullptr, nullptr, CH_ARRAY },
|
||||
{ 'CITY', Save_TOWN, Load_TOWN, Ptrs_TOWN, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -179,7 +179,7 @@ void AfterLoadTraceRestrict()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _trace_restrict_chunk_handlers[] = {
|
||||
{ 'TRRM', Save_TRRM, Load_TRRM, NULL, NULL, CH_SPARSE_ARRAY}, // Trace Restrict Mapping chunk
|
||||
{ 'TRRP', Save_TRRP, Load_TRRP, NULL, NULL, CH_ARRAY}, // Trace Restrict Mapping Program Pool chunk
|
||||
{ 'TRRS', Save_TRRS, Load_TRRS, NULL, NULL, CH_ARRAY | CH_LAST}, // Trace Restrict Slot Pool chunk
|
||||
{ 'TRRM', Save_TRRM, Load_TRRM, nullptr, nullptr, CH_SPARSE_ARRAY}, // Trace Restrict Mapping chunk
|
||||
{ 'TRRP', Save_TRRP, Load_TRRP, nullptr, nullptr, CH_ARRAY}, // Trace Restrict Mapping Program Pool chunk
|
||||
{ 'TRRS', Save_TRRS, Load_TRRS, nullptr, nullptr, CH_ARRAY | CH_LAST}, // Trace Restrict Slot Pool chunk
|
||||
};
|
||||
|
@@ -48,5 +48,5 @@ static void Load_TUNN()
|
||||
|
||||
|
||||
extern const ChunkHandler _tunnel_chunk_handlers[] = {
|
||||
{ 'TUNN', Save_TUNN, Load_TUNN, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'TUNN', Save_TUNN, Load_TUNN, nullptr, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -38,7 +38,7 @@ void ConnectMultiheadedTrains()
|
||||
Train *v;
|
||||
|
||||
FOR_ALL_TRAINS(v) {
|
||||
v->other_multiheaded_part = NULL;
|
||||
v->other_multiheaded_part = nullptr;
|
||||
}
|
||||
|
||||
FOR_ALL_TRAINS(v) {
|
||||
@@ -58,8 +58,8 @@ void ConnectMultiheadedTrains()
|
||||
|
||||
bool sequential_matching = v->IsFrontEngine();
|
||||
|
||||
for (Train *u = v; u != NULL; u = u->GetNextVehicle()) {
|
||||
if (u->other_multiheaded_part != NULL) continue; // we already linked this one
|
||||
for (Train *u = v; u != nullptr; u = u->GetNextVehicle()) {
|
||||
if (u->other_multiheaded_part != nullptr) continue; // we already linked this one
|
||||
|
||||
if (u->IsMultiheaded()) {
|
||||
if (!u->IsEngine()) {
|
||||
@@ -72,8 +72,8 @@ void ConnectMultiheadedTrains()
|
||||
EngineID eid = u->engine_type;
|
||||
Train *w;
|
||||
if (sequential_matching) {
|
||||
for (w = u->GetNextVehicle(); w != NULL; w = w->GetNextVehicle()) {
|
||||
if (w->engine_type != eid || w->other_multiheaded_part != NULL || !w->IsMultiheaded()) continue;
|
||||
for (w = u->GetNextVehicle(); w != nullptr; w = w->GetNextVehicle()) {
|
||||
if (w->engine_type != eid || w->other_multiheaded_part != nullptr || !w->IsMultiheaded()) continue;
|
||||
|
||||
/* we found a car to partner with this engine. Now we will make sure it face the right way */
|
||||
if (w->IsEngine()) {
|
||||
@@ -84,8 +84,8 @@ void ConnectMultiheadedTrains()
|
||||
}
|
||||
} else {
|
||||
uint stack_pos = 0;
|
||||
for (w = u->GetNextVehicle(); w != NULL; w = w->GetNextVehicle()) {
|
||||
if (w->engine_type != eid || w->other_multiheaded_part != NULL || !w->IsMultiheaded()) continue;
|
||||
for (w = u->GetNextVehicle(); w != nullptr; w = w->GetNextVehicle()) {
|
||||
if (w->engine_type != eid || w->other_multiheaded_part != nullptr || !w->IsMultiheaded()) continue;
|
||||
|
||||
if (w->IsEngine()) {
|
||||
stack_pos++;
|
||||
@@ -96,7 +96,7 @@ void ConnectMultiheadedTrains()
|
||||
}
|
||||
}
|
||||
|
||||
if (w != NULL) {
|
||||
if (w != nullptr) {
|
||||
w->other_multiheaded_part = u;
|
||||
u->other_multiheaded_part = w;
|
||||
} else {
|
||||
@@ -120,7 +120,7 @@ void ConvertOldMultiheadToNew()
|
||||
|
||||
FOR_ALL_TRAINS(t) {
|
||||
if (HasBit(t->subtype, 7) && ((t->subtype & ~0x80) == 0 || (t->subtype & ~0x80) == 4)) {
|
||||
for (Train *u = t; u != NULL; u = u->Next()) {
|
||||
for (Train *u = t; u != nullptr; u = u->Next()) {
|
||||
const RailVehicleInfo *rvi = RailVehInfo(u->engine_type);
|
||||
|
||||
ClrBit(u->subtype, 7);
|
||||
@@ -202,7 +202,7 @@ void UpdateOldAircraft()
|
||||
if (a->subtype == AIR_HELICOPTER) a->Next()->Next()->cur_speed = 32;
|
||||
|
||||
/* set new position x,y,z */
|
||||
GetAircraftFlightLevelBounds(a, &a->z_pos, NULL);
|
||||
GetAircraftFlightLevelBounds(a, &a->z_pos, nullptr);
|
||||
SetAircraftPosition(a, gp.x, gp.y, GetAircraftFlightLevel(a));
|
||||
}
|
||||
}
|
||||
@@ -254,11 +254,11 @@ void AfterLoadVehicles(bool part_of_load)
|
||||
SCOPE_INFO_FMT([&v], "AfterLoadVehicles: %s", scope_dumper().VehicleInfo(v));
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
/* Reinstate the previous pointer */
|
||||
if (v->Next() != NULL) v->Next()->previous = v;
|
||||
if (v->NextShared() != NULL) v->NextShared()->previous_shared = v;
|
||||
if (v->Next() != nullptr) v->Next()->previous = v;
|
||||
if (v->NextShared() != nullptr) v->NextShared()->previous_shared = v;
|
||||
|
||||
if (part_of_load) v->fill_percent_te_id = INVALID_TE_ID;
|
||||
v->first = NULL;
|
||||
v->first = nullptr;
|
||||
if (v->IsGroundVehicle()) v->GetGroundVehicleCache()->first_engine = INVALID_ENGINE;
|
||||
}
|
||||
|
||||
@@ -274,9 +274,9 @@ void AfterLoadVehicles(bool part_of_load)
|
||||
std::map<Order*, OrderList*> mapping;
|
||||
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
if (v->orders.old != NULL) {
|
||||
if (v->orders.old != nullptr) {
|
||||
if (IsSavegameVersionBefore(SLV_105)) { // Pre-105 didn't save an OrderList
|
||||
if (mapping[v->orders.old] == NULL) {
|
||||
if (mapping[v->orders.old] == nullptr) {
|
||||
/* This adds the whole shared vehicle chain for case b */
|
||||
|
||||
/* Creating an OrderList here is safe because the number of vehicles
|
||||
@@ -292,7 +292,7 @@ void AfterLoadVehicles(bool part_of_load)
|
||||
}
|
||||
}
|
||||
} else { // OrderList was saved as such, only recalculate not saved values
|
||||
if (v->PreviousShared() == NULL) {
|
||||
if (v->PreviousShared() == nullptr) {
|
||||
v->orders.list->Initialize(v->orders.list->first, v);
|
||||
}
|
||||
}
|
||||
@@ -302,8 +302,8 @@ void AfterLoadVehicles(bool part_of_load)
|
||||
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
/* Fill the first pointers */
|
||||
if (v->Previous() == NULL) {
|
||||
for (Vehicle *u = v; u != NULL; u = u->Next()) {
|
||||
if (v->Previous() == nullptr) {
|
||||
for (Vehicle *u = v; u != nullptr; u = u->Next()) {
|
||||
u->first = v;
|
||||
}
|
||||
}
|
||||
@@ -313,12 +313,12 @@ void AfterLoadVehicles(bool part_of_load)
|
||||
if (IsSavegameVersionBefore(SLV_105)) {
|
||||
/* Before 105 there was no order for shared orders, thus it messed up horribly */
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
if (v->First() != v || v->orders.list != NULL || v->previous_shared != NULL || v->next_shared == NULL) continue;
|
||||
if (v->First() != v || v->orders.list != nullptr || v->previous_shared != nullptr || v->next_shared == nullptr) continue;
|
||||
|
||||
/* As above, allocating OrderList here is safe. */
|
||||
assert(OrderList::CanAllocateItem());
|
||||
v->orders.list = new OrderList(NULL, v);
|
||||
for (Vehicle *u = v; u != NULL; u = u->next_shared) {
|
||||
v->orders.list = new OrderList(nullptr, v);
|
||||
for (Vehicle *u = v; u != nullptr; u = u->next_shared) {
|
||||
u->orders.list = v->orders.list;
|
||||
}
|
||||
}
|
||||
@@ -396,9 +396,9 @@ void AfterLoadVehicles(bool part_of_load)
|
||||
CheckValidVehicles();
|
||||
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
assert(v->first != NULL);
|
||||
assert(v->first != nullptr);
|
||||
|
||||
v->trip_occupancy = CalcPercentVehicleFilled(v, NULL);
|
||||
v->trip_occupancy = CalcPercentVehicleFilled(v, nullptr);
|
||||
|
||||
switch (v->type) {
|
||||
case VEH_TRAIN: {
|
||||
@@ -511,7 +511,7 @@ void FixupTrainLengths()
|
||||
/* The vehicle center is now more to the front depending on vehicle length,
|
||||
* so we need to move all vehicles forward to cover the difference to the
|
||||
* old center, otherwise wagon spacing in trains would be broken upon load. */
|
||||
for (Train *u = Train::From(v); u != NULL; u = u->Next()) {
|
||||
for (Train *u = Train::From(v); u != nullptr; u = u->Next()) {
|
||||
if (u->track == TRACK_BIT_DEPOT || (u->vehstatus & VS_CRASHED)) continue;
|
||||
|
||||
Train *next = u->Next();
|
||||
@@ -523,7 +523,7 @@ void FixupTrainLengths()
|
||||
if (!TrainController(u, next, false)) break;
|
||||
}
|
||||
|
||||
if (next != NULL && done < diff && u->IsFrontEngine()) {
|
||||
if (next != nullptr && done < diff && u->IsFrontEngine()) {
|
||||
/* Pulling the front vehicle forwards failed, we either encountered a dead-end
|
||||
* or a red signal. To fix this, we try to move the whole train the required
|
||||
* space backwards and re-do the fix up of the front vehicle. */
|
||||
@@ -539,14 +539,14 @@ void FixupTrainLengths()
|
||||
|
||||
/* We moved the first vehicle which is now the last. Move it back to the
|
||||
* original position as we will fix up the last vehicle later in the loop. */
|
||||
for (int i = 0; i < done; i++) TrainController(u->Last(), NULL);
|
||||
for (int i = 0; i < done; i++) TrainController(u->Last(), nullptr);
|
||||
|
||||
/* Move the train backwards to get space for the first vehicle. As the stopping
|
||||
* distance from a line end is rounded up, move the train one unit more to cater
|
||||
* for front vehicles with odd lengths. */
|
||||
int moved;
|
||||
for (moved = 0; moved < diff + 1; moved++) {
|
||||
if (!TrainController(u, NULL, false)) break;
|
||||
if (!TrainController(u, nullptr, false)) break;
|
||||
}
|
||||
|
||||
/* Swap start<>end, start+1<>end-1, ... again. */
|
||||
@@ -565,17 +565,17 @@ void FixupTrainLengths()
|
||||
|
||||
/* We moved one unit more backwards than needed for even-length front vehicles,
|
||||
* try to move that unit forward again. We don't care if this step fails. */
|
||||
TrainController(u, NULL, false);
|
||||
TrainController(u, nullptr, false);
|
||||
}
|
||||
|
||||
/* If the next wagon is still in a depot, check if it shouldn't be outside already. */
|
||||
if (next != NULL && next->track == TRACK_BIT_DEPOT) {
|
||||
if (next != nullptr && next->track == TRACK_BIT_DEPOT) {
|
||||
int d = TicksToLeaveDepot(u);
|
||||
if (d <= 0) {
|
||||
/* Next vehicle should have left the depot already, show it and pull forward. */
|
||||
next->vehstatus &= ~VS_HIDDEN;
|
||||
next->track = TrackToTrackBits(GetRailDepotTrack(next->tile));
|
||||
for (int i = 0; i >= d; i--) TrainController(next, NULL);
|
||||
for (int i = 0; i >= d; i--) TrainController(next, nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1022,13 +1022,13 @@ void Load_VEOX()
|
||||
int index;
|
||||
while ((index = SlIterateArray()) != -1) {
|
||||
Vehicle *v = Vehicle::GetIfValid(index);
|
||||
assert(v != NULL);
|
||||
assert(v != nullptr);
|
||||
v->current_order.AllocExtraInfo();
|
||||
SlObject(v->current_order.extra.get(), GetOrderExtraInfoDescription());
|
||||
}
|
||||
}
|
||||
|
||||
extern const ChunkHandler _veh_chunk_handlers[] = {
|
||||
{ 'VEHS', Save_VEHS, Load_VEHS, Ptrs_VEHS, NULL, CH_SPARSE_ARRAY},
|
||||
{ 'VEOX', Save_VEOX, Load_VEOX, NULL, NULL, CH_SPARSE_ARRAY | CH_LAST},
|
||||
{ 'VEHS', Save_VEHS, Load_VEHS, Ptrs_VEHS, nullptr, CH_SPARSE_ARRAY},
|
||||
{ 'VEOX', Save_VEOX, Load_VEOX, nullptr, nullptr, CH_SPARSE_ARRAY | CH_LAST},
|
||||
};
|
||||
|
@@ -88,7 +88,7 @@ void MoveWaypointsToBaseStations()
|
||||
StationClass* stclass = StationClass::Get(STAT_CLASS_WAYP);
|
||||
for (uint i = 0; i < stclass->GetSpecCount(); i++) {
|
||||
const StationSpec *statspec = stclass->GetSpec(i);
|
||||
if (statspec != NULL && statspec->grf_prop.grffile->grfid == wp.grfid && statspec->grf_prop.local_id == wp.localidx) {
|
||||
if (statspec != nullptr && statspec->grf_prop.grffile->grfid == wp.grfid && statspec->grf_prop.local_id == wp.localidx) {
|
||||
wp.spec = statspec;
|
||||
break;
|
||||
}
|
||||
@@ -122,7 +122,7 @@ void MoveWaypointsToBaseStations()
|
||||
|
||||
SetRailStationReservation(t, reserved);
|
||||
|
||||
if (wp.spec != NULL) {
|
||||
if (wp.spec != nullptr) {
|
||||
SetCustomStationSpecIndex(t, AllocateSpecToStation(wp.spec, new_wp, true));
|
||||
}
|
||||
new_wp->rect.BeforeAddTile(t, StationRect::ADD_FORCE);
|
||||
@@ -136,7 +136,7 @@ void MoveWaypointsToBaseStations()
|
||||
FOR_ALL_ORDER_LISTS(ol) {
|
||||
if (ol->GetFirstSharedVehicle()->type != VEH_TRAIN) continue;
|
||||
|
||||
for (Order *o = ol->GetFirstOrder(); o != NULL; o = o->next) UpdateWaypointOrder(o);
|
||||
for (Order *o = ol->GetFirstOrder(); o != nullptr; o = o->next) UpdateWaypointOrder(o);
|
||||
}
|
||||
|
||||
Vehicle *v;
|
||||
@@ -199,10 +199,10 @@ static void Ptrs_WAYP()
|
||||
/* Only for versions 12 .. 122 */
|
||||
if (!Town::IsValidID(wp.town_index)) {
|
||||
/* Upon a corrupted waypoint we'll likely get here. The next step will be to
|
||||
* loop over all Ptrs procs to NULL the pointers. However, we don't know
|
||||
* whether we're in the NULL or "normal" Ptrs proc. So just clear the list
|
||||
* loop over all Ptrs procs to nullptr the pointers. However, we don't know
|
||||
* whether we're in the nullptr or "normal" Ptrs proc. So just clear the list
|
||||
* of old waypoints we constructed and then this waypoint (and the other
|
||||
* possibly corrupt ones) will not be queried in the NULL Ptrs proc run. */
|
||||
* possibly corrupt ones) will not be queried in the nullptr Ptrs proc run. */
|
||||
_old_waypoints.clear();
|
||||
SlErrorCorrupt("Referencing invalid Town");
|
||||
}
|
||||
@@ -215,5 +215,5 @@ static void Ptrs_WAYP()
|
||||
}
|
||||
|
||||
extern const ChunkHandler _waypoint_chunk_handlers[] = {
|
||||
{ 'CHKP', NULL, Load_WAYP, Ptrs_WAYP, NULL, CH_ARRAY | CH_LAST},
|
||||
{ 'CHKP', nullptr, Load_WAYP, Ptrs_WAYP, nullptr, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
Reference in New Issue
Block a user