Improved breakdowns: Update save/load code
This commit is contained in:
@@ -2819,8 +2819,7 @@ bool AfterLoadGame()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Set some breakdown-related variables to the correct values. */
|
/* Set some breakdown-related variables to the correct values. */
|
||||||
if (IsSavegameVersionBefore(SL_IB)) {
|
if (SlXvIsFeatureMissing(XLSFI_IMPROVED_BREAKDOWNS)) {
|
||||||
|
|
||||||
Vehicle *v;
|
Vehicle *v;
|
||||||
FOR_ALL_VEHICLES(v) {
|
FOR_ALL_VEHICLES(v) {
|
||||||
switch(v->type) {
|
switch(v->type) {
|
||||||
@@ -2835,17 +2834,22 @@ bool AfterLoadGame()
|
|||||||
v->reliability = min(v->First()->reliability, e->reliability);
|
v->reliability = min(v->First()->reliability, e->reliability);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* FALL THROUGH */
|
||||||
case VEH_ROAD:
|
case VEH_ROAD:
|
||||||
v->breakdown_chance = 128;
|
v->breakdown_chance = 128;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VEH_SHIP:
|
case VEH_SHIP:
|
||||||
v->breakdown_chance = 64;
|
v->breakdown_chance = 64;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VEH_AIRCRAFT:
|
case VEH_AIRCRAFT:
|
||||||
v->breakdown_chance = Clamp(64 + (AircraftVehInfo(v->engine_type)->max_speed >> 3), 0, 255);
|
v->breakdown_chance = Clamp(64 + (AircraftVehInfo(v->engine_type)->max_speed >> 3), 0, 255);
|
||||||
v->breakdown_severity = 40;
|
v->breakdown_severity = 40;
|
||||||
break;
|
break;
|
||||||
default: break;
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -45,6 +45,7 @@ std::vector<uint32> _sl_xv_discardable_chunk_ids; ///< list of chunks
|
|||||||
static const uint32 _sl_xv_slxi_chunk_version = 0; ///< current version os SLXI chunk
|
static const uint32 _sl_xv_slxi_chunk_version = 0; ///< current version os SLXI chunk
|
||||||
|
|
||||||
const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = {
|
const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = {
|
||||||
|
{ XLSFI_IMPROVED_BREAKDOWNS, XSCF_NULL, 1, 1, "improved_breakdowns", NULL, NULL, NULL },
|
||||||
{ XSLFI_NULL, XSCF_NULL, 0, 0, NULL, NULL, NULL, NULL },// This is the end marker
|
{ XSLFI_NULL, XSCF_NULL, 0, 0, NULL, NULL, NULL, NULL },// This is the end marker
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
enum SlXvFeatureIndex {
|
enum SlXvFeatureIndex {
|
||||||
XSLFI_NULL = 0, ///< Unused value, to indicate that no extended feature test is in use
|
XSLFI_NULL = 0, ///< Unused value, to indicate that no extended feature test is in use
|
||||||
|
XLSFI_IMPROVED_BREAKDOWNS, ///< Improved breakdowns patch
|
||||||
|
|
||||||
XSLFI_SIZE, ///< Total count of features, including null feature
|
XSLFI_SIZE, ///< Total count of features, including null feature
|
||||||
};
|
};
|
||||||
|
@@ -92,7 +92,6 @@ enum SLRefType {
|
|||||||
|
|
||||||
/** Highest possible savegame version. */
|
/** Highest possible savegame version. */
|
||||||
#define SL_MAX_VERSION UINT16_MAX
|
#define SL_MAX_VERSION UINT16_MAX
|
||||||
#define SL_IB 250
|
|
||||||
|
|
||||||
/** Flags of a chunk. */
|
/** Flags of a chunk. */
|
||||||
enum ChunkType {
|
enum ChunkType {
|
||||||
|
@@ -671,8 +671,8 @@ const SaveLoad *GetVehicleDescription(VehicleType vt)
|
|||||||
SLE_VAR(Vehicle, breakdown_delay, SLE_UINT8),
|
SLE_VAR(Vehicle, breakdown_delay, SLE_UINT8),
|
||||||
SLE_VAR(Vehicle, breakdowns_since_last_service, SLE_UINT8),
|
SLE_VAR(Vehicle, breakdowns_since_last_service, SLE_UINT8),
|
||||||
SLE_VAR(Vehicle, breakdown_chance, SLE_UINT8),
|
SLE_VAR(Vehicle, breakdown_chance, SLE_UINT8),
|
||||||
SLE_CONDVAR(Vehicle, breakdown_type, SLE_UINT8, SL_IB, SL_MAX_VERSION),
|
SLE_CONDVAR_X(Vehicle, breakdown_type, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XLSFI_IMPROVED_BREAKDOWNS)),
|
||||||
SLE_CONDVAR(Vehicle, breakdown_severity, SLE_UINT8, SL_IB, SL_MAX_VERSION),
|
SLE_CONDVAR_X(Vehicle, breakdown_severity, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XLSFI_IMPROVED_BREAKDOWNS)),
|
||||||
SLE_CONDVAR(Vehicle, build_year, SLE_FILE_U8 | SLE_VAR_I32, 0, 30),
|
SLE_CONDVAR(Vehicle, build_year, SLE_FILE_U8 | SLE_VAR_I32, 0, 30),
|
||||||
SLE_CONDVAR(Vehicle, build_year, SLE_INT32, 31, SL_MAX_VERSION),
|
SLE_CONDVAR(Vehicle, build_year, SLE_INT32, 31, SL_MAX_VERSION),
|
||||||
|
|
||||||
|
@@ -1141,11 +1141,10 @@ cat = SC_BASIC
|
|||||||
[SDT_BOOL]
|
[SDT_BOOL]
|
||||||
base = GameSettings
|
base = GameSettings
|
||||||
var = vehicle.improved_breakdowns
|
var = vehicle.improved_breakdowns
|
||||||
from = SL_IB
|
|
||||||
guiflags = SGF_NO_NETWORK
|
guiflags = SGF_NO_NETWORK
|
||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_SETTING_IMPROVED_BREAKDOWNS
|
str = STR_CONFIG_SETTING_IMPROVED_BREAKDOWNS
|
||||||
|
patxname = ""improved_breakdowns.vehicle.improved_breakdowns""
|
||||||
|
|
||||||
; station.join_stations
|
; station.join_stations
|
||||||
[SDT_NULL]
|
[SDT_NULL]
|
||||||
|
Reference in New Issue
Block a user