From 9a87f184c4950351281e1b6f4d4bf9ec31eef0b2 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Fri, 17 Apr 2026 21:16:51 +0200 Subject: [PATCH] Codechange: move calculating livery recolour offset to Livery --- src/company_base.h | 3 +-- src/livery.h | 10 ++++++++++ src/newgrf_object.cpp | 2 +- src/vehicle.cpp | 3 +-- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/company_base.h b/src/company_base.h index 1ec65f6c1a..33835bfc4b 100644 --- a/src/company_base.h +++ b/src/company_base.h @@ -192,8 +192,7 @@ struct Company : CompanyProperties, CompanyPool::PoolItem<&_company_pool> { */ inline uint8_t GetCompanyRecolourOffset(LiveryScheme livery_scheme, bool use_secondary = true) const { - const Livery &l = this->livery[livery_scheme]; - return use_secondary ? l.colour1 + l.colour2 * 16 : l.colour1; + return this->livery[livery_scheme].GetRecolourOffset(use_secondary); } static void PostDestructor(size_t index); diff --git a/src/livery.h b/src/livery.h index dbcd365a8c..c4fa50ae26 100644 --- a/src/livery.h +++ b/src/livery.h @@ -87,6 +87,16 @@ struct Livery { Flags in_use{}; ///< Livery flags. Colours colour1 = COLOUR_BEGIN; ///< First colour, for all vehicles. Colours colour2 = COLOUR_BEGIN; ///< Second colour, for vehicles with 2CC support. + + /** + * Get offset for recolour palette. + * @param use_secondary Specify whether to add secondary colour offset to the result. + * @return The palette offset. + */ + inline uint8_t GetRecolourOffset(bool use_secondary = true) const + { + return use_secondary ? this->colour1 + this->colour2 * 16 : this->colour1; + } }; void ResetCompanyLivery(Company *c); diff --git a/src/newgrf_object.cpp b/src/newgrf_object.cpp index 715bf09f56..f75f42c51c 100644 --- a/src/newgrf_object.cpp +++ b/src/newgrf_object.cpp @@ -506,7 +506,7 @@ void DrawNewObjectTileInGUI(int x, int y, const ObjectSpec *spec, uint8_t view) /* Get the colours of our company! */ if (spec->flags.Test(ObjectFlag::Uses2CC)) { const Livery &l = Company::Get(_local_company)->livery[0]; - palette = SPR_2CCMAP_BASE + l.colour1 + l.colour2 * 16; + palette = SPR_2CCMAP_BASE + l.GetRecolourOffset(); } else { palette = GetCompanyPalette(_local_company); } diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 72b418d400..981a12aef9 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -2148,8 +2148,7 @@ static PaletteID GetEngineColourMap(EngineID engine_type, CompanyID company, Eng const Livery *livery = GetEngineLivery(engine_type, company, parent_engine_type, v, _settings_client.gui.liveries); - map += livery->colour1; - if (twocc) map += livery->colour2 * 16; + map += livery->GetRecolourOffset(twocc); /* Update cache */ if (v != nullptr) const_cast(v)->colourmap = map;