From f759b691d7082c58ab719fcba3b8457e15a9383b Mon Sep 17 00:00:00 2001 From: Rito12 <111280526+Rito13@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:25:32 +0100 Subject: [PATCH] Codechange: Use helper function for company recolour offset (#14740) --- src/company_base.h | 12 ++++++++++++ src/newgrf_industries.cpp | 4 +--- src/object_cmd.cpp | 6 ++---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/company_base.h b/src/company_base.h index a1409c84ed..c77f642389 100644 --- a/src/company_base.h +++ b/src/company_base.h @@ -180,6 +180,18 @@ struct Company : CompanyProperties, CompanyPool::PoolItem<&_company_pool> { return !Company::Get(index)->is_ai; } + /** + * Get offset for recolour palette of specific company. + * @param livery_scheme Scheme to use for recolour. + * @param use_secondary Specify whether to add secondary colour offset to the result. + * @return palette offset. + */ + 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; + } + static void PostDestructor(size_t index); }; diff --git a/src/newgrf_industries.cpp b/src/newgrf_industries.cpp index 4f532ff1b2..5a1fb6b80f 100644 --- a/src/newgrf_industries.cpp +++ b/src/newgrf_industries.cpp @@ -246,10 +246,8 @@ static uint32_t GetCountAndDistanceOfClosestInstance(const ResolverObject &objec const Company *c = Company::GetIfValid(this->industry->founder); if (c != nullptr) { - const Livery *l = &c->livery[LS_DEFAULT]; - is_ai = c->is_ai; - colours = l->colour1 + l->colour2 * 16; + colours = c->GetCompanyRecolourOffset(LS_DEFAULT); } return this->industry->founder.base() | (is_ai ? 0x10000 : 0) | (colours << 24); diff --git a/src/object_cmd.cpp b/src/object_cmd.cpp index 6cfed66e47..2bb29628f9 100644 --- a/src/object_cmd.cpp +++ b/src/object_cmd.cpp @@ -97,8 +97,7 @@ void BuildObject(ObjectType type, TileIndex tile, CompanyID owner, Town *town, u if (owner == OWNER_NONE) { o->colour = Random(); } else { - const Livery &l = Company::Get(owner)->livery[0]; - o->colour = l.colour1 + l.colour2 * 16; + o->colour = Company::Get(owner)->GetCompanyRecolourOffset(LS_DEFAULT); } /* If the object wants only one colour, then give it that colour. */ @@ -193,8 +192,7 @@ void UpdateObjectColours(const Company *c) /* Using the object colour callback, so not using company colour. */ if (spec->callback_mask.Test(ObjectCallbackMask::Colour)) continue; - const Livery &l = c->livery[0]; - obj->colour = (spec->flags.Test(ObjectFlag::Uses2CC) ? (l.colour2 * 16) : 0) + l.colour1; + obj->colour = c->GetCompanyRecolourOffset(LS_DEFAULT, spec->flags.Test(ObjectFlag::Uses2CC)); } }