Changeset - r11908:0875f47fab11
[Not reviewed]
master
0 15 0
yexo - 15 years ago 2009-05-15 23:55:06
yexo@openttd.org
(svn r16315) -Codechange: move the autorenew settings to a new CompanySettings struct
15 files changed with 68 insertions and 69 deletions:
0 comments (0 inline, 0 general)
src/ai/api/ai_company.cpp
Show inline comments
 
@@ -156,7 +156,7 @@
 
	company = ResolveCompanyID(company);
 
	if (company == COMPANY_INVALID) return false;
 

	
 
	return ::GetCompany((CompanyID)company)->engine_renew;
 
	return ::GetCompany((CompanyID)company)->settings.engine_renew;
 
}
 

	
 
/* static */ bool AICompany::SetAutoRenewMonths(int16 months)
 
@@ -169,7 +169,7 @@
 
	company = ResolveCompanyID(company);
 
	if (company == COMPANY_INVALID) return 0;
 

	
 
	return ::GetCompany((CompanyID)company)->engine_renew_months;
 
	return ::GetCompany((CompanyID)company)->settings.engine_renew_months;
 
}
 

	
 
/* static */ bool AICompany::SetAutoRenewMoney(uint32 money)
 
@@ -182,5 +182,5 @@
 
	company = ResolveCompanyID(company);
 
	if (company == COMPANY_INVALID) return 0;
 

	
 
	return ::GetCompany((CompanyID)company)->engine_renew_money;
 
	return ::GetCompany((CompanyID)company)->settings.engine_renew_money;
 
}
src/ai/api/ai_group.cpp
Show inline comments
 
@@ -100,7 +100,7 @@
 

	
 
/* static */ bool AIGroup::HasWagonRemoval()
 
{
 
	return ::GetCompany(_current_company)->renew_keep_length;
 
	return ::GetCompany(_current_company)->settings.renew_keep_length;
 
}
 

	
 
/* static */ bool AIGroup::SetAutoReplace(GroupID group_id, EngineID engine_id_old, EngineID engine_id_new)
src/aircraft_cmd.cpp
Show inline comments
 
