1
0
Fork 0

Change: Increase company CC storage to 32 bits to allow for custom colours.

pull/11634/head
Peter Nelson 2025-07-25 08:56:49 +01:00
parent 6b330da74e
commit 504a26a60a
No known key found for this signature in database
GPG Key ID: 8EF8F0A467DF75ED
9 changed files with 21 additions and 14 deletions

View File

@ -15,7 +15,7 @@
#include "livery.h" #include "livery.h"
enum ClientID : uint32_t; enum ClientID : uint32_t;
enum Colours : uint8_t; enum Colours : uint32_t;
CommandCost CmdCompanyCtrl(DoCommandFlags flags, CompanyCtrlAction cca, CompanyID company_id, CompanyRemoveReason reason, ClientID client_id); CommandCost CmdCompanyCtrl(DoCommandFlags flags, CompanyCtrlAction cca, CompanyID company_id, CompanyRemoveReason reason, ClientID client_id);
CommandCost CmdCompanyAllowListCtrl(DoCommandFlags flags, CompanyAllowListCtrlAction action, const std::string &public_key); CommandCost CmdCompanyAllowListCtrl(DoCommandFlags flags, CompanyAllowListCtrlAction action, const std::string &public_key);

View File

@ -592,7 +592,7 @@ template <SpriteID TSprite = SPR_SQUARE>
class DropDownListColourItem : public DropDownIcon<DropDownString<DropDownListItem>> { class DropDownListColourItem : public DropDownIcon<DropDownString<DropDownListItem>> {
public: public:
DropDownListColourItem(int colour, bool masked) : DropDownListColourItem(int colour, bool masked) :
DropDownIcon<DropDownString<DropDownListItem>>(TSprite, GetColourPalette(static_cast<Colours>(colour % COLOUR_END)), GetString(colour < COLOUR_END ? (STR_COLOUR_DARK_BLUE + colour) : STR_COLOUR_DEFAULT), colour, masked) DropDownIcon<DropDownString<DropDownListItem>>(TSprite, GetColourPalette(static_cast<Colours>(colour % COLOUR_END)), GetString((Colours)colour < COLOUR_END ? (STR_COLOUR_DARK_BLUE + colour) : STR_COLOUR_DEFAULT), colour, masked)
{ {
} }
}; };

View File

