MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / GetEngineLivery

Function GetEngineLivery

src/vehicle.cpp:2045–2071  ·  view source on GitHub ↗

* Determines the livery for a vehicle. * @param engine_type EngineID of the vehicle * @param company Owner of the vehicle * @param parent_engine_type EngineID of the front vehicle. VehicleID::Invalid() if vehicle is at front itself. * @param v the vehicle. nullptr if in purchase list etc. * @param livery_setting The livery settings to use for acquiring the livery information. * @return liver

Source from the content-addressed store, hash-verified

2043 * @return livery to use
2044 */
2045const Livery *GetEngineLivery(EngineID engine_type, CompanyID company, EngineID parent_engine_type, const Vehicle *v, uint8_t livery_setting)
2046{
2047 const Company *c = Company::Get(company);
2048 LiveryScheme scheme = LS_DEFAULT;
2049
2050 if (livery_setting == LIT_ALL || (livery_setting == LIT_COMPANY && company == _local_company)) {
2051 if (v != nullptr) {
2052 const Group *g = Group::GetIfValid(v->First()->group_id);
2053 if (g != nullptr) {
2054 /* Traverse parents until we find a livery or reach the top */
2055 while (!g->livery.in_use.Any({Livery::Flag::Primary, Livery::Flag::Secondary}) && g->parent != GroupID::Invalid()) {
2056 g = Group::Get(g->parent);
2057 }
2058 if (g->livery.in_use.Any({Livery::Flag::Primary, Livery::Flag::Secondary})) return &g->livery;
2059 }
2060 }
2061
2062 /* The default livery is always available for use, but its in_use flag determines
2063 * whether any _other_ liveries are in use. */
2064 if (c->livery[LS_DEFAULT].in_use.Any({Livery::Flag::Primary, Livery::Flag::Secondary})) {
2065 /* Determine the livery scheme to use */
2066 scheme = GetEngineLiveryScheme(engine_type, parent_engine_type, v);
2067 }
2068 }
2069
2070 return &c->livery[scheme];
2071}
2072
2073
2074static PaletteID GetEngineColourMap(EngineID engine_type, CompanyID company, EngineID parent_engine_type, const Vehicle *v)

Callers 2

GetEngineColourMapFunction · 0.85
LiveryHelperFunction · 0.85

Calls 4

InvalidFunction · 0.85
GetEngineLiverySchemeFunction · 0.85
AnyMethod · 0.80
FirstMethod · 0.45

Tested by

no test coverage detected