Functions | Variables

engine.cpp File Reference

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 "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 SetupEngines ()
 Initialise the engine pool with the data from the original vehicles.
static void CheckRailIntroduction ()
 Check whether the railtypes should be introduced.
void ShowEnginePreviewWindow (EngineID engine)
static bool IsWagon (EngineID index)
 Determine whether an engine type is a wagon (and not a loco).
static void CalcEngineReliability (Engine *e)
 Update reliability of engine e, (if needed) update the engine GUIs.
void SetYearEngineAgingStops ()
 Compute the value for _year_engine_aging_stops.
void StartupOneEngine (Engine *e, Date aging_date)
 Start/initialise one engine.
void StartupEngines ()
 Start/initialise all our engines.
static void AcceptEnginePreview (EngineID eid, CompanyID company)
 Company company accepts engine eid for preview.
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.
static uint16 _introduced_railtypes
 The railtypes that have been or never will be introduced, or an inverse bitmap of rail types that have to be introduced.
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.

Detailed Description

Base for all engine handling.

Definition in file engine.cpp.


Function Documentation

static void AcceptEnginePreview ( EngineID  eid,
CompanyID  company 
) [static]
static void CalcEngineReliability ( Engine e  )  [static]
CommandCost CmdRenameEngine ( TileIndex  tile,
DoCommandFlag  flags,
uint32  p1,
uint32  p2,
const char *  text 
)

Rename an engine.

Parameters:
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
Returns:
the cost of this operation or an error

Definition at line 951 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(), 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

Parameters:
tile unused
flags operation to perfom
p1 engine-prototype offered
p2 unused
text unused
Returns:
the cost of this operation or an error

Definition at line 826 of file engine.cpp.

References _current_company, AcceptEnginePreview(), CMD_ERROR, DC_EXEC, GetBestCompany(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::GetIfValid(), and Engine::preview_company_rank.

void EnginesDailyLoop (  ) 
static CompanyID GetBestCompany ( uint8  pp  )  [static]

Get the N-th best company.

Parameters:
pp Value N, 1 means best, 2 means second best, etc.
Returns:
N-th best company if it exists, INVALID_COMPANY otherwise.

Definition at line 756 of file engine.cpp.

References CompanyProperties::block_preview, HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, 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.

Parameters:
engine index of the engine to check.
type the type the engine should be.
company index of the company.
Returns:
True if an engine is valid, of the specified type, and buildable by the given company.

Definition at line 987 of file engine.cpp.

References CompanyProperties::avail_railtypes, Engine::company_avail, 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 CheckAutoreplaceValidity(), CmdBuildVehicle(), and GetNewEngineType().

bool IsEngineRefittable ( EngineID  engine  ) 

Check if an engine is refittable.

Note: Likely you want to use IsArticulatedVehicleRefittable().

Parameters:
engine index of the engine to check.
Returns:
true if the engine is refittable.

Definition at line 1017 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 IsArticulatedVehicleRefittable(), and IsVehicleRefitable().

static bool IsWagon ( EngineID  index  )  [static]

Determine whether an engine type is a wagon (and not a loco).

Parameters:
index Engine getting queried.
Returns:
Whether the queried engine is a wagon.

Definition at line 571 of file engine.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), Engine::type, and VEH_TRAIN.

Referenced by NewVehicleAvailable().

static void NewVehicleAvailable ( Engine e  )  [static]
void SetYearEngineAgingStops (  ) 
void StartupEngines (  ) 
void StartupOneEngine ( Engine e,
Date  aging_date 
)

Variable Documentation

const uint8 _engine_counts[4]
Initial value:
 {
  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 53 of file engine.cpp.

Referenced by GetNewEngine(), and ParamSet().

const uint8 _engine_offsets[4]
Initial value:
 {
  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 61 of file engine.cpp.

Referenced by ParamSet().

uint16 _introduced_railtypes [static]

The railtypes that have been or never will be introduced, or an inverse bitmap of rail types that have to be introduced.

Definition at line 50 of file engine.cpp.

Referenced by CheckRailIntroduction(), SetupEngines(), and StartupEngines().

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(), SetYearEngineAgingStops(), and StartupEngines().