1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-27 00:34:46 +01:00

Fix #24077: Track Designer crashes when clicking the park fence

This commit is contained in:
Michael Steenbeek
2025-03-25 21:50:37 +01:00
committed by GitHub
parent 6b57ec82ff
commit 5ad0f5b411
5 changed files with 82 additions and 105 deletions

View File

@@ -54,8 +54,8 @@ static int32_t _numAvailableObjectsForType[EnumValue(ObjectType::count)];
static void SetupInUseSelectionFlags();
static void SetupTrackDesignerObjects();
static void SetupTrackManagerObjects();
static void WindowEditorObjectSelectionSelectDefaultObjects();
static void SelectDesignerObjects();
static void selectScenarioEditorObjects();
static void selectTrackDesignerObjects();
static void ReplaceSelectedWaterPalette(const ObjectRepositoryItem* item);
/**
@@ -105,7 +105,7 @@ static void SetupTrackDesignerObjects()
{
int32_t numObjects = static_cast<int32_t>(ObjectRepositoryGetItemsCount());
const ObjectRepositoryItem* items = ObjectRepositoryGetItems();
SelectDesignerObjects();
selectTrackDesignerObjects();
for (int32_t i = 0; i < numObjects; i++)
{
uint8_t* selectionFlags = &_objectSelectionFlags[i];
@@ -344,7 +344,7 @@ void Sub6AB211()
// To prevent it breaking in scenario mode.
if (gLegacyScene == LegacyScene::scenarioEditor)
{
WindowEditorObjectSelectionSelectDefaultObjects();
selectScenarioEditorObjects();
}
}
@@ -431,11 +431,19 @@ void UnloadUnselectedObjects()
*
* rct2: 0x006AA805
*/
static void WindowEditorObjectSelectionSelectDefaultObjects()
static void selectScenarioEditorObjects()
{
if (_numSelectedObjectsForType[0] == 0)
{
for (auto defaultSelectedObject : DefaultSelectedObjects)
for (auto designerSelectedObject : kCommonScenarioAndTrackDesignerObjects)
{
WindowEditorObjectSelectionSelectObject(
0,
INPUT_FLAG_EDITOR_OBJECT_SELECT | INPUT_FLAG_EDITOR_OBJECT_1
| INPUT_FLAG_EDITOR_OBJECT_SELECT_OBJECTS_IN_SCENERY_GROUP,
ObjectEntryDescriptor(designerSelectedObject));
}
for (auto defaultSelectedObject : kDefaultScenarioObjects)
{
WindowEditorObjectSelectionSelectObject(
0,
@@ -446,11 +454,11 @@ static void WindowEditorObjectSelectionSelectDefaultObjects()
}
}
static void SelectDesignerObjects()
static void selectTrackDesignerObjects()
{
if (_numSelectedObjectsForType[0] == 0)
{
for (auto designerSelectedObject : DesignerSelectedObjects)
for (auto designerSelectedObject : kCommonScenarioAndTrackDesignerObjects)
{
WindowEditorObjectSelectionSelectObject(
0,