Add GRF feature: New Landscape

Custom graphics using actions 1/2/3.

Currently only for rock tiles
This commit is contained in:
Jonathan G Rennison
2022-06-13 02:53:27 +01:00
parent 80281daa23
commit 7bb0de247d
13 changed files with 543 additions and 2 deletions

View File

@@ -89,6 +89,7 @@ enum GrfSpecFeature : uint8 {
GSF_TRAMTYPES,
GSF_ROADSTOPS,
GSF_NEWLANDSCAPE,
GSF_END,
GSF_REAL_FEATURE_END = GSF_ROADSTOPS,
@@ -278,11 +279,22 @@ enum {
NEW_SIGNALS_MAX_EXTRA_ASPECT = 6,
};
/** New signal control flags. */
/** New signal action 3 IDs. */
enum NewSignalAction3ID {
NSA3ID_CUSTOM_SIGNALS = 0, ///< Action 3 ID for custom signal sprites
};
/** New landscape control flags. */
enum NewLandscapeCtrlFlags {
NLCF_ROCKS_SET = 0, ///< Custom landscape rocks sprites group set.
NLCF_ROCKS_RECOLOUR_ENABLED = 1, ///< Recolour sprites enabled for rocks
};
/** New landscape action 3 IDs. */
enum NewLandscapeAction3ID {
NLA3ID_CUSTOM_ROCKS = 0, ///< Action 3 ID for custom landscape sprites
};
/** GRFFile control flags. */
enum GRFFileCtrlFlags {
GFCF_HAVE_FEATURE_ID_REMAP = 0, ///< This GRF has one or more feature ID mappings
@@ -346,6 +358,9 @@ struct GRFFile : ZeroedMemoryAllocator {
byte new_signal_ctrl_flags; ///< Ctrl flags for new signals
byte new_signal_extra_aspects; ///< Number of extra aspects for new signals
const SpriteGroup *new_rocks_group; ///< New landscape rocks group
byte new_landscape_ctrl_flags; ///< Ctrl flags for new landscape
byte ctrl_flags; ///< General GRF control flags
btree::btree_map<uint16, uint> string_map; ///< Map of local GRF string ID to string ID