mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-18 04:23:20 +01:00
Improve scenery window to handle more groups
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1701,13 +1701,11 @@ static void window_top_toolbar_scenery_tool_down(const ScreenCoordsXY& windowPos
|
||||
return;
|
||||
}
|
||||
|
||||
ScenerySelection selectedTab = gWindowSceneryTabSelections[gWindowSceneryActiveTabIndex];
|
||||
auto selectedTab = gWindowSceneryTabSelections.size() > gWindowSceneryActiveTabIndex
|
||||
? gWindowSceneryTabSelections[gWindowSceneryActiveTabIndex]
|
||||
: ScenerySelection{};
|
||||
uint8_t sceneryType = selectedTab.SceneryType;
|
||||
uint16_t selectedScenery = selectedTab.EntryIndex;
|
||||
|
||||
if (selectedTab.IsUndefined())
|
||||
return;
|
||||
|
||||
CoordsXY gridPos;
|
||||
|
||||
switch (sceneryType)
|
||||
@@ -2611,8 +2609,13 @@ static void top_toolbar_tool_update_scenery(const ScreenCoordsXY& screenPos)
|
||||
if (gWindowSceneryEyedropperEnabled)
|
||||
return;
|
||||
|
||||
ScenerySelection selection = gWindowSceneryTabSelections[gWindowSceneryActiveTabIndex];
|
||||
if (gWindowSceneryActiveTabIndex >= gWindowSceneryTabSelections.size())
|
||||
{
|
||||
scenery_remove_ghost_tool_placement();
|
||||
return;
|
||||
}
|
||||
|
||||
const auto selection = gWindowSceneryTabSelections[gWindowSceneryActiveTabIndex];
|
||||
if (selection.IsUndefined())
|
||||
{
|
||||
scenery_remove_ghost_tool_placement();
|
||||
|
||||
@@ -23,8 +23,8 @@ struct Vehicle;
|
||||
enum class GuestListFilterType : int32_t;
|
||||
enum class ScatterToolDensity : uint8_t;
|
||||
|
||||
extern ScenerySelection gWindowSceneryTabSelections[];
|
||||
extern uint8_t gWindowSceneryActiveTabIndex;
|
||||
extern std::vector<ScenerySelection> gWindowSceneryTabSelections;
|
||||
extern size_t gWindowSceneryActiveTabIndex;
|
||||
extern bool gWindowSceneryScatterEnabled;
|
||||
extern uint16_t gWindowSceneryScatterSize;
|
||||
extern ScatterToolDensity gWindowSceneryScatterDensity;
|
||||
|
||||
@@ -324,12 +324,6 @@ struct ride_variables
|
||||
int32_t var_486;
|
||||
};
|
||||
|
||||
struct scenery_variables
|
||||
{
|
||||
ScenerySelection SelectedScenery;
|
||||
int16_t hover_counter;
|
||||
};
|
||||
|
||||
struct track_list_variables
|
||||
{
|
||||
bool track_list_being_updated;
|
||||
@@ -540,9 +534,9 @@ enum
|
||||
#define WC_RIDE_CONSTRUCTION__WIDX_ENTRANCE 29
|
||||
#define WC_RIDE_CONSTRUCTION__WIDX_EXIT 30
|
||||
#define WC_RIDE_CONSTRUCTION__WIDX_ROTATE 32
|
||||
#define WC_SCENERY__WIDX_SCENERY_TAB_1 4
|
||||
#define WC_SCENERY__WIDX_SCENERY_ROTATE_OBJECTS_BUTTON 25
|
||||
#define WC_SCENERY__WIDX_SCENERY_EYEDROPPER_BUTTON 30
|
||||
#define WC_SCENERY__WIDX_SCENERY_TAB_1 12
|
||||
#define WC_SCENERY__WIDX_SCENERY_ROTATE_OBJECTS_BUTTON 5
|
||||
#define WC_SCENERY__WIDX_SCENERY_EYEDROPPER_BUTTON 10
|
||||
#define WC_PEEP__WIDX_PATROL 10
|
||||
#define WC_PEEP__WIDX_ACTION_LBL 13
|
||||
#define WC_PEEP__WIDX_PICKUP 14
|
||||
|
||||
@@ -60,7 +60,6 @@ struct rct_window
|
||||
news_variables news;
|
||||
map_variables map;
|
||||
ride_variables ride;
|
||||
scenery_variables scenery;
|
||||
track_list_variables track_list;
|
||||
error_variables error;
|
||||
void* custom_info;
|
||||
|
||||
@@ -18,26 +18,16 @@ constexpr auto WINDOW_SCENERY_TAB_SELECTION_UNDEFINED = std::numeric_limits<uint
|
||||
|
||||
struct ScenerySelection
|
||||
{
|
||||
uint8_t SceneryType;
|
||||
ObjectEntryIndex EntryIndex;
|
||||
uint8_t SceneryType{};
|
||||
ObjectEntryIndex EntryIndex = OBJECT_ENTRY_INDEX_NULL;
|
||||
|
||||
inline bool operator==(const ScenerySelection& rhs)
|
||||
inline bool operator==(const ScenerySelection& rhs) const
|
||||
{
|
||||
return SceneryType == rhs.SceneryType && EntryIndex == rhs.EntryIndex;
|
||||
}
|
||||
|
||||
bool IsUndefined() const
|
||||
{
|
||||
return EntryIndex == WINDOW_SCENERY_TAB_SELECTION_UNDEFINED;
|
||||
}
|
||||
|
||||
void SetUndefined()
|
||||
{
|
||||
EntryIndex = WINDOW_SCENERY_TAB_SELECTION_UNDEFINED;
|
||||
}
|
||||
|
||||
static ScenerySelection CreateUndefined()
|
||||
{
|
||||
return ScenerySelection{ 0, WINDOW_SCENERY_TAB_SELECTION_UNDEFINED };
|
||||
return EntryIndex == OBJECT_ENTRY_INDEX_NULL;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user