From dc2a099b4bc9b6344f0503e43675b085fef7fa9f Mon Sep 17 00:00:00 2001 From: AdAstra-LD <76622070+AdAstra-LD@users.noreply.github.com> Date: Thu, 19 Dec 2024 22:58:54 +0100 Subject: [PATCH] Fixed Event Editor map lookup when testing warps --- DS_Map/Main Window.cs | 52 ++++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/DS_Map/Main Window.cs b/DS_Map/Main Window.cs index 5cdf5de..2ea52af 100644 --- a/DS_Map/Main Window.cs +++ b/DS_Map/Main Window.cs @@ -992,19 +992,6 @@ namespace DSPRE { return; } - // Creating a dictionary linking events to headers to fetch header data for Event Editor - if (PatchToolboxDialog.flag_DynamicHeadersPatchApplied || PatchToolboxDialog.CheckFilesDynamicHeadersPatchApplied()) { - for (ushort i = 0; i < internalNames.Count; i++) { - MapHeader h = MapHeader.LoadFromFile(RomInfo.gameDirs[DirNames.dynamicHeaders].unpackedDir + "\\" + i.ToString("D4"), i, 0); - eventToHeader[h.eventFileID] = i; - } - } else { - for (ushort i = 0; i < internalNames.Count; i++) { - MapHeader h = MapHeader.LoadFromARM9(i); - eventToHeader[h.eventFileID] = i; - } - } - /*Add list of options to each control */ currentTextArchive = new TextArchive(RomInfo.locationNamesTextNumber); @@ -5470,6 +5457,19 @@ namespace DSPRE { eventMatrixUpDown.Maximum = romInfo.GetMatrixCount() - 1; eventAreaDataUpDown.Maximum = romInfo.GetAreaDataCount() - 1; + // Creating a dictionary linking events to headers to fetch header data for Event Editor + if (PatchToolboxDialog.flag_DynamicHeadersPatchApplied || PatchToolboxDialog.CheckFilesDynamicHeadersPatchApplied()) { + for (ushort i = 0; i < internalNames.Count; i++) { + MapHeader h = MapHeader.LoadFromFile(RomInfo.gameDirs[DirNames.dynamicHeaders].unpackedDir + "\\" + i.ToString("D4"), i, 0); + eventToHeader[h.eventFileID] = i; + } + } else { + for (ushort i = 0; i < internalNames.Count; i++) { + MapHeader h = MapHeader.LoadFromARM9(i); + eventToHeader[h.eventFileID] = i; + } + } + Helpers.EnableHandlers(); selectEventComboBox.SelectedIndex = 0; @@ -5680,10 +5680,15 @@ namespace DSPRE { if (Helpers.HandlersDisabled) { return; } - Helpers.DisableHandlers(); + ChangeLoadedEventFile(selectEventComboBox.SelectedIndex, 0); + } + + private void ChangeLoadedEventFile(int evfile, ushort mapHeader) { + Helpers.DisableHandlers(); + /* Load events data into EventFile class instance */ - currentEvFile = new EventFile(selectEventComboBox.SelectedIndex); + currentEvFile = new EventFile(evfile); /* Update ListBoxes */ FillSpawnablesBox(); @@ -5691,7 +5696,7 @@ namespace DSPRE { FillTriggersBox(); FillWarpsBox(); - if (eventToHeader.TryGetValue((ushort)selectEventComboBox.SelectedIndex, out ushort mapHeader)) { + if (mapHeader > 0 || eventToHeader.TryGetValue((ushort)selectEventComboBox.SelectedIndex, out mapHeader)) { MapHeader h; if (PatchToolboxDialog.flag_DynamicHeadersPatchApplied || PatchToolboxDialog.CheckFilesDynamicHeadersPatchApplied()) { h = MapHeader.LoadFromFile(RomInfo.gameDirs[DirNames.dynamicHeaders].unpackedDir + "\\" + mapHeader.ToString("D4"), mapHeader, 0); @@ -5716,6 +5721,7 @@ namespace DSPRE { CenterEventViewOnEntities(); } + private void showEventsCheckBoxes_CheckedChanged(object sender, EventArgs e) { if (Helpers.HandlersDisabled) { return; @@ -6583,20 +6589,26 @@ namespace DSPRE { if (new EventFile(destHeader.eventFileID).warps.Count < destAnchor + 1) { DialogResult d = MessageBox.Show("The selected warp's destination anchor doesn't exist.\n" + "Do you want to open the destination map anyway?", "Warp is not connected", MessageBoxButtons.YesNo, MessageBoxIcon.Question); - if (d == DialogResult.No) - return; - else { + if (d == DialogResult.Yes) { eventMatrixUpDown.Value = destHeader.matrixID; eventAreaDataUpDown.Value = destHeader.areaDataID; + + Helpers.DisableHandlers(); selectEventComboBox.SelectedIndex = destHeader.eventFileID; + ChangeLoadedEventFile(destHeader.eventFileID, destHeaderID); + CenterEventViewOnEntities(); - return; } + return; } eventMatrixUpDown.Value = destHeader.matrixID; eventAreaDataUpDown.Value = destHeader.areaDataID; + + Helpers.DisableHandlers(); selectEventComboBox.SelectedIndex = destHeader.eventFileID; + ChangeLoadedEventFile(destHeader.eventFileID, destHeaderID); + warpsListBox.SelectedIndex = destAnchor; centerEventViewOnSelectedEvent_Click(sender, e);