OpenTTD
|
Base for all engine handling. More...
#include "stdafx.h"
#include "company_func.h"
#include "command_func.h"
#include "news_func.h"
#include "aircraft.h"
#include "newgrf.h"
#include "newgrf_engine.h"
#include "strings_func.h"
#include "core/random_func.hpp"
#include "window_func.h"
#include "date_func.h"
#include "autoreplace_gui.h"
#include "string_func.h"
#include "ai/ai.hpp"
#include "core/pool_func.hpp"
#include "engine_gui.h"
#include "engine_func.h"
#include "engine_base.h"
#include "company_base.h"
#include "vehicle_func.h"
#include "articulated_vehicles.h"
#include "error.h"
#include "table/strings.h"
#include "table/engines.h"
#include "safeguards.h"
Go to the source code of this file.
Functions | |
assert_compile (lengthof(_orig_rail_vehicle_info)+lengthof(_orig_road_vehicle_info)+lengthof(_orig_ship_vehicle_info)+lengthof(_orig_aircraft_vehicle_info)==lengthof(_orig_engine_info)) | |
void | SetupEngines () |
Initialise the engine pool with the data from the original vehicles. | |
void | ShowEnginePreviewWindow (EngineID engine) |
static bool | IsWagon (EngineID index) |
Determine whether an engine type is a wagon (and not a loco). More... | |
static void | CalcEngineReliability (Engine *e) |
Update #reliability of engine e, (if needed) update the engine GUIs. More... | |
void | SetYearEngineAgingStops () |
Compute the value for _year_engine_aging_stops. More... | |
void | StartupOneEngine (Engine *e, Date aging_date) |
Start/initialise one engine. More... | |
void | StartupEngines () |
Start/initialise all our engines. More... | |
static void | AcceptEnginePreview (EngineID eid, CompanyID company) |
Company company accepts engine eid for preview. More... | |
static CompanyID | GetPreviewCompany (Engine *e) |
Get the best company for an engine preview. More... | |
static bool | IsVehicleTypeDisabled (VehicleType type, bool ai) |
Checks if a vehicle type is disabled for all/ai companies. More... | |
void | EnginesDailyLoop () |
Daily check to offer an exclusive engine preview to the companies. More... | |
void | ClearEnginesHiddenFlagOfCompany (CompanyID cid) |
Clear the 'hidden' flag for all engines of a new company. More... | |
CommandCost | CmdSetVehicleVisibility (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
Set the visibility of an engine. More... | |
CommandCost | CmdWantEnginePreview (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
Accept an engine prototype. More... | |
static void | NewVehicleAvailable (Engine *e) |
An engine has become available for general use. More... | |
void | EnginesMonthlyLoop () |
Monthly update of the availability, reliability, and preview offers of the engines. More... | |
static bool | IsUniqueEngineName (const char *name) |
Is name still free as name for an engine? More... | |
CommandCost | CmdRenameEngine (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
Rename an engine. More... | |
bool | IsEngineBuildable (EngineID engine, VehicleType type, CompanyID company) |
Check if an engine is buildable. More... | |
bool | IsEngineRefittable (EngineID engine) |
Check if an engine is refittable. More... | |
void | CheckEngines () |
Check for engines that have an appropriate availability. | |
Variables | |
EnginePool | _engine_pool ("Engine") |
EngineOverrideManager | _engine_mngr |
static Year | _year_engine_aging_stops |
Year that engine aging stops. More... | |
const uint8 | _engine_counts [4] |
Number of engines of each vehicle type in original engine data. More... | |
const uint8 | _engine_offsets [4] |
Offset of the first engine of each vehicle type in original engine data. More... | |
Base for all engine handling.
Definition in file engine.cpp.
Company company accepts engine eid for preview.
eid | Engine being accepted (is under preview). |
company | Current company previewing the engine. |
Definition at line 714 of file engine.cpp.
References Engine::company_avail, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), SetBit(), Engine::type, and VEH_TRAIN.
Referenced by CmdWantEnginePreview().
|
static |
Update #reliability of engine e, (if needed) update the engine GUIs.
e | Engine to update. |
Definition at line 579 of file engine.cpp.
References _settings_game, AddRemoveEngineFromAutoreplaceAndBuildWindows(), EngineInfo::base_life, Engine::company_avail, Engine::duration_phase_1, Engine::duration_phase_2, Engine::duration_phase_3, max(), VehicleSettings::never_expire_vehicles, Engine::reliability, Engine::reliability_final, Engine::reliability_max, Engine::reliability_start, EngineInfo::retire_early, SetWindowClassesDirty(), Engine::type, GameSettings::vehicle, WC_BUILD_VEHICLE, and WC_REPLACE_VEHICLE.
void ClearEnginesHiddenFlagOfCompany | ( | CompanyID | cid | ) |
Clear the 'hidden' flag for all engines of a new company.
cid | Company being created. |
Definition at line 843 of file engine.cpp.
CommandCost CmdRenameEngine | ( | TileIndex | tile, |
DoCommandFlag | flags, | ||
uint32 | p1, | ||
uint32 | p2, | ||
const char * | text | ||
) |
Rename an engine.
tile | unused |
flags | operation to perform |
p1 | engine ID to rename |
p2 | unused |
text | the new name or an empty string when resetting to the default |
Definition at line 1030 of file engine.cpp.
References CMD_ERROR, DC_EXEC, free(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::GetIfValid(), IsUniqueEngineName(), MarkWholeScreenDirty(), MAX_LENGTH_ENGINE_NAME_CHARS, Engine::name, return_cmd_error, stredup(), StrEmpty(), and Utf8StringLength().
CommandCost CmdSetVehicleVisibility | ( | TileIndex | tile, |
DoCommandFlag | flags, | ||
uint32 | p1, | ||
uint32 | p2, | ||
const char * | text | ||
) |
Set the visibility of an engine.
tile | Unused. |
flags | Operation to perform. |
p1 | Unused. |
p2 | Bit 31: 0=visible, 1=hidden, other bits for the EngineID. |
text | Unused. |
Definition at line 860 of file engine.cpp.
References _current_company, AddRemoveEngineFromAutoreplaceAndBuildWindows(), CMD_ERROR, Engine::company_hidden, DC_EXEC, GB(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::GetIfValid(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, IsEngineBuildable(), MAX_COMPANIES, SB(), and Engine::type.
CommandCost CmdWantEnginePreview | ( | TileIndex | tile, |
DoCommandFlag | flags, | ||
uint32 | p1, | ||
uint32 | p2, | ||
const char * | text | ||
) |
Accept an engine prototype.
XXX - it is possible that the top-company changes while you are waiting to accept the offer? Then it becomes invalid
tile | unused |
flags | operation to perform |
p1 | engine-prototype offered |
p2 | unused |
text | unused |
Definition at line 884 of file engine.cpp.
References _current_company, AcceptEnginePreview(), CMD_ERROR, DC_EXEC, ENGINE_EXCLUSIVE_PREVIEW, Engine::flags, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::GetIfValid(), and Engine::preview_company.
void EnginesDailyLoop | ( | ) |
Daily check to offer an exclusive engine preview to the companies.
Functions used by the IncreaseDate function.
Definition at line 799 of file engine.cpp.
void EnginesMonthlyLoop | ( | ) |
Monthly update of the availability, reliability, and preview offers of the engines.
Definition at line 967 of file engine.cpp.
References _cur_year, and _year_engine_aging_stops.
Referenced by ClickChangeDateCheat(), ClickSetProdCheat(), and OnNewMonth().
Get the best company for an engine preview.
e | Engine to preview. |
Definition at line 750 of file engine.cpp.
References GetUnionOfArticulatedRefitMasks(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_COMPANY, Engine::type, and VEH_TRAIN.
bool IsEngineBuildable | ( | EngineID | engine, |
VehicleType | type, | ||
CompanyID | company | ||
) |
Check if an engine is buildable.
engine | index of the engine to check. |
type | the type the engine should be. |
company | index of the company. |
Definition at line 1066 of file engine.cpp.
References CompanyProperties::avail_railtypes, Engine::company_avail, ENGINE_AVAILABLE, Engine::flags, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::GetIfValid(), GetRailTypeInfo(), HasBit(), Engine::IsEnabled(), OWNER_DEITY, Engine::type, and VEH_TRAIN.
Referenced by CmdBuildVehicle(), and CmdSetVehicleVisibility().
bool IsEngineRefittable | ( | EngineID | engine | ) |
Check if an engine is refittable.
Note: Likely you want to use IsArticulatedVehicleRefittable().
engine | index of the engine to check. |
Definition at line 1102 of file engine.cpp.
References EngineInfo::callback_mask, Engine::CanCarryCargo(), CBM_VEHICLE_CARGO_SUFFIX, CT_INVALID, Engine::GetDefaultCargoType(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::GetIfValid(), and HasBit().
Referenced by GetArticulatedVehicleCargoesAndRefits(), IsArticulatedVehicleRefittable(), IsVehicleRefitable(), and OrdersWindow::UpdateAutoRefitState().
|
static |
Is name still free as name for an engine?
name | New name of an engine. |
false
if the name is being used already, else true
. Definition at line 1010 of file engine.cpp.
Referenced by CmdRenameEngine().
|
static |
Checks if a vehicle type is disabled for all/ai companies.
type | The vehicle type which shall be checked. |
ai | If true, check if the type is disabled for AI companies, otherwise check if the vehicle type is disabled for human companies. |
Definition at line 786 of file engine.cpp.
References _settings_game, GameSettings::ai, AISettings::ai_disable_veh_aircraft, AISettings::ai_disable_veh_roadveh, AISettings::ai_disable_veh_ship, AISettings::ai_disable_veh_train, VehicleSettings::max_aircraft, VehicleSettings::max_roadveh, VehicleSettings::max_ships, VehicleSettings::max_trains, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, VEH_TRAIN, and GameSettings::vehicle.
|
static |
Determine whether an engine type is a wagon (and not a loco).
index | Engine getting queried. |
Definition at line 569 of file engine.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), RAILVEH_WAGON, Engine::type, and VEH_TRAIN.
|
static |
An engine has become available for general use.
Also handle the exclusive engine preview contract.
e | Engine generally available as of now. |
Definition at line 899 of file engine.cpp.
References ENGINE_EXCLUSIVE_PREVIEW, Engine::flags, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::index, and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index.
void SetYearEngineAgingStops | ( | ) |
Compute the value for _year_engine_aging_stops.
Definition at line 617 of file engine.cpp.
References _year_engine_aging_stops.
void StartupEngines | ( | ) |
Start/initialise all our engines.
Must be called whenever there are changes to the NewGRF config.
Definition at line 688 of file engine.cpp.
References _date, _year_engine_aging_stops, ConvertYMDToDate(), and min().
Referenced by DEF_CONSOLE_CMD().
Start/initialise one engine.
e | The engine to initialise. |
aging_date | The date used for age calculations. |
Definition at line 643 of file engine.cpp.
References Engine::company_avail, Engine::company_hidden, and Engine::flags.
const uint8 _engine_counts[4] |
Number of engines of each vehicle type in original engine data.
Definition at line 52 of file engine.cpp.
Referenced by EngineOverrideManager::ResetToDefaultMapping().
const uint8 _engine_offsets[4] |
|
static |
Year that engine aging stops.
Engines will not reduce in reliability and no more engines will be introduced
Definition at line 49 of file engine.cpp.
Referenced by EnginesMonthlyLoop(), SetYearEngineAgingStops(), and StartupEngines().