@@ -1448,7 +1448,7 @@ static inline bool CheckSendAircraftToHa
 
		return false;
 
	}
 

	
 
	if (c->money < (c->engine_renew_money + (2 * DoCommand(0, new_engine, 0, DC_QUERY_COST, CMD_BUILD_AIRCRAFT).GetCost()))) {
 
	if (c->money < (c->settings.engine_renew_money + (2 * DoCommand(0, new_engine, 0, DC_QUERY_COST, CMD_BUILD_AIRCRAFT).GetCost()))) {
 
		/* We lack enough money to request the replacement right away.
 
		 * We want 2*(the price of the new vehicle) and not looking at the value of the vehicle we are going to sell.
 
		 * The reason is that we don't want to send a whole lot of vehicles to the hangars when we only have enough money to replace a single one.
src/autoreplace_cmd.cpp
Show inline comments
 
@@ -624,7 +624,7 @@ CommandCost CmdAutoreplaceVehicle(TileIn
 
	}
 

	
 
	const Company *c = GetCompany(_current_company);
 
	bool wagon_removal = c->renew_keep_length;
 
	bool wagon_removal = c->settings.renew_keep_length;
 

	
 
	/* Test whether any replacement is set, before issuing a whole lot of commands that would end in nothing changed */
 
	Vehicle *w = v;
src/autoreplace_gui.cpp
Show inline comments
 
@@ -267,7 +267,7 @@ public:
 

	
 
		if (this->window_number == VEH_TRAIN) {
 
			/* set on/off for renew_keep_length */
 
			SetDParam(1, c->renew_keep_length ? STR_CONFIG_SETTING_ON : STR_CONFIG_SETTING_OFF);
 
			SetDParam(1, c->settings.renew_keep_length ? STR_CONFIG_SETTING_ON : STR_CONFIG_SETTING_OFF);
 

	
 
			/* set wagon/engine button */
 
			SetDParam(2, this->wagon_btnstate ? STR_ENGINES : STR_WAGONS);
 
@@ -347,7 +347,7 @@ public:
 
			}
 

	
 
			case RVW_WIDGET_TRAIN_WAGONREMOVE_TOGGLE: // toggle renew_keep_length
 
				DoCommandP(0, 5, GetCompany(_local_company)->renew_keep_length ? 0 : 1, CMD_SET_AUTOREPLACE);
 
				DoCommandP(0, 5, GetCompany(_local_company)->settings.renew_keep_length ? 0 : 1, CMD_SET_AUTOREPLACE);
 
				break;
 

	
 
			case RVW_WIDGET_START_REPLACE: { // Start replacing
src/company_base.h
Show inline comments
 
@@ -15,6 +15,7 @@
 
#include "autoreplace_type.h"
 
#include "economy_type.h"
 
#include "tile_type.h"
 
#include "settings_type.h"
 

	
 
struct CompanyEconomyEntry {
 
	Money income;
 
@@ -78,10 +79,7 @@ struct Company : PoolItem<Company, Compa
 
	CompanyEconomyEntry cur_economy;
 
	CompanyEconomyEntry old_economy[24];
 
	EngineRenewList engine_renew_list; ///< Defined later
 
	bool engine_renew;
 
	bool renew_keep_length;
 
	int16 engine_renew_months;
 
	uint32 engine_renew_money;
 
	CompanySettings settings;          ///< settings specific for each company
 
	uint16 *num_engines; ///< caches the number of engines of each type the company owns (no need to save this)
 

	
 
	inline bool IsValid() const { return this->name_1 != 0; }
src/company_cmd.cpp
Show inline comments
 
@@ -78,9 +78,7 @@ void SetLocalCompany(CompanyID new_compa
 
	/* Do not update the settings if we are in the intro GUI */
 
	if (IsValidCompanyID(new_company) && _game_mode != GM_MENU) {
 
		const Company *c = GetCompany(new_company);
 
		_settings_client.gui.autorenew        = c->engine_renew;
 
		_settings_client.gui.autorenew_months = c->engine_renew_months;
 
		_settings_client.gui.autorenew_money  = c->engine_renew_money;
 
		_settings_client.company = c->settings;
 
		InvalidateWindow(WC_GAME_OPTIONS, 0);
 
	}
 

	
 
@@ -568,12 +566,12 @@ CommandCost CmdSetAutoReplace(TileIndex 
 
	Company *c = GetCompany(_current_company);
 
	switch (GB(p1, 0, 3)) {
 
		case 0:
 
			if (c->engine_renew == HasBit(p2, 0)) return CMD_ERROR;
 
			if (c->settings.engine_renew == HasBit(p2, 0)) return CMD_ERROR;
 

	
 
			if (flags & DC_EXEC) {
 
				c->engine_renew = HasBit(p2, 0);
 
				c->settings.engine_renew = HasBit(p2, 0);
 
				if (IsLocalCompany()) {
 
					_settings_client.gui.autorenew = c->engine_renew;
 
					_settings_client.company.engine_renew = c->settings.engine_renew;
 
					InvalidateWindow(WC_GAME_OPTIONS, 0);
 
				}
 
			}
 
@@ -581,12 +579,12 @@ CommandCost CmdSetAutoReplace(TileIndex 
 

	
 
		case 1:
 
			if (Clamp((int16)p2, -12, 12) != (int16)p2) return CMD_ERROR;
 
			if (c->engine_renew_months == (int16)p2) return CMD_ERROR;
 
			if (c->settings.engine_renew_months == (int16)p2) return CMD_ERROR;
 

	
 
			if (flags & DC_EXEC) {
 
				c->engine_renew_months = (int16)p2;
 
				c->settings.engine_renew_months = (int16)p2;
 
				if (IsLocalCompany()) {
 
					_settings_client.gui.autorenew_months = c->engine_renew_months;
 
					_settings_client.company.engine_renew_months = c->settings.engine_renew_months;
 
					InvalidateWindow(WC_GAME_OPTIONS, 0);
 
				}
 
			}
 
@@ -594,12 +592,12 @@ CommandCost CmdSetAutoReplace(TileIndex 
 

	
 
		case 2:
 
			if (ClampU(p2, 0, 2000000) != p2) return CMD_ERROR;
 
			if (c->engine_renew_money == p2) return CMD_ERROR;
 
			if (c->settings.engine_renew_money == p2) return CMD_ERROR;
 

	
 
			if (flags & DC_EXEC) {
 
				c->engine_renew_money = p2;
 
				c->settings.engine_renew_money = p2;
 
				if (IsLocalCompany()) {
 
					_settings_client.gui.autorenew_money = c->engine_renew_money;
 
					_settings_client.company.engine_renew_money = c->settings.engine_renew_money;
 
					InvalidateWindow(WC_GAME_OPTIONS, 0);
 
				}
 
			}
 
@@ -630,24 +628,24 @@ CommandCost CmdSetAutoReplace(TileIndex 
 
			if (ClampU(p2, 0, 2000000) != p2) return CMD_ERROR;
 

	
 
			if (flags & DC_EXEC) {
 
				c->engine_renew = HasBit(p1, 15);
 
				c->engine_renew_months = (int16)GB(p1, 16, 16);
 
				c->engine_renew_money = p2;
 
				c->settings.engine_renew = HasBit(p1, 15);
 
				c->settings.engine_renew_months = (int16)GB(p1, 16, 16);
 
				c->settings.engine_renew_money = p2;
 

	
 
				if (IsLocalCompany()) {
 
					_settings_client.gui.autorenew = c->engine_renew;
 
					_settings_client.gui.autorenew_months = c->engine_renew_months;
 
					_settings_client.gui.autorenew_money = c->engine_renew_money;
 
					_settings_client.company.engine_renew = c->settings.engine_renew;
 
					_settings_client.company.engine_renew_months = c->settings.engine_renew_months;
 
					_settings_client.company.engine_renew_money = c->settings.engine_renew_money;
 
					InvalidateWindow(WC_GAME_OPTIONS, 0);
 
				}
 
			}
 
			break;
 

	
 
		case 5:
 
			if (c->renew_keep_length == HasBit(p2, 0)) return CMD_ERROR;
 
			if (c->settings.renew_keep_length == HasBit(p2, 0)) return CMD_ERROR;
 

	
 
			if (flags & DC_EXEC) {
 
				c->renew_keep_length = HasBit(p2, 0);
 
				c->settings.renew_keep_length = HasBit(p2, 0);
 
				if (IsLocalCompany()) {
 
					InvalidateWindow(WC_REPLACE_VEHICLE, VEH_TRAIN);
 
				}
 
@@ -750,8 +748,8 @@ CommandCost CmdCompanyCtrl(TileIndex til
 
			/* This is the client (or non-dedicated server) who wants a new company */
 
			if (cid == _network_own_client_id) {
 
				/* Create p1 and p2 here because SetLocalCompany resets the gui.autorenew* settings. */
 
				uint32 p1 = (_settings_client.gui.autorenew << 15 ) | (_settings_client.gui.autorenew_months << 16) | 4;
 
				uint32 p2 = _settings_client.gui.autorenew_money;
 
				uint32 p1 = (_settings_client.company.engine_renew << 15 ) | (_settings_client.company.engine_renew_months << 16) | 4;
 
				uint32 p2 = _settings_client.company.engine_renew_money;
 
				assert(_local_company == COMPANY_SPECTATOR);
 
				SetLocalCompany(c->index);
 
				if (!StrEmpty(_settings_client.network.default_company_pass)) {
src/openttd.cpp
Show inline comments
 
@@ -755,15 +755,12 @@ static void MakeNewGameDone()
 
	DoStartupNewCompany(false);
 

	
 
	Company *c = GetCompany(COMPANY_FIRST);
 
	c->engine_renew = _settings_client.gui.autorenew;
 
	c->engine_renew_months = _settings_client.gui.autorenew_months;
 
	c->engine_renew_money = _settings_client.gui.autorenew_money;
 
	c->settings = _settings_client.company;
 

	
 
	IConsoleCmdExec("exec scripts/game_start.scr 0");
 

	
 
	SetLocalCompany(COMPANY_FIRST);
 
	_current_company = _local_company;
 
	DoCommandP(0, (_settings_client.gui.autorenew << 15 ) | (_settings_client.gui.autorenew_months << 16) | 4, _settings_client.gui.autorenew_money, CMD_SET_AUTOREPLACE);
 

	
 
	InitializeRailGUI();
 

	
 
@@ -854,7 +851,8 @@ static void StartScenario()
 

	
 
	SetLocalCompany(COMPANY_FIRST);
 
	_current_company = _local_company;
 
	DoCommandP(0, (_settings_client.gui.autorenew << 15 ) | (_settings_client.gui.autorenew_months << 16) | 4, _settings_client.gui.autorenew_money, CMD_SET_AUTOREPLACE);
 
	Company *c = GetCompany(COMPANY_FIRST);
 
	c->settings = _settings_client.company;
 

	
 
	MarkWholeScreenDirty();
 
}
src/saveload/afterload.cpp
Show inline comments
 
@@ -661,10 +661,10 @@ bool AfterLoadGame()
 
	 *  of course, we do need to initialize them for older savegames. */
 
	if (CheckSavegameVersion(16)) {
 
		FOR_ALL_COMPANIES(c) {
 
			c->engine_renew_list   = NULL;
 
			c->engine_renew        = false;
 
			c->engine_renew_months = -6;
 
			c->engine_renew_money  = 100000;
 
			c->engine_renew_list            = NULL;
 
			c->settings.engine_renew        = false;
 
			c->settings.engine_renew_months = 6;
 
			c->settings.engine_renew_money  = 100000;
 
		}
 

	
 
		/* When loading a game, _local_company is not yet set to the correct value.
 
@@ -675,9 +675,7 @@ bool AfterLoadGame()
 
		 */
 
		if (!_network_dedicated && IsValidCompanyID(COMPANY_FIRST)) {
 
			c = GetCompany(COMPANY_FIRST);
 
			c->engine_renew        = _settings_client.gui.autorenew;
 
			c->engine_renew_months = _settings_client.gui.autorenew_months;
 
			c->engine_renew_money  = _settings_client.gui.autorenew_money;
 
			c->settings = _settings_client.company;
 
		}
 
	}
 

	
 
@@ -950,7 +948,7 @@ bool AfterLoadGame()
 
	 * replaced, shall keep their old length. In all prior versions, just default
 
	 * to false */
 
	if (CheckSavegameVersionOldStyle(16, 1)) {
 
		FOR_ALL_COMPANIES(c) c->renew_keep_length = false;
 
		FOR_ALL_COMPANIES(c) c->settings.renew_keep_length = false;
 
	}
 

	
 
	/* In version 17, ground type is moved from m2 to m4 for depots and
src/saveload/company_sl.cpp
Show inline comments
 
@@ -6,6 +6,7 @@
 
#include "../company_base.h"
 
#include "../company_func.h"
 
#include "../company_manager_face.h"
 
#include "../settings_type.h"
 

	
 
#include "saveload.h"
 

	
 
@@ -133,11 +134,11 @@ static const SaveLoad _company_desc[] = 
 

	
 
	/* Engine renewal settings */
 
	SLE_CONDNULL(512, 16, 18),
 
	SLE_CONDREF(Company, engine_renew_list,     REF_ENGINE_RENEWS,          19, SL_MAX_VERSION),
 
	SLE_CONDVAR(Company, engine_renew,          SLE_BOOL,                   16, SL_MAX_VERSION),
 
	SLE_CONDVAR(Company, engine_renew_months,   SLE_INT16,                  16, SL_MAX_VERSION),
 
	SLE_CONDVAR(Company, engine_renew_money,    SLE_UINT32,                 16, SL_MAX_VERSION),
 
	SLE_CONDVAR(Company, renew_keep_length,     SLE_BOOL,                    2, SL_MAX_VERSION), // added with 16.1, but was blank since 2
 
	SLE_CONDREF(Company, engine_renew_list,            REF_ENGINE_RENEWS,   19, SL_MAX_VERSION),
 
	SLE_CONDVAR(Company, settings.engine_renew,        SLE_BOOL,            16, SL_MAX_VERSION),
 
	SLE_CONDVAR(Company, settings.engine_renew_months, SLE_INT16,           16, SL_MAX_VERSION),
 
	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),
 

	
 
	/* Reserve extra space in savegame here. (currently 63 bytes) */
 
	SLE_CONDNULL(63, 2, SL_MAX_VERSION),
src/settings.cpp
Show inline comments
 
@@ -726,19 +726,19 @@ static bool CheckInterval(int32 p1)
 

	
 
static bool EngineRenewUpdate(int32 p1)
 
{
 
	DoCommandP(0, 0, _settings_client.gui.autorenew, CMD_SET_AUTOREPLACE);
 
	DoCommandP(0, 0, _settings_client.company.engine_renew, CMD_SET_AUTOREPLACE);
 
	return true;
 
}
 

	
 
static bool EngineRenewMonthsUpdate(int32 p1)
 
{
 
	DoCommandP(0, 1, _settings_client.gui.autorenew_months, CMD_SET_AUTOREPLACE);
 
	DoCommandP(0, 1, _settings_client.company.engine_renew_months, CMD_SET_AUTOREPLACE);
 
	return true;
 
}
 

	
 
static bool EngineRenewMoneyUpdate(int32 p1)
 
{
 
	DoCommandP(0, 2, _settings_client.gui.autorenew_money, CMD_SET_AUTOREPLACE);
 
	DoCommandP(0, 2, _settings_client.company.engine_renew_money, CMD_SET_AUTOREPLACE);
 
	return true;
 
}
 

	
src/settings_gui.cpp
Show inline comments
 
@@ -1254,9 +1254,9 @@ static SettingEntry _settings_vehicles_r
 
static SettingsPage _settings_vehicles_routing_page = {_settings_vehicles_routing, lengthof(_settings_vehicles_routing)};
 

	
 
static SettingEntry _settings_vehicles_autorenew[] = {
 
	SettingEntry("gui.autorenew"),
 
	SettingEntry("gui.autorenew_months"),
 
	SettingEntry("gui.autorenew_money"),
 
	SettingEntry("company.engine_renew"),
 
	SettingEntry("company.engine_renew_months"),
 
	SettingEntry("company.engine_renew_money"),
 
};
 
/** Autorenew sub-page */
 
static SettingsPage _settings_vehicles_autorenew_page = {_settings_vehicles_autorenew, lengthof(_settings_vehicles_autorenew)};
src/settings_type.h
Show inline comments
 
@@ -78,9 +78,6 @@ struct GUISettings {
 
	bool   auto_euro;                        ///< automatically switch to euro in 2002
 
	byte   drag_signals_density;             ///< many signals density
 
	Year   semaphore_build_before;           ///< build semaphore signals automatically before this year
 
	bool   autorenew;                        ///< should autorenew be enabled for new companies?
 
	int16  autorenew_months;                 ///< how many months from EOL of vehicles should autorenew trigger for new companies?
 
	int32  autorenew_money;                  ///< how much money before autorenewing for new companies?
 
	byte   news_message_timeout;             ///< how much longer than the news message "age" should we keep the message in the history
 
	bool   show_track_reservation;           ///< highlight reserved tracks.
 
	uint8  default_signal_type;              ///< the signal type to build by default.
 
@@ -341,6 +338,14 @@ struct StationSettings {
 
	byte   station_spread;                   ///< amount a station may spread
 
};
 

	
 
/** 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
 
};
 

	
 
/** All settings together for the game. */
 
struct GameSettings {
 
	DifficultySettings   difficulty;         ///< settings related to the difficulty
 
@@ -360,6 +365,7 @@ struct GameSettings {
 
struct ClientSettings {
 
	GUISettings          gui;                ///< settings related to the GUI
 
	NetworkSettings      network;            ///< settings related to the network
 
	CompanySettings      company;            ///< default values for per-company settings
 
};
 

	
 
/** The current settings for this game. */
src/table/settings.h
Show inline comments
 
@@ -547,9 +547,9 @@ const SettingDesc _settings[] = {
 
	 SDTC_BOOL(gui.vehicle_income_warn,                  S,  0,  true,                        STR_CONFIG_SETTING_WARN_INCOME_LESS,            NULL),
 
	  SDTC_VAR(gui.order_review_system,       SLE_UINT8, S, MS,     2,        0,        2, 0, STR_CONFIG_SETTING_ORDER_REVIEW,                NULL),
 
	 SDTC_BOOL(gui.lost_train_warn,                      S,  0,  true,                        STR_CONFIG_SETTING_WARN_LOST_TRAIN,             NULL),
 
	 SDTC_BOOL(gui.autorenew,                            S,  0, false,                        STR_CONFIG_SETTING_AUTORENEW_VEHICLE,           EngineRenewUpdate),
 
	  SDTC_VAR(gui.autorenew_months,          SLE_INT16, S,  0,     6,      -12,       12, 0, STR_CONFIG_SETTING_AUTORENEW_MONTHS,            EngineRenewMonthsUpdate),
 
	  SDTC_VAR(gui.autorenew_money,            SLE_UINT, S, CR,100000,        0,  2000000, 0, STR_CONFIG_SETTING_AUTORENEW_MONEY,             EngineRenewMoneyUpdate),
 
	 SDTC_BOOL(company.engine_renew,                     S,  0, false,                        STR_CONFIG_SETTING_AUTORENEW_VEHICLE,           EngineRenewUpdate),
 
	  SDTC_VAR(company.engine_renew_months,   SLE_INT16, S,  0,     6,      -12,       12, 0, STR_CONFIG_SETTING_AUTORENEW_MONTHS,            EngineRenewMonthsUpdate),
 
	  SDTC_VAR(company.engine_renew_money,     SLE_UINT, S, CR,100000,        0,  2000000, 0, STR_CONFIG_SETTING_AUTORENEW_MONEY,             EngineRenewMoneyUpdate),
 
	 SDTC_BOOL(gui.always_build_infrastructure,          S,  0, false,                        STR_CONFIG_SETTING_ALWAYS_BUILD_INFRASTRUCTURE, RedrawScreen),
 
	 SDTC_BOOL(gui.new_nonstop,                          S,  0, false,                        STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT,          NULL),
 
	  SDTC_VAR(gui.stop_location,             SLE_UINT8, S, MS,     2,        0,        2, 1, STR_CONFIG_SETTING_STOP_LOCATION,               NULL),
src/vehicle.cpp
Show inline comments
 
@@ -64,8 +64,8 @@ bool Vehicle::NeedsAutorenewing(const Co
 
	 * argument rather than finding it again. */
 
	assert(c == GetCompany(this->owner));
 

	
 
	if (!c->engine_renew) return false;
 
	if (this->age - this->max_age < (c->engine_renew_months * 30)) return false;
 
	if (!c->settings.engine_renew) return false;
 
	if (this->age - this->max_age < (c->settings.engine_renew_months * 30)) return false;
 
	if (this->age == 0) return false; // rail cars don't age and lacks a max age
 

	
 
	return true;
 
@@ -642,9 +642,9 @@ void CallVehicleTicks()
 
		int z = v->z_pos;
 

	
 
		const Company *c = GetCompany(_current_company);
 
		SubtractMoneyFromCompany(CommandCost(EXPENSES_NEW_VEHICLES, (Money)c->engine_renew_money));
 
		SubtractMoneyFromCompany(CommandCost(EXPENSES_NEW_VEHICLES, (Money)c->settings.engine_renew_money));
 
		CommandCost res = DoCommand(0, v->index, 0, DC_EXEC, CMD_AUTOREPLACE_VEHICLE);
 
		SubtractMoneyFromCompany(CommandCost(EXPENSES_NEW_VEHICLES, -(Money)c->engine_renew_money));
 
		SubtractMoneyFromCompany(CommandCost(EXPENSES_NEW_VEHICLES, -(Money)c->settings.engine_renew_money));
 

	
 
		if (!IsLocalCompany()) continue;
 

	
 
@@ -906,7 +906,7 @@ void AgeVehicle(Vehicle *v)
 
	if (v->Previous() != NULL || v->owner != _local_company || (v->vehstatus & VS_CRASHED) != 0) return;
 

	
 
	/* Don't warn if a renew is active */
 
	if (GetCompany(v->owner)->engine_renew && GetEngine(v->engine_type)->company_avail != 0) return;
 
	if (GetCompany(v->owner)->settings.engine_renew && GetEngine(v->engine_type)->company_avail != 0) return;
 

	
 
	StringID str;
 
	if (age == -DAYS_IN_LEAP_YEAR) {
0 comments (0 inline, 0 general)