Changeset - r12027:83216fa52f8f
[Not reviewed]
master
0 17 0
yexo - 15 years ago 2009-05-26 21:59:49
yexo@openttd.org
(svn r16439) -Change: Make the default vehicle servicing settings company-based settings, so in a multiplayer game everyone can change them.
17 files changed with 88 insertions and 53 deletions:
0 comments (0 inline, 0 general)
src/aircraft_cmd.cpp
Show inline comments
 
@@ -378,7 +378,7 @@ CommandCost CmdBuildAircraft(TileIndex t
 
		v->targetairport = GetStationIndex(tile);
 
		v->SetNext(u);
 

	
 
		v->service_interval = _settings_game.vehicle.servint_aircraft;
 
		v->service_interval = Company::Get(_current_company)->settings.vehicle.servint_aircraft;
 

	
 
		v->date_of_last_service = _date;
 
		v->build_year = u->build_year = _cur_year;
 
@@ -582,7 +582,7 @@ CommandCost CmdRefitAircraft(TileIndex t
 

	
 
static void CheckIfAircraftNeedsService(Aircraft *v)
 
{
 
	if (_settings_game.vehicle.servint_aircraft == 0 || !v->NeedsAutomaticServicing()) return;
 
	if (Company::Get(v->owner)->settings.vehicle.servint_aircraft == 0 || !v->NeedsAutomaticServicing()) return;
 
	if (v->IsInDepot()) {
 
		VehicleServiceInDepot(v);
 
		return;
src/depot.cpp
Show inline comments
 
@@ -4,6 +4,7 @@
 

	
 
#include "stdafx.h"
 
#include "depot_base.h"
 
#include "company_type.h"
 
#include "order_func.h"
 
#include "window_func.h"
 
#include "core/bitmath_func.hpp"
src/order_cmd.cpp
Show inline comments
 
@@ -1340,7 +1340,7 @@ CommandCost CmdRestoreOrderIndex(TileInd
 
	Vehicle *v = Vehicle::GetIfValid(p1);
 
	/* Check the vehicle type and ownership, and if the service interval and order are in range */
 
	if (v == NULL || !CheckOwnership(v->owner)) return CMD_ERROR;
 
	if (serv_int != GetServiceIntervalClamped(serv_int) || cur_ord >= v->GetNumOrders()) return CMD_ERROR;
 
	if (serv_int != GetServiceIntervalClamped(serv_int, v->owner) || cur_ord >= v->GetNumOrders()) return CMD_ERROR;
 

	
 
	if (flags & DC_EXEC) {
 
		v->cur_order_index = cur_ord;
 
@@ -1527,9 +1527,9 @@ void DeleteVehicleOrders(Vehicle *v, boo
 
	}
 
}
 

	
 
Date GetServiceIntervalClamped(uint index)
 
uint16 GetServiceIntervalClamped(uint interval, CompanyID company_id)
 
{
 
	return (_settings_game.vehicle.servint_ispercent) ? Clamp(index, MIN_SERVINT_PERCENT, MAX_SERVINT_PERCENT) : Clamp(index, MIN_SERVINT_DAYS, MAX_SERVINT_DAYS);
 
	return (Company::Get(company_id)->settings.vehicle.servint_ispercent) ? Clamp(interval, MIN_SERVINT_PERCENT, MAX_SERVINT_PERCENT) : Clamp(interval, MIN_SERVINT_DAYS, MAX_SERVINT_DAYS);
 
}
 

	
 
/**
src/order_func.h
Show inline comments
 
@@ -47,12 +47,12 @@ void DrawOrderString(const Vehicle *v, c
 
#define MAX_SERVINT_DAYS   800
 

	
 
/**
 
 * Get the service interval domain.
 
 * Get the new proposed service interval for the vehicle is indeed, clamped
 
 * within the given bounds. @see MIN_SERVINT_PERCENT ,etc.
 
 * @param index proposed service interval
 
 * @return service interval
 
 * Clamp the service interval to the correct min/max. The actual min/max values
 
 * depend on whether it's in percent or days.
 
 * @param interval proposed service interval
 
 * @param company_id the owner of the vehicle
 
 * @return Clamped service interval
 
 */
 
Date GetServiceIntervalClamped(uint index);
 
uint16 GetServiceIntervalClamped(uint interval, CompanyID company_id);
 

	
 
#endif /* ORDER_FUNC_H */
src/roadveh_cmd.cpp
Show inline comments
 
@@ -233,7 +233,7 @@ CommandCost CmdBuildRoadVeh(TileIndex ti
 

	
 
		v->name = NULL;
 

	
 
		v->service_interval = _settings_game.vehicle.servint_roadveh;
 
		v->service_interval = Company::Get(v->owner)->settings.vehicle.servint_roadveh;
 

	
 
		v->date_of_last_service = _date;
 
		v->build_year = _cur_year;
 
@@ -1825,7 +1825,7 @@ bool RoadVehicle::Tick()
 
static void CheckIfRoadVehNeedsService(RoadVehicle *v)
 
{
 
	/* If we already got a slot at a stop, use that FIRST, and go to a depot later */
 
	if (v->slot != NULL || _settings_game.vehicle.servint_roadveh == 0 || !v->NeedsAutomaticServicing()) return;
 
	if (v->slot != NULL || Company::Get(v->owner)->settings.vehicle.servint_roadveh == 0 || !v->NeedsAutomaticServicing()) return;
 
	if (v->IsInDepot()) {
 
		VehicleServiceInDepot(v);
 
		return;
src/saveload/afterload.cpp
Show inline comments
 
@@ -1846,6 +1846,14 @@ bool AfterLoadGame()
 
		}
 
	}
 

	
 
	if (CheckSavegameVersion(120)) {
 
		extern VehicleDefaultSettings _old_vds;
 
		Company *c;
 
		FOR_ALL_COMPANIES(c) {
 
			c->settings.vehicle = _old_vds;
 
		}
 
	}
 

	
 
	AfterLoadLabelMaps();
 

	
 
	GamelogPrintDebug(1);
src/saveload/company_sl.cpp
Show inline comments
 
@@ -140,6 +140,13 @@ static const SaveLoad _company_desc[] = 
 
	SLE_CONDVAR(Company, settings.engine_renew_money,  SLE_UINT32,          16, SL_MAX_VERSION),
 
	SLE_CONDVAR(Company, settings.renew_keep_length,   SLE_BOOL,             2, SL_MAX_VERSION),
 

	
 
	/* Default vehicle settings */
 
	SLE_CONDVAR(Company, settings.vehicle.servint_ispercent,   SLE_BOOL,     120, SL_MAX_VERSION),
 
	SLE_CONDVAR(Company, settings.vehicle.servint_trains,    SLE_UINT16,     120, SL_MAX_VERSION),
 
	SLE_CONDVAR(Company, settings.vehicle.servint_roadveh,   SLE_UINT16,     120, SL_MAX_VERSION),
 
	SLE_CONDVAR(Company, settings.vehicle.servint_aircraft,  SLE_UINT16,     120, SL_MAX_VERSION),
 
	SLE_CONDVAR(Company, settings.vehicle.servint_ships,     SLE_UINT16,     120, SL_MAX_VERSION),
 

	
 
	/* Reserve extra space in savegame here. (currently 63 bytes) */
 
	SLE_CONDNULL(63, 2, SL_MAX_VERSION),
 

	
src/saveload/saveload.cpp
Show inline comments
 
@@ -40,7 +40,7 @@
 

	
 
#include "saveload_internal.h"
 

	
 
extern const uint16 SAVEGAME_VERSION = 119;
 
extern const uint16 SAVEGAME_VERSION = 120;
 

	
 
SavegameType _savegame_type; ///< type of savegame we are loading
 

	
src/settings.cpp
Show inline comments
 
@@ -67,6 +67,7 @@
 
ClientSettings _settings_client;
 
GameSettings _settings_game;
 
GameSettings _settings_newgame;
 
VehicleDefaultSettings _old_vds; ///< Used for loading default vehicles settings from old savegames
 

	
 
typedef void SettingDescProc(IniFile *ini, const SettingDesc *desc, const char *grpname, void *object);
 
typedef void SettingDescProcList(IniFile *ini, const char *grpname, StringList *list);
 
@@ -705,18 +706,23 @@ static bool UpdateConsists(int32 p1)
 
/* Check service intervals of vehicles, p1 is value of % or day based servicing */
 
static bool CheckInterval(int32 p1)
 
{
 
	VehicleSettings *ptc = (_game_mode == GM_MENU) ? &_settings_newgame.vehicle : &_settings_game.vehicle;
 
	VehicleDefaultSettings *vds;
 
	if (_game_mode == GM_MENU || !Company::IsValidID(_current_company)) {
 
		vds = &_settings_client.company.vehicle;
 
	} else {
 
		vds = &Company::Get(_current_company)->settings.vehicle;
 
	}
 

	
 
	if (p1) {
 
		ptc->servint_trains   = 50;
 
		ptc->servint_roadveh  = 50;
 
		ptc->servint_aircraft = 50;
 
		ptc->servint_ships    = 50;
 
		vds->servint_trains   = 50;
 
		vds->servint_roadveh  = 50;
 
		vds->servint_aircraft = 50;
 
		vds->servint_ships    = 50;
 
	} else {
 
		ptc->servint_trains   = 150;
 
		ptc->servint_roadveh  = 150;
 
		ptc->servint_aircraft = 360;
 
		ptc->servint_ships    = 100;
 
		vds->servint_trains   = 150;
 
		vds->servint_roadveh  = 150;
 
		vds->servint_aircraft = 360;
 
		vds->servint_ships    = 100;
 
	}
 

	
 
	InvalidateDetailsWindow(0);
 
@@ -1425,7 +1431,6 @@ CommandCost CmdChangeSetting(TileIndex t
 
 */
 
CommandCost CmdChangeCompanySetting(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 
{
 
	DEBUG(misc, 0, "Change company setting: %u into %u", p1, p2);
 
	if (p1 >= lengthof(_company_settings)) return CMD_ERROR;
 
	const SettingDesc *sd = &_company_settings[p1];
 

	
src/settings_internal.h
Show inline comments
 
@@ -80,4 +80,6 @@ bool SetSettingValue(uint index, int32 v
 
bool SetSettingValue(uint index, const char *value);
 
void SetCompanySetting(uint index, int32 value);
 

	
 
extern VehicleDefaultSettings _old_vds;
 

	
 
#endif /* SETTINGS_H */
src/settings_type.h
Show inline comments
 
@@ -293,11 +293,6 @@ struct VehicleSettings {
 
	UnitID max_roadveh;                      ///< max trucks in game per company
 
	UnitID max_aircraft;                     ///< max planes in game per company
 
	UnitID max_ships;                        ///< max ships in game per company
 
	bool   servint_ispercent;                ///< service intervals are in percents
 
	uint16 servint_trains;                   ///< service interval for trains
 
	uint16 servint_roadveh;                  ///< service interval for road vehicles
 
	uint16 servint_aircraft;                 ///< service interval for aircraft
 
	uint16 servint_ships;                    ///< service interval for ships
 
	uint8  plane_speed;                      ///< divisor for speed of aircraft
 
	uint8  freight_trains;                   ///< value to multiply the weight of cargo by
 
	bool   dynamic_engines;                  ///< enable dynamic allocation of engine data
 
@@ -338,12 +333,22 @@ struct StationSettings {
 
	byte   station_spread;                   ///< amount a station may spread
 
};
 

	
 
/** Default settings for vehicles. */
 
struct VehicleDefaultSettings {
 
	bool   servint_ispercent;                ///< service intervals are in percents
 
	uint16 servint_trains;                   ///< service interval for trains
 
	uint16 servint_roadveh;                  ///< service interval for road vehicles
 
	uint16 servint_aircraft;                 ///< service interval for aircraft
 
	uint16 servint_ships;                    ///< service interval for ships
 
};
 

	
 
/** Settings that can be set per company. */
 
struct CompanySettings {
 
	bool engine_renew;                       ///< is autorenew enabled
 
	int16 engine_renew_months;               ///< months before/after the maximum vehicle age a vehicle should be renewed
 
	uint32 engine_renew_money;               ///< minimum amount of money before autorenew is used
 
	bool renew_keep_length;                  ///< sell some wagons if after autoreplace the train is longer than before
 
	VehicleDefaultSettings vehicle;          ///< default settings for vehicles
 
};
 

	
 
/** All settings together for the game. */
src/ship_cmd.cpp
Show inline comments
 
@@ -127,7 +127,7 @@ static const Depot *FindClosestShipDepot
 

	
 
static void CheckIfShipNeedsService(Vehicle *v)
 
{
 
	if (_settings_game.vehicle.servint_ships == 0 || !v->NeedsAutomaticServicing()) return;
 
	if (Company::Get(v->owner)->settings.vehicle.servint_ships == 0 || !v->NeedsAutomaticServicing()) return;
 
	if (v->IsInDepot()) {
 
		VehicleServiceInDepot(v);
 
		return;
 
@@ -805,7 +805,7 @@ CommandCost CmdBuildShip(TileIndex tile,
 
		v->name = NULL;
 
		v->state = TRACK_BIT_DEPOT;
 

	
 
		v->service_interval = _settings_game.vehicle.servint_ships;
 
		v->service_interval = Company::Get(_current_company)->settings.vehicle.servint_ships;
 
		v->date_of_last_service = _date;
 
		v->build_year = _cur_year;
 
		v->cur_image = SPR_IMG_QUERY;
src/table/settings.h
Show inline comments
 
@@ -377,11 +377,11 @@ const SettingDesc _settings[] = {
 
	     SDT_VAR(GameSettings, vehicle.max_roadveh,                 SLE_UINT16,                     0, 0,   500,     0,    5000, 0, STR_CONFIG_SETTING_MAX_ROADVEH,            RedrawScreen),
 
	     SDT_VAR(GameSettings, vehicle.max_aircraft,                SLE_UINT16,                     0, 0,   200,     0,    5000, 0, STR_CONFIG_SETTING_MAX_AIRCRAFT,           RedrawScreen),
 
	     SDT_VAR(GameSettings, vehicle.max_ships,                   SLE_UINT16,                     0, 0,   300,     0,    5000, 0, STR_CONFIG_SETTING_MAX_SHIPS,              RedrawScreen),
 
	    SDT_BOOL(GameSettings, vehicle.servint_ispercent,                                           0,NN, false,                    STR_CONFIG_SETTING_SERVINT_ISPERCENT,      CheckInterval),
 
	     SDT_VAR(GameSettings, vehicle.servint_trains,              SLE_UINT16,                     0,D0,   150,     5,     800, 0, STR_CONFIG_SETTING_SERVINT_TRAINS,         InvalidateDetailsWindow),
 
	     SDT_VAR(GameSettings, vehicle.servint_roadveh,             SLE_UINT16,                     0,D0,   150,     5,     800, 0, STR_CONFIG_SETTING_SERVINT_ROADVEH,        InvalidateDetailsWindow),
 
	     SDT_VAR(GameSettings, vehicle.servint_ships,               SLE_UINT16,                     0,D0,   360,     5,     800, 0, STR_CONFIG_SETTING_SERVINT_SHIPS,          InvalidateDetailsWindow),
 
	     SDT_VAR(GameSettings, vehicle.servint_aircraft,            SLE_UINT16,                     0,D0,   100,     5,     800, 0, STR_CONFIG_SETTING_SERVINT_AIRCRAFT,       InvalidateDetailsWindow),
 
	SDTG_CONDBOOL(NULL,             0, NN, _old_vds.servint_ispercent, false,            STR_NULL, NULL, 0, 119),
 
	SDTG_CONDVAR(NULL,  SLE_UINT16, 0, D0, _old_vds.servint_trains,      150, 5, 800, 0, STR_NULL, NULL, 0, 119),
 
	SDTG_CONDVAR(NULL,  SLE_UINT16, 0, D0, _old_vds.servint_roadveh,     150, 5, 800, 0, STR_NULL, NULL, 0, 119),
 
	SDTG_CONDVAR(NULL,  SLE_UINT16, 0, D0, _old_vds.servint_ships,       360, 5, 800, 0, STR_NULL, NULL, 0, 119),
 
	SDTG_CONDVAR(NULL,  SLE_UINT16, 0, D0, _old_vds.servint_aircraft,    150, 5, 800, 0, STR_NULL, NULL, 0, 119),
 
	    SDT_BOOL(GameSettings, order.no_servicing_if_no_breakdowns,                                 0, 0, false,                    STR_CONFIG_SETTING_NOSERVICE,              NULL),
 
	    SDT_BOOL(GameSettings, vehicle.wagon_speed_limits,                                          0,NN,  true,                    STR_CONFIG_SETTING_WAGONSPEEDLIMITS,       UpdateConsists),
 
	SDT_CONDBOOL(GameSettings, vehicle.disable_elrails,                         38, SL_MAX_VERSION, 0,NN, false,                    STR_CONFIG_SETTING_DISABLE_ELRAILS,        SettingsDisableElrail),
 
@@ -615,10 +615,15 @@ const SettingDesc _settings[] = {
 
};
 

	
 
static const SettingDesc _company_settings[] = {
 
	SDT_BOOL(CompanySettings, engine_renew,                     0, PC, false,                        STR_CONFIG_SETTING_AUTORENEW_VEHICLE, NULL),
 
	 SDT_VAR(CompanySettings, engine_renew_months,   SLE_INT16, 0, PC,     6,      -12,       12, 0, STR_CONFIG_SETTING_AUTORENEW_MONTHS,  NULL),
 
	 SDT_VAR(CompanySettings, engine_renew_money,     SLE_UINT, 0, PC|CR,100000,     0,  2000000, 0, STR_CONFIG_SETTING_AUTORENEW_MONEY,   NULL),
 
	SDT_BOOL(CompanySettings, renew_keep_length,                0, PC, false,                        STR_NULL,                             NULL),
 
	SDT_BOOL(CompanySettings, engine_renew,                          0, PC,     false,                  STR_CONFIG_SETTING_AUTORENEW_VEHICLE, NULL),
 
	 SDT_VAR(CompanySettings, engine_renew_months,        SLE_INT16, 0, PC,         6, -12,      12, 0, STR_CONFIG_SETTING_AUTORENEW_MONTHS,  NULL),
 
	 SDT_VAR(CompanySettings, engine_renew_money,          SLE_UINT, 0, PC|CR, 100000,   0, 2000000, 0, STR_CONFIG_SETTING_AUTORENEW_MONEY,   NULL),
 
	SDT_BOOL(CompanySettings, renew_keep_length,                     0, PC,     false,                  STR_NULL,                             NULL),
 
	SDT_BOOL(CompanySettings, vehicle.servint_ispercent,             0, PC,     false,                  STR_CONFIG_SETTING_SERVINT_ISPERCENT, CheckInterval),
 
	 SDT_VAR(CompanySettings, vehicle.servint_trains,    SLE_UINT16, 0, PC|D0,    150,   5,     800, 0, STR_CONFIG_SETTING_SERVINT_TRAINS,    InvalidateDetailsWindow),
 
	 SDT_VAR(CompanySettings, vehicle.servint_roadveh,   SLE_UINT16, 0, PC|D0,    150,   5,     800, 0, STR_CONFIG_SETTING_SERVINT_ROADVEH,   InvalidateDetailsWindow),
 
	 SDT_VAR(CompanySettings, vehicle.servint_ships,     SLE_UINT16, 0, PC|D0,    360,   5,     800, 0, STR_CONFIG_SETTING_SERVINT_SHIPS,     InvalidateDetailsWindow),
 
	 SDT_VAR(CompanySettings, vehicle.servint_aircraft,  SLE_UINT16, 0, PC|D0,    100,   5,     800, 0, STR_CONFIG_SETTING_SERVINT_AIRCRAFT,  InvalidateDetailsWindow),
 
	SDT_END()
 
};
 

	
src/train_cmd.cpp
Show inline comments
 
@@ -858,7 +858,7 @@ CommandCost CmdBuildRailVehicle(TileInde
 
		v->railtype = rvi->railtype;
 
		_new_vehicle_id = v->index;
 

	
 
		v->service_interval = _settings_game.vehicle.servint_trains;
 
		v->service_interval = Company::Get(_current_company)->settings.vehicle.servint_trains;
 
		v->date_of_last_service = _date;
 
		v->build_year = _cur_year;
 
		v->cur_image = SPR_IMG_QUERY;
 
@@ -4464,7 +4464,7 @@ static void CheckIfTrainNeedsService(Tra
 
{
 
	static const uint MAX_ACCEPTABLE_DEPOT_DIST = 16;
 

	
 
	if (_settings_game.vehicle.servint_trains == 0 || !v->NeedsAutomaticServicing()) return;
 
	if (Company::Get(v->owner)->settings.vehicle.servint_trains == 0 || !v->NeedsAutomaticServicing()) return;
 
	if (v->IsInDepot()) {
 
		VehicleServiceInDepot(v);
 
		return;
src/vehicle.cpp
Show inline comments
 
@@ -90,7 +90,7 @@ bool Vehicle::NeedsServicing() const
 
		return EngineHasReplacementForCompany(Company::Get(this->owner), this->engine_type, this->group_id);
 
	}
 

	
 
	return _settings_game.vehicle.servint_ispercent ?
 
	return Company::Get(this->owner)->settings.vehicle.servint_ispercent ?
 
		(this->reliability < Engine::Get(this->engine_type)->reliability * (100 - this->service_interval) / 100) :
 
		(this->date_of_last_service + this->service_interval < _date);
 
}
src/vehicle_cmd.cpp
Show inline comments
 
@@ -558,10 +558,11 @@ CommandCost CmdRenameVehicle(TileIndex t
 
 */
 
CommandCost CmdChangeServiceInt(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 
{
 
	uint16 serv_int = GetServiceIntervalClamped(p2); // Double check the service interval from the user-input
 
	Vehicle *v = Vehicle::GetIfValid(p1);
 
	if (v == NULL || !CheckOwnership(v->owner)) return CMD_ERROR;
 

	
 
	if (serv_int != p2 || v == NULL || !CheckOwnership(v->owner)) return CMD_ERROR;
 
	uint16 serv_int = GetServiceIntervalClamped(p2, v->owner); // Double check the service interval from the user-input
 
	if (serv_int != p2) return CMD_ERROR;
 

	
 
	if (flags & DC_EXEC) {
 
		v->service_interval = serv_int;
src/vehicle_gui.cpp
Show inline comments
 
@@ -1389,14 +1389,15 @@ struct VehicleDetailsWindow : Window {
 
	}
 

	
 
	/** Checks whether service interval is enabled for the vehicle. */
 
	static bool IsVehicleServiceIntervalEnabled(const VehicleType vehicle_type)
 
	static bool IsVehicleServiceIntervalEnabled(const VehicleType vehicle_type, CompanyID company_id)
 
	{
 
		const VehicleDefaultSettings *vds = &Company::Get(company_id)->settings.vehicle;
 
		switch (vehicle_type) {
 
			default: NOT_REACHED();
 
			case VEH_TRAIN:    return _settings_game.vehicle.servint_trains   != 0;
 
			case VEH_ROAD:     return _settings_game.vehicle.servint_roadveh  != 0;
 
			case VEH_SHIP:     return _settings_game.vehicle.servint_ships    != 0;
 
			case VEH_AIRCRAFT: return _settings_game.vehicle.servint_aircraft != 0;
 
			case VEH_TRAIN:    return vds->servint_trains   != 0;
 
			case VEH_ROAD:     return vds->servint_roadveh  != 0;
 
			case VEH_SHIP:     return vds->servint_ships    != 0;
 
			case VEH_AIRCRAFT: return vds->servint_aircraft != 0;
 
		}
 
	}
 

	
 
@@ -1445,7 +1446,7 @@ struct VehicleDetailsWindow : Window {
 
			WIDGET_LIST_END);
 

	
 
		/* Disable service-scroller when interval is set to disabled */
 
		this->SetWidgetsDisabledState(!IsVehicleServiceIntervalEnabled(v->type),
 
		this->SetWidgetsDisabledState(!IsVehicleServiceIntervalEnabled(v->type, v->owner),
 
			VLD_WIDGET_INCREASE_SERVICING_INTERVAL,
 
			VLD_WIDGET_DECREASE_SERVICING_INTERVAL,
 
			WIDGET_LIST_END);
 
@@ -1496,7 +1497,7 @@ struct VehicleDetailsWindow : Window {
 
		/* Draw service interval text */
 
		SetDParam(0, v->service_interval);
 
		SetDParam(1, v->date_of_last_service);
 
		DrawString(13, this->width - 2, this->height - (v->type != VEH_TRAIN ? 11 : 23), _settings_game.vehicle.servint_ispercent ? STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT : STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS);
 
		DrawString(13, this->width - 2, this->height - (v->type != VEH_TRAIN ? 11 : 23), Company::Get(v->owner)->settings.vehicle.servint_ispercent ? STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT : STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS);
 

	
 
		switch (v->type) {
 
			case VEH_TRAIN:
 
@@ -1537,7 +1538,7 @@ struct VehicleDetailsWindow : Window {
 
				const Vehicle *v = Vehicle::Get(this->window_number);
 

	
 
				mod = (widget == VLD_WIDGET_DECREASE_SERVICING_INTERVAL) ? -mod : mod;
 
				mod = GetServiceIntervalClamped(mod + v->service_interval);
 
				mod = GetServiceIntervalClamped(mod + v->service_interval, v->owner);
 
				if (mod == v->service_interval) return;
 

	
 
				DoCommandP(v->tile, v->index, mod, CMD_CHANGE_SERVICE_INT | CMD_MSG(STR_ERROR_CAN_T_CHANGE_SERVICING));
0 comments (0 inline, 0 general)