# HG changeset patch # User truelight # Date 1107527063 0 # Node ID e7a73ee62d2f91a99cc06d0309d1571301a92094 # Parent 1573d0e4e7a196b20fcd54aa54caf67c04a02a3f (svn r1786) -Fix: unitnumber is increased to 16bit, so now you can have up to 5000 trains in one game (instead of the 240 which was the current value). Default max allowed vehicles per type is changed: Trains: 500 (old 80) Road: 500 (old 80) Ships: 200 (old 40) Aicraft: 300 (old 50) (Tnx to Celestar and Darkvater for checking the patch) diff -r 1573d0e4e7a1 -r e7a73ee62d2f aircraft_cmd.c --- a/aircraft_cmd.c Fri Feb 04 14:05:28 2005 +0000 +++ b/aircraft_cmd.c Fri Feb 04 14:24:23 2005 +0000 @@ -156,7 +156,7 @@ { int32 value; Vehicle *vl[3], *v, *u, *w; - byte unit_num; + UnitID unit_num; uint tile = TILE_FROM_XY(x,y); const AircraftVehicleInfo *avi = AircraftVehInfo(p1); Engine *e; diff -r 1573d0e4e7a1 -r e7a73ee62d2f roadveh_cmd.c --- a/roadveh_cmd.c Fri Feb 04 14:05:28 2005 +0000 +++ b/roadveh_cmd.c Fri Feb 04 14:24:23 2005 +0000 @@ -113,7 +113,7 @@ { int32 cost; Vehicle *v; - byte unit_num; + UnitID unit_num; uint tile = TILE_FROM_XY(x,y); Engine *e; diff -r 1573d0e4e7a1 -r e7a73ee62d2f saveload.c --- a/saveload.c Fri Feb 04 14:05:28 2005 +0000 +++ b/saveload.c Fri Feb 04 14:24:23 2005 +0000 @@ -7,7 +7,7 @@ #include "saveload.h" enum { - SAVEGAME_MAJOR_VERSION = 7, + SAVEGAME_MAJOR_VERSION = 8, SAVEGAME_MINOR_VERSION = 0, SAVEGAME_LOADABLE_VERSION = (SAVEGAME_MAJOR_VERSION << 8) + SAVEGAME_MINOR_VERSION diff -r 1573d0e4e7a1 -r e7a73ee62d2f settings.c --- a/settings.c Fri Feb 04 14:05:28 2005 +0000 +++ b/settings.c Fri Feb 04 14:24:23 2005 +0000 @@ -867,10 +867,10 @@ {"forbid_90_deg", SDT_BOOL, (void*)false, &_patches.forbid_90_deg, NULL}, {"improved_load", SDT_BOOL, (void*)false, &_patches.improved_load, NULL}, - {"max_trains", SDT_UINT8, (void*)80, &_patches.max_trains, NULL}, - {"max_roadveh", SDT_UINT8, (void*)80, &_patches.max_roadveh, NULL}, - {"max_aircraft", SDT_UINT8, (void*)40, &_patches.max_aircraft, NULL}, - {"max_ships", SDT_UINT8, (void*)50, &_patches.max_ships, NULL}, + {"max_trains", SDT_UINT16, (void*)500, &_patches.max_trains, NULL}, + {"max_roadveh", SDT_UINT16, (void*)500, &_patches.max_roadveh, NULL}, + {"max_aircraft", SDT_UINT16, (void*)200, &_patches.max_aircraft, NULL}, + {"max_ships", SDT_UINT16, (void*)300, &_patches.max_ships, NULL}, {"servint_ispercent", SDT_BOOL, (void*)false, &_patches.servint_ispercent, NULL}, {"servint_trains", SDT_UINT16, (void*)150, &_patches.servint_trains, NULL}, diff -r 1573d0e4e7a1 -r e7a73ee62d2f settings_gui.c --- a/settings_gui.c Fri Feb 04 14:05:28 2005 +0000 +++ b/settings_gui.c Fri Feb 04 14:24:23 2005 +0000 @@ -661,10 +661,10 @@ {PE_INT16, PF_PLAYERBASED, STR_CONFIG_PATCHES_AUTORENEW_MONTHS, "autorenew_months", &_patches.autorenew_months, -12, 12, 1, NULL}, {PE_CURRENCY, PF_PLAYERBASED, STR_CONFIG_PATCHES_AUTORENEW_MONEY,"autorenew_money", &_patches.autorenew_money, 0, 2000000, 100000, NULL}, - {PE_UINT8, 0, STR_CONFIG_PATCHES_MAX_TRAINS, "max_trains", &_patches.max_trains, 0,240, 10, NULL}, - {PE_UINT8, 0, STR_CONFIG_PATCHES_MAX_ROADVEH, "max_roadveh", &_patches.max_roadveh, 0,240, 10, NULL}, - {PE_UINT8, 0, STR_CONFIG_PATCHES_MAX_AIRCRAFT, "max_aircraft", &_patches.max_aircraft, 0,240, 10, NULL}, - {PE_UINT8, 0, STR_CONFIG_PATCHES_MAX_SHIPS, "max_ships", &_patches.max_ships, 0,240, 10, NULL}, + {PE_UINT16, 0, STR_CONFIG_PATCHES_MAX_TRAINS, "max_trains", &_patches.max_trains, 0,5000, 50, NULL}, + {PE_UINT16, 0, STR_CONFIG_PATCHES_MAX_ROADVEH, "max_roadveh", &_patches.max_roadveh, 0,5000, 50, NULL}, + {PE_UINT16, 0, STR_CONFIG_PATCHES_MAX_AIRCRAFT, "max_aircraft", &_patches.max_aircraft, 0,5000, 50, NULL}, + {PE_UINT16, 0, STR_CONFIG_PATCHES_MAX_SHIPS, "max_ships", &_patches.max_ships, 0,5000, 50, NULL}, {PE_BOOL, 0, STR_CONFIG_PATCHES_SERVINT_ISPERCENT,"servint_isperfect",&_patches.servint_ispercent, 0, 0, 0, &CheckInterval}, {PE_UINT16, PF_0ISDIS, STR_CONFIG_PATCHES_SERVINT_TRAINS, "servint_trains", &_patches.servint_trains, 5,800, 5, &InValidateDetailsWindow}, diff -r 1573d0e4e7a1 -r e7a73ee62d2f ship_cmd.c --- a/ship_cmd.c Fri Feb 04 14:05:28 2005 +0000 +++ b/ship_cmd.c Fri Feb 04 14:24:23 2005 +0000 @@ -873,7 +873,7 @@ { int32 value; Vehicle *v; - uint unit_num; + UnitID unit_num; uint tile = TILE_FROM_XY(x,y); Engine *e; diff -r 1573d0e4e7a1 -r e7a73ee62d2f train_cmd.c --- a/train_cmd.c Fri Feb 04 14:05:28 2005 +0000 +++ b/train_cmd.c Fri Feb 04 14:24:23 2005 +0000 @@ -535,7 +535,7 @@ const RailVehicleInfo *rvi; int value,dir; Vehicle *v, *u; - byte unit_num; + UnitID unit_num; Engine *e; uint tile = TILE_FROM_XY(x,y); @@ -774,7 +774,7 @@ // moving a loco to a new line?, then we need to assign a unitnumber. if (dst == NULL && src->subtype != TS_Front_Engine && is_loco) { - uint unit_num = GetFreeUnitNumber(VEH_Train); + UnitID unit_num = GetFreeUnitNumber(VEH_Train); if (unit_num > _patches.max_trains) return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME); diff -r 1573d0e4e7a1 -r e7a73ee62d2f variables.h --- a/variables.h Fri Feb 04 14:05:28 2005 +0000 +++ b/variables.h Fri Feb 04 14:24:23 2005 +0000 @@ -11,6 +11,8 @@ # define MAX_PATH 260 #endif +typedef uint16 UnitID; //! All unitnumber stuff is of this type (or anyway, should be) + // Prices and also the fractional part. VARDEF Prices _price; VARDEF uint16 _price_frac[NUM_PRICES]; @@ -135,10 +137,10 @@ uint8 toolbar_pos; // position of toolbars, 0=left, 1=center, 2=right uint8 window_snap_radius; // Windows snap at each other if closer than this - byte max_trains; //max trains in game per player (these are 8bit because the unitnumber field can't hold more) - byte max_roadveh; //max trucks in game per player - byte max_aircraft; //max planes in game per player - byte max_ships; //max ships in game per player + UnitID max_trains; //max trains in game per player (these are 16bit because the unitnumber field can't hold more) + UnitID max_roadveh; //max trucks in game per player + UnitID max_aircraft; //max planes in game per player + UnitID max_ships; //max ships in game per player bool servint_ispercent; // service intervals are in percents uint16 servint_trains; // service interval for trains diff -r 1573d0e4e7a1 -r e7a73ee62d2f vehicle.c --- a/vehicle.c Fri Feb 04 14:05:28 2005 +0000 +++ b/vehicle.c Fri Feb 04 14:24:23 2005 +0000 @@ -1762,9 +1762,9 @@ return result; } -uint GetFreeUnitNumber(byte type) +UnitID GetFreeUnitNumber(byte type) { - uint unit_num = 0; + UnitID unit_num = 0; Vehicle *u; restart: @@ -1784,7 +1784,8 @@ SLE_REF(Vehicle,next, REF_VEHICLE_OLD), SLE_VAR(Vehicle,string_id, SLE_STRINGID), - SLE_VAR(Vehicle,unitnumber, SLE_UINT8), + SLE_CONDVAR(Vehicle,unitnumber, SLE_FILE_U8 | SLE_VAR_U16, 0, 7), + SLE_CONDVAR(Vehicle,unitnumber, SLE_UINT16, 8, 255), SLE_VAR(Vehicle,owner, SLE_UINT8), SLE_CONDVAR(Vehicle,tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Vehicle,tile, SLE_UINT32, 6, 255), diff -r 1573d0e4e7a1 -r e7a73ee62d2f vehicle.h --- a/vehicle.h Fri Feb 04 14:05:28 2005 +0000 +++ b/vehicle.h Fri Feb 04 14:24:23 2005 +0000 @@ -100,7 +100,7 @@ StringID string_id; // Displayed string - byte unitnumber; // unit number, for display purposes only + UnitID unitnumber; // unit number, for display purposes only byte owner; // which player owns the vehicle? TileIndex tile; // Current tile index @@ -331,7 +331,7 @@ void ShowAircraftViewWindow(Vehicle *v); bool IsShipDepotTile(TileIndex tile); -uint GetFreeUnitNumber(byte type); +UnitID GetFreeUnitNumber(byte type); int LoadUnloadVehicle(Vehicle *v); int GetDepotByTile(uint tile);