@ -280,7 +280,7 @@ struct SubSprite {
int left, top, right, bottom; int left, top, right, bottom;
}; };
enum Colours : uint8_t { enum Colours : uint32_t {
COLOUR_BEGIN, COLOUR_BEGIN,
COLOUR_DARK_BLUE = COLOUR_BEGIN, COLOUR_DARK_BLUE = COLOUR_BEGIN,
COLOUR_PALE_GREEN, COLOUR_PALE_GREEN,
@ -299,7 +299,7 @@ enum Colours : uint8_t {
COLOUR_GREY, COLOUR_GREY,
COLOUR_WHITE, COLOUR_WHITE,
COLOUR_END, COLOUR_END,
INVALID_COLOUR = 0xFF, INVALID_COLOUR = UINT32_MAX,
}; };
DECLARE_INCREMENT_DECREMENT_OPERATORS(Colours) DECLARE_INCREMENT_DECREMENT_OPERATORS(Colours)
DECLARE_ENUM_AS_ADDABLE(Colours) DECLARE_ENUM_AS_ADDABLE(Colours)

View File

@ -16,7 +16,7 @@
#include "vehiclelist.h" #include "vehiclelist.h"
#include "vehiclelist_cmd.h" #include "vehiclelist_cmd.h"
enum Colours : uint8_t; enum Colours : uint32_t;
enum class GroupFlag : uint8_t; enum class GroupFlag : uint8_t;
/** Action for \c CmdAlterGroup. */ /** Action for \c CmdAlterGroup. */

View File

@ -410,9 +410,11 @@ public:
class SlCompanyLiveries : public DefaultSaveLoadHandler<SlCompanyLiveries, CompanyProperties> { class SlCompanyLiveries : public DefaultSaveLoadHandler<SlCompanyLiveries, CompanyProperties> {
public: public:
static inline const SaveLoad description[] = { static inline const SaveLoad description[] = {
SLE_CONDVAR(Livery, in_use, SLE_UINT8, SLV_34, SL_MAX_VERSION), SLE_CONDVAR(Livery, in_use, SLE_UINT8, SLV_34, SL_MAX_VERSION),
SLE_CONDVAR(Livery, colour1, SLE_UINT8, SLV_34, SL_MAX_VERSION), SLE_CONDVAR(Livery, colour1, SLE_FILE_U8 | SLE_VAR_U32, SLV_34, SLV_CUSTOM_COMPANY_COLOURS),
SLE_CONDVAR(Livery, colour2, SLE_UINT8, SLV_34, SL_MAX_VERSION), SLE_CONDVAR(Livery, colour2, SLE_FILE_U8 | SLE_VAR_U32, SLV_34, SLV_CUSTOM_COMPANY_COLOURS),
SLE_CONDVAR(Livery, colour1, SLE_UINT32, SLV_CUSTOM_COMPANY_COLOURS, SL_MAX_VERSION),
SLE_CONDVAR(Livery, colour2, SLE_UINT32, SLV_CUSTOM_COMPANY_COLOURS, SL_MAX_VERSION),
}; };
static inline const SaveLoadCompatTable compat_description = _company_liveries_compat; static inline const SaveLoadCompatTable compat_description = _company_liveries_compat;
@ -511,7 +513,8 @@ static const SaveLoad _company_desc[] = {
SLE_CONDVAR(CompanyProperties, current_loan, SLE_INT64, SLV_65, SL_MAX_VERSION), SLE_CONDVAR(CompanyProperties, current_loan, SLE_INT64, SLV_65, SL_MAX_VERSION),
SLE_CONDVAR(CompanyProperties, max_loan, SLE_INT64, SLV_MAX_LOAN_FOR_COMPANY, SL_MAX_VERSION), SLE_CONDVAR(CompanyProperties, max_loan, SLE_INT64, SLV_MAX_LOAN_FOR_COMPANY, SL_MAX_VERSION),
SLE_VAR(CompanyProperties, colour, SLE_UINT8), SLE_CONDVAR(CompanyProperties, colour, SLE_FILE_U8 | SLE_VAR_U32, SL_MIN_VERSION, SLV_CUSTOM_COMPANY_COLOURS),
SLE_CONDVAR(CompanyProperties, colour, SLE_UINT32, SLV_CUSTOM_COMPANY_COLOURS, SL_MAX_VERSION),
SLE_VAR(CompanyProperties, money_fraction, SLE_UINT8), SLE_VAR(CompanyProperties, money_fraction, SLE_UINT8),
SLE_VAR(CompanyProperties, block_preview, SLE_UINT8), SLE_VAR(CompanyProperties, block_preview, SLE_UINT8),

View File

@ -23,8 +23,10 @@ static const SaveLoad _group_desc[] = {
SLE_VAR(Group, vehicle_type, SLE_UINT8), SLE_VAR(Group, vehicle_type, SLE_UINT8),
SLE_VAR(Group, flags, SLE_UINT8), SLE_VAR(Group, flags, SLE_UINT8),
SLE_CONDVAR(Group, livery.in_use, SLE_UINT8, SLV_GROUP_LIVERIES, SL_MAX_VERSION), SLE_CONDVAR(Group, livery.in_use, SLE_UINT8, SLV_GROUP_LIVERIES, SL_MAX_VERSION),
SLE_CONDVAR(Group, livery.colour1, SLE_UINT8, SLV_GROUP_LIVERIES, SL_MAX_VERSION), SLE_CONDVAR(Group, livery.colour1, SLE_FILE_U8 | SLE_VAR_U32, SLV_GROUP_LIVERIES, SLV_CUSTOM_COMPANY_COLOURS),
SLE_CONDVAR(Group, livery.colour2, SLE_UINT8, SLV_GROUP_LIVERIES, SL_MAX_VERSION), SLE_CONDVAR(Group, livery.colour2, SLE_FILE_U8 | SLE_VAR_U32, SLV_GROUP_LIVERIES, SLV_CUSTOM_COMPANY_COLOURS),
SLE_CONDVAR(Group, livery.colour1, SLE_UINT32, SLV_CUSTOM_COMPANY_COLOURS, SL_MAX_VERSION),
SLE_CONDVAR(Group, livery.colour2, SLE_UINT32, SLV_CUSTOM_COMPANY_COLOURS, SL_MAX_VERSION),
SLE_CONDVAR(Group, parent, SLE_UINT16, SLV_189, SL_MAX_VERSION), SLE_CONDVAR(Group, parent, SLE_UINT16, SLV_189, SL_MAX_VERSION),
SLE_CONDVAR(Group, number, SLE_UINT16, SLV_GROUP_NUMBERS, SL_MAX_VERSION), SLE_CONDVAR(Group, number, SLE_UINT16, SLV_GROUP_NUMBERS, SL_MAX_VERSION),
}; };

View File

@ -179,7 +179,8 @@ static const SaveLoad _industry_desc[] = {
SLE_VAR(Industry, type, SLE_UINT8), SLE_VAR(Industry, type, SLE_UINT8),
SLE_VAR(Industry, owner, SLE_UINT8), SLE_VAR(Industry, owner, SLE_UINT8),
SLE_VAR(Industry, random_colour, SLE_UINT8), SLE_CONDVAR(Industry, random_colour, SLE_FILE_U8 | SLE_VAR_U32, SL_MIN_VERSION, SLV_CUSTOM_COMPANY_COLOURS),
SLE_CONDVAR(Industry, random_colour, SLE_UINT32, SLV_CUSTOM_COMPANY_COLOURS, SL_MAX_VERSION),
SLE_CONDVAR(Industry, last_prod_year, SLE_FILE_U8 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31), SLE_CONDVAR(Industry, last_prod_year, SLE_FILE_U8 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31),
SLE_CONDVAR(Industry, last_prod_year, SLE_INT32, SLV_31, SL_MAX_VERSION), SLE_CONDVAR(Industry, last_prod_year, SLE_INT32, SLV_31, SL_MAX_VERSION),
SLE_VAR(Industry, was_cargo_delivered, SLE_UINT8), SLE_VAR(Industry, was_cargo_delivered, SLE_UINT8),

View File

@ -406,6 +406,7 @@ enum SaveLoadVersion : uint16_t {
SLV_FACE_STYLES, ///< 355 PR#14319 Addition of face styles, replacing gender and ethnicity. SLV_FACE_STYLES, ///< 355 PR#14319 Addition of face styles, replacing gender and ethnicity.
SLV_INDUSTRY_NUM_VALID_HISTORY, ///< 356 PR#14416 Store number of valid history records for industries. SLV_INDUSTRY_NUM_VALID_HISTORY, ///< 356 PR#14416 Store number of valid history records for industries.
SLV_INDUSTRY_ACCEPTED_HISTORY, ///< 357 PR#14321 Add per-industry history of cargo delivered and waiting. SLV_INDUSTRY_ACCEPTED_HISTORY, ///< 357 PR#14321 Add per-industry history of cargo delivered and waiting.
SLV_CUSTOM_COMPANY_COLOURS, ///< 358 PR#11634 Custom company colours.
SL_MAX_VERSION, ///< Highest possible saveload version SL_MAX_VERSION, ///< Highest possible saveload version
}; };

View File

@ -348,7 +348,7 @@ post_cb = InvalidateCompanyLiveryWindow
[SDTC_VAR] [SDTC_VAR]
var = gui.starting_colour var = gui.starting_colour
type = SLE_UINT8 type = SLE_UINT32
flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::GuiDropdown flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::GuiDropdown
def = COLOUR_END def = COLOUR_END
min = 0 min = 0
@ -359,7 +359,7 @@ strval = STR_COLOUR_DARK_BLUE
[SDTC_VAR] [SDTC_VAR]
var = gui.starting_colour_secondary var = gui.starting_colour_secondary
type = SLE_UINT8 type = SLE_UINT32
flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::GuiDropdown flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::GuiDropdown
def = COLOUR_END def = COLOUR_END
min = 0 min = 0