diff --git a/src/company_cmd.h b/src/company_cmd.h index eb30f9b361..508ff0de3d 100644 --- a/src/company_cmd.h +++ b/src/company_cmd.h @@ -15,7 +15,7 @@ #include "livery.h" 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 CmdCompanyAllowListCtrl(DoCommandFlags flags, CompanyAllowListCtrlAction action, const std::string &public_key); diff --git a/src/company_gui.cpp b/src/company_gui.cpp index 9debd59c5b..abdf287d8e 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -592,7 +592,7 @@ template class DropDownListColourItem : public DropDownIcon> { public: DropDownListColourItem(int colour, bool masked) : - DropDownIcon>(TSprite, GetColourPalette(static_cast(colour % COLOUR_END)), GetString(colour < COLOUR_END ? (STR_COLOUR_DARK_BLUE + colour) : STR_COLOUR_DEFAULT), colour, masked) + DropDownIcon>(TSprite, GetColourPalette(static_cast(colour % COLOUR_END)), GetString((Colours)colour < COLOUR_END ? (STR_COLOUR_DARK_BLUE + colour) : STR_COLOUR_DEFAULT), colour, masked) { } }; diff --git a/src/gfx_type.h b/src/gfx_type.h index a5f2255787..842c1b5ed1 100644 --- a/src/gfx_type.h +++ b/src/gfx_type.h @@ -280,7 +280,7 @@ struct SubSprite { int left, top, right, bottom; }; -enum Colours : uint8_t { +enum Colours : uint32_t { COLOUR_BEGIN, COLOUR_DARK_BLUE = COLOUR_BEGIN, COLOUR_PALE_GREEN, @@ -299,7 +299,7 @@ enum Colours : uint8_t { COLOUR_GREY, COLOUR_WHITE, COLOUR_END, - INVALID_COLOUR = 0xFF, + INVALID_COLOUR = UINT32_MAX, }; DECLARE_INCREMENT_DECREMENT_OPERATORS(Colours) DECLARE_ENUM_AS_ADDABLE(Colours) diff --git a/src/group_cmd.h b/src/group_cmd.h index abef37b542..e990e0ca25 100644 --- a/src/group_cmd.h +++ b/src/group_cmd.h @@ -16,7 +16,7 @@ #include "vehiclelist.h" #include "vehiclelist_cmd.h" -enum Colours : uint8_t; +enum Colours : uint32_t; enum class GroupFlag : uint8_t; /** Action for \c CmdAlterGroup. */ diff --git a/src/saveload/company_sl.cpp b/src/saveload/company_sl.cpp index 679b42bded..32495d9fbf 100644 --- a/src/saveload/company_sl.cpp +++ b/src/saveload/company_sl.cpp @@ -410,9 +410,11 @@ public: class SlCompanyLiveries : public DefaultSaveLoadHandler { public: static inline const SaveLoad description[] = { - 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, colour2, SLE_UINT8, SLV_34, SL_MAX_VERSION), + SLE_CONDVAR(Livery, in_use, 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_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; @@ -511,7 +513,8 @@ static const SaveLoad _company_desc[] = { 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_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, block_preview, SLE_UINT8), diff --git a/src/saveload/group_sl.cpp b/src/saveload/group_sl.cpp index a6f341d3d9..cd7244b076 100644 --- a/src/saveload/group_sl.cpp +++ b/src/saveload/group_sl.cpp @@ -23,8 +23,10 @@ static const SaveLoad _group_desc[] = { SLE_VAR(Group, vehicle_type, 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.colour1, SLE_UINT8, SLV_GROUP_LIVERIES, SL_MAX_VERSION), - SLE_CONDVAR(Group, livery.colour2, 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_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, number, SLE_UINT16, SLV_GROUP_NUMBERS, SL_MAX_VERSION), }; diff --git a/src/saveload/industry_sl.cpp b/src/saveload/industry_sl.cpp index 7d81e2bf95..b24029bcf2 100644 --- a/src/saveload/industry_sl.cpp +++ b/src/saveload/industry_sl.cpp @@ -179,7 +179,8 @@ static const SaveLoad _industry_desc[] = { SLE_VAR(Industry, type, 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_INT32, SLV_31, SL_MAX_VERSION), SLE_VAR(Industry, was_cargo_delivered, SLE_UINT8), diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h index 002e27fef2..e51dcfb21d 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -406,6 +406,7 @@ enum SaveLoadVersion : uint16_t { 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_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 }; diff --git a/src/table/settings/gui_settings.ini b/src/table/settings/gui_settings.ini index 3d9ee1b75b..8d12afa7f1 100644 --- a/src/table/settings/gui_settings.ini +++ b/src/table/settings/gui_settings.ini @@ -348,7 +348,7 @@ post_cb = InvalidateCompanyLiveryWindow [SDTC_VAR] var = gui.starting_colour -type = SLE_UINT8 +type = SLE_UINT32 flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::GuiDropdown def = COLOUR_END min = 0 @@ -359,7 +359,7 @@ strval = STR_COLOUR_DARK_BLUE [SDTC_VAR] var = gui.starting_colour_secondary -type = SLE_UINT8 +type = SLE_UINT32 flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::GuiDropdown def = COLOUR_END min = 0