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 "group.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 "table/strings.h"
#include "table/engines.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 | SetCachedEngineCounts () |
Sets cached values in Company::num_vehicles and Group::num_vehicles. | |
void | SetupEngines () |
void | ShowEnginePreviewWindow (EngineID engine) |
static bool | IsWagon (EngineID index) |
static void | CalcEngineReliability (Engine *e) |
void | SetYearEngineAgingStops () |
Compute the value for _year_engine_aging_stops. | |
void | StartupOneEngine (Engine *e, Date aging_date) |
void | StartupEngines () |
static void | AcceptEnginePreview (EngineID eid, CompanyID company) |
static CompanyID | GetBestCompany (uint8 pp) |
Get the N-th best company. | |
void | EnginesDailyLoop () |
Daily check to offer an exclusive engine preview to the companies. | |
CommandCost | CmdWantEnginePreview (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
Accept an engine prototype. | |
static void | NewVehicleAvailable (Engine *e) |
An engine has become available for general use. | |
void | EnginesMonthlyLoop () |
static bool | IsUniqueEngineName (const char *name) |
CommandCost | CmdRenameEngine (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
Rename an engine. | |
bool | IsEngineBuildable (EngineID engine, VehicleType type, CompanyID company) |
Check if an engine is buildable. | |
bool | IsEngineRefittable (EngineID engine) |
Check if an engine is refittable. | |
Variables | |
EnginePool | _engine_pool ("Engine") |
EngineOverrideManager | _engine_mngr |
static Year | _year_engine_aging_stops |
Year that engine aging stops. | |
const uint8 | _engine_counts [4] |
Number of engines of each vehicle type in original engine data. | |
const uint8 | _engine_offsets [4] |
Offset of the first engine of each vehicle type in original engine data. |
Base for all engine handling.
Definition in file engine.cpp.
CommandCost CmdRenameEngine | ( | TileIndex | tile, | |
DoCommandFlag | flags, | |||
uint32 | p1, | |||
uint32 | p2, | |||
const char * | text | |||
) |
Rename an engine.
tile | unused | |
flags | operation to perfom | |
p1 | engine ID to rename | |
p2 | unused | |
text | the new name or an empty string when resetting to the default |
Definition at line 827 of file engine.cpp.
References CMD_ERROR, DC_EXEC, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_engine_pool >::GetIfValid(), MarkWholeScreenDirty(), MAX_LENGTH_ENGINE_NAME_CHARS, Engine::name, return_cmd_error, StrEmpty(), and Utf8StringLength().
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 perfom | |
p1 | engine-prototype offered | |
p2 | unused | |
text | unused |
Definition at line 705 of file engine.cpp.
References _current_company, CMD_ERROR, DC_EXEC, GetBestCompany(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_engine_pool >::GetIfValid().
void EnginesDailyLoop | ( | ) |
Daily check to offer an exclusive engine preview to the companies.
Functions used by the IncreaseDate function.
Definition at line 664 of file engine.cpp.
References _cur_year, _year_engine_aging_stops, DeleteWindowById(), ENGINE_EXCLUSIVE_PREVIEW, ENGINE_OFFER_WINDOW_OPEN, GetBestCompany(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_COMPANY, IsInteractiveCompany(), and AI::NewEvent().
Referenced by OnNewDay().
static CompanyID GetBestCompany | ( | uint8 | pp | ) | [static] |
Get the N-th best company.
pp | Value N, 1 means best, 2 means second best, etc. |
Definition at line 637 of file engine.cpp.
References CompanyProperties::block_preview, HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_COMPANY, CompanyProperties::old_economy, CompanyEconomyEntry::performance_history, and SetBit().
Referenced by CmdWantEnginePreview(), and EnginesDailyLoop().
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 863 of file engine.cpp.
References CompanyProperties::avail_railtypes, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_engine_pool >::GetIfValid(), GetRailTypeInfo(), HasBit(), EngineInfo::string_id, Engine::type, and VEH_TRAIN.
Referenced by CheckAutoreplaceValidity(), CmdBuildVehicle(), GetNewEngineType(), AIEngine::IsBuildable(), and AIEngine::IsValidEngine().
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 893 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, Tcache, Tzero >::PoolItem<&_engine_pool >::GetIfValid(), and HasBit().
Referenced by IsArticulatedVehicleRefittable(), and IsVehicleRefitable().
static void NewVehicleAvailable | ( | Engine * | e | ) | [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 720 of file engine.cpp.
References AddNewsItem(), AddRemoveEngineFromAutoreplaceAndBuildWindows(), CompanyProperties::avail_railtypes, Company::avail_roadtypes, CompanyProperties::block_preview, AI::BroadcastNewEvent(), EF_ROAD_TRAM, ENGINE_AVAILABLE, ENGINE_EXCLUSIVE_PREVIEW, SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), GetEngineCategoryName(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, InvalidateWindowData(), Aircraft::IsNormalAircraft(), NR_ENGINE, NS_NEW_VEHICLES, Vehicle::owner, RAILTYPE_END, ROADTYPE_ROAD, ROADTYPE_TRAM, SetBit(), SetDParam(), TRANSPORT_ROAD, TRANSPORT_WATER, Engine::type, BaseVehicle::type, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.
void SetYearEngineAgingStops | ( | ) |
Compute the value for _year_engine_aging_stops.
Definition at line 527 of file engine.cpp.
References _settings_game, _year_engine_aging_stops, ConvertDateToYMD(), DAYS_IN_LEAP_YEAR, GameSettings::game_creation, HasBit(), GameCreationSettings::landscape, EngineInfo::lifelength, max(), RAILVEH_WAGON, Engine::type, VEH_TRAIN, and YearMonthDay::year.
const uint8 _engine_counts[4] |
{ lengthof(_orig_rail_vehicle_info), lengthof(_orig_road_vehicle_info), lengthof(_orig_ship_vehicle_info), lengthof(_orig_aircraft_vehicle_info), }
Number of engines of each vehicle type in original engine data.
Definition at line 48 of file engine.cpp.
Referenced by GetNewEngine().
const uint8 _engine_offsets[4] |
{ 0, lengthof(_orig_rail_vehicle_info), lengthof(_orig_rail_vehicle_info) + lengthof(_orig_road_vehicle_info), lengthof(_orig_rail_vehicle_info) + lengthof(_orig_road_vehicle_info) + lengthof(_orig_ship_vehicle_info), }
Offset of the first engine of each vehicle type in original engine data.
Definition at line 56 of file engine.cpp.
Year _year_engine_aging_stops [static] |
Year that engine aging stops.
Engines will not reduce in reliability and no more engines will be introduced
Definition at line 45 of file engine.cpp.
Referenced by EnginesDailyLoop(), and SetYearEngineAgingStops().