From 591138541abecb385db369ab248a960deda8e4f6 Mon Sep 17 00:00:00 2001 From: AdAstra-LD <76622070+AdAstra-LD@users.noreply.github.com> Date: Wed, 14 Jul 2021 05:22:45 +0200 Subject: [PATCH] Misc update - Added support for HGSS """hidden""" cameras and added new Cam16 picture - Fixed handling of HGSS headers' last 32 bits (some things are still unimplemented) --- Fixed HGSS area icon numbers - Fixed Advanced Header Search to make it compatible with the dynamic headers patch - Fixed Header load function calls (previously incompatible with dynamic headers patch) - Fixed event editor not updating coordinates when dragging events across the map - New warning popup before using Camera Editor, if overlay1 is compressed - Minor refactor --- DS_Map/DSPRE.csproj | 45 +- DS_Map/HeaderSearch.Designer.cs | 51 +- DS_Map/HeaderSearch.cs | 315 +++++++----- DS_Map/Main Window.Designer.cs | 477 +++++++++--------- DS_Map/Main Window.cs | 265 ++++++---- DS_Map/Main Window.resx | 2 +- DS_Map/Properties/Resources.Designer.cs | 235 ++++----- DS_Map/Properties/Resources.resx | 41 +- DS_Map/ROMFiles/EventFile.cs | 100 ++-- DS_Map/ROMFiles/MapHeader.cs | 128 ++--- DS_Map/ROMToolboxDialog.cs | 33 +- .../Graphics/Area Icons/hgsslake.png | Bin 0 -> 303 bytes .../Graphics/Area Icons/hgsswater.png | Bin 424 -> 306 bytes .../Camera Angles/HGSS/hgsscamera16.png | Bin 0 -> 21465 bytes DS_Map/Resources/PokeDatabase.cs | 207 ++++---- DS_Map/Resources/hgsscamera16.png | Bin 0 -> 23386 bytes DS_Map/SpawnEditor.cs | 10 +- 17 files changed, 1045 insertions(+), 864 deletions(-) create mode 100644 DS_Map/Resources/Graphics/Area Icons/hgsslake.png create mode 100644 DS_Map/Resources/Graphics/Camera Angles/HGSS/hgsscamera16.png create mode 100644 DS_Map/Resources/hgsscamera16.png diff --git a/DS_Map/DSPRE.csproj b/DS_Map/DSPRE.csproj index 49b0eed..1245840 100644 --- a/DS_Map/DSPRE.csproj +++ b/DS_Map/DSPRE.csproj @@ -95,6 +95,11 @@ + + True + True + Resources.resx + @@ -105,11 +110,6 @@ CommandsDatabase.cs - - True - True - Resources.resx - True True @@ -372,6 +372,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -401,6 +434,7 @@ + @@ -426,6 +460,7 @@ + Always diff --git a/DS_Map/HeaderSearch.Designer.cs b/DS_Map/HeaderSearch.Designer.cs index def59d0..510a9e3 100644 --- a/DS_Map/HeaderSearch.Designer.cs +++ b/DS_Map/HeaderSearch.Designer.cs @@ -30,11 +30,13 @@ this.valueTextBox = new System.Windows.Forms.TextBox(); this.startSearchButton = new System.Windows.Forms.Button(); this.headerSearchResetButton = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.autoSearchCB = new System.Windows.Forms.CheckBox(); this.SuspendLayout(); // // arm9expansionTextLBL // - this.arm9expansionTextLBL.Location = new System.Drawing.Point(0, 0); + this.arm9expansionTextLBL.Location = new System.Drawing.Point(0, -10); this.arm9expansionTextLBL.Name = "arm9expansionTextLBL"; this.arm9expansionTextLBL.Size = new System.Drawing.Size(100, 23); this.arm9expansionTextLBL.TabIndex = 15; @@ -44,7 +46,7 @@ this.fieldToSearch1ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.fieldToSearch1ComboBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.fieldToSearch1ComboBox.FormattingEnabled = true; - this.fieldToSearch1ComboBox.Location = new System.Drawing.Point(11, 37); + this.fieldToSearch1ComboBox.Location = new System.Drawing.Point(11, 27); this.fieldToSearch1ComboBox.Name = "fieldToSearch1ComboBox"; this.fieldToSearch1ComboBox.Size = new System.Drawing.Size(190, 24); this.fieldToSearch1ComboBox.TabIndex = 6; @@ -54,37 +56,38 @@ // this.explanationLabel.AutoSize = true; this.explanationLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.explanationLabel.Location = new System.Drawing.Point(6, 10); + this.explanationLabel.Location = new System.Drawing.Point(8, 9); this.explanationLabel.Name = "explanationLabel"; - this.explanationLabel.Size = new System.Drawing.Size(269, 15); + this.explanationLabel.Size = new System.Drawing.Size(111, 15); this.explanationLabel.TabIndex = 7; - this.explanationLabel.Text = "Find all headers that meet this condition:"; + this.explanationLabel.Text = "Header Property"; // // operator1ComboBox // this.operator1ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.operator1ComboBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.operator1ComboBox.FormattingEnabled = true; - this.operator1ComboBox.Location = new System.Drawing.Point(11, 72); + this.operator1ComboBox.Location = new System.Drawing.Point(11, 82); this.operator1ComboBox.Name = "operator1ComboBox"; this.operator1ComboBox.Size = new System.Drawing.Size(190, 24); this.operator1ComboBox.TabIndex = 8; + this.operator1ComboBox.SelectedIndexChanged += new System.EventHandler(this.operator1ComboBox_SelectedIndexChanged); // // valueTextBox // this.valueTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.valueTextBox.Location = new System.Drawing.Point(11, 108); + this.valueTextBox.Location = new System.Drawing.Point(11, 110); this.valueTextBox.MaxLength = 16; this.valueTextBox.Name = "valueTextBox"; this.valueTextBox.Size = new System.Drawing.Size(190, 22); this.valueTextBox.TabIndex = 9; - this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown); + this.valueTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyUp); // // startSearchButton // this.startSearchButton.Image = global::DSPRE.Properties.Resources.wideLensImage; this.startSearchButton.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; - this.startSearchButton.Location = new System.Drawing.Point(209, 37); + this.startSearchButton.Location = new System.Drawing.Point(209, 11); this.startSearchButton.Name = "startSearchButton"; this.startSearchButton.RightToLeft = System.Windows.Forms.RightToLeft.No; this.startSearchButton.Size = new System.Drawing.Size(86, 43); @@ -98,7 +101,7 @@ // this.headerSearchResetButton.Image = global::DSPRE.Properties.Resources.wideLensImageTransp; this.headerSearchResetButton.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; - this.headerSearchResetButton.Location = new System.Drawing.Point(209, 87); + this.headerSearchResetButton.Location = new System.Drawing.Point(209, 60); this.headerSearchResetButton.Name = "headerSearchResetButton"; this.headerSearchResetButton.RightToLeft = System.Windows.Forms.RightToLeft.No; this.headerSearchResetButton.Size = new System.Drawing.Size(86, 43); @@ -108,12 +111,36 @@ this.headerSearchResetButton.UseVisualStyleBackColor = true; this.headerSearchResetButton.Click += new System.EventHandler(this.headerSearchResetButton_Click); // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(8, 64); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(54, 15); + this.label1.TabIndex = 18; + this.label1.Text = "Criteria"; + // + // autoSearchCB + // + this.autoSearchCB.AutoSize = true; + this.autoSearchCB.Checked = true; + this.autoSearchCB.CheckState = System.Windows.Forms.CheckState.Checked; + this.autoSearchCB.Location = new System.Drawing.Point(212, 113); + this.autoSearchCB.Name = "autoSearchCB"; + this.autoSearchCB.Size = new System.Drawing.Size(82, 17); + this.autoSearchCB.TabIndex = 19; + this.autoSearchCB.Text = "AutoSearch"; + this.autoSearchCB.UseVisualStyleBackColor = true; + // // HeaderSearch // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.ClientSize = new System.Drawing.Size(304, 145); + this.ClientSize = new System.Drawing.Size(304, 144); + this.Controls.Add(this.autoSearchCB); + this.Controls.Add(this.label1); this.Controls.Add(this.headerSearchResetButton); this.Controls.Add(this.startSearchButton); this.Controls.Add(this.valueTextBox); @@ -139,5 +166,7 @@ private System.Windows.Forms.TextBox valueTextBox; private System.Windows.Forms.Button startSearchButton; private System.Windows.Forms.Button headerSearchResetButton; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.CheckBox autoSearchCB; } } \ No newline at end of file diff --git a/DS_Map/HeaderSearch.cs b/DS_Map/HeaderSearch.cs index fdba27f..74a86dd 100644 --- a/DS_Map/HeaderSearch.cs +++ b/DS_Map/HeaderSearch.cs @@ -1,45 +1,66 @@ using DSPRE.ROMFiles; -using System; using System.Collections.Generic; + +using System; using System.Windows.Forms; +using static DSPRE.RomInfo; +using System.Reflection; namespace DSPRE { - + public partial class HeaderSearch : Form { - private List searchableHeaderFieldsList = new List() { - "Area Data (ID)", - "Camera Angle (ID)", - "Event File (ID)", - "Internal Name", - "Level Script (ID)", - "Matrix (ID)", - "Music Day (ID)", - //Maybe in the future - "Music Day (Name)", - "Music Night (ID)", - //Maybe in the future - "Music Night (Name)", - "Script File (ID)", - "Text Archive (ID)", - "Weather (ID)", + public static readonly Dictionary searchableHeaderFieldsDict = new Dictionary() { + [MapHeader.SearchableFields.AreaDataID] = "Area Data (ID)", + [MapHeader.SearchableFields.CameraAngleID] = "Camera Angle (ID)", + [MapHeader.SearchableFields.EventFileID] = "Event File (ID)", + [MapHeader.SearchableFields.InternalName] = "Internal Name", + [MapHeader.SearchableFields.LevelScriptID] = "Level Script (ID)", + [MapHeader.SearchableFields.MatrixID] = "Matrix (ID)", + [MapHeader.SearchableFields.MusicDayID] = "Music Day (ID)", + //[MapHeader.SearchableFields.MusicDayName] = "Music Day (Name)", + [MapHeader.SearchableFields.MusicNightID] = "Music Night (ID)", + //[MapHeader.SearchableFields.MusicNightName] = "Music Night (Name)", + [MapHeader.SearchableFields.ScriptFileID] = "Script File (ID)", + [MapHeader.SearchableFields.TextArchiveID] = "Text Archive (ID)", + [MapHeader.SearchableFields.WeatherID] = "Weather (ID)" + }; + public enum NumOperators : byte { + //Order matters! + Equal, + Different, + Less, + Greater, + LessOrEqual, + GreaterOrEqual }; - private List headerSearchNumericOperatorsList = new List() { - "Equals", - "Is Different than", - "Is Less than", - "Is Less than or Equal to", - "Is Greater than", - "Is Greater than or Equal to", - }; - private List headerSearchTextOperatorsList = new List() { - "Is Exactly", - "Is Not", - "Contains", - "Does not contain" + public enum TextOperators : byte { + //Order matters! + Contains, + DoesNotContain, + IsExactly, + IsNot }; - private string[] searchableHeaderFields; - private string[] headerSearchNumericOperators; - private string[] headerSearchTextOperators; + private static readonly Dictionary numOperatorsDict = new Dictionary() { + //Order matters! + + [NumOperators.Equal] = "Equals", + [NumOperators.Different] = "Is Different than", + [NumOperators.Less] = "Is Less than", + [NumOperators.Greater] = "Is Greater than", + [NumOperators.LessOrEqual] = "Is Less than or Equal to", + [NumOperators.GreaterOrEqual] = "Is Greater than or Equal to", + }; + + private static readonly Dictionary textOperatorsDict = new Dictionary() { + //Order matters! + + [TextOperators.Contains] = "Contains", + [TextOperators.DoesNotContain] = "Does not contain", + [TextOperators.IsExactly] = "Is Exactly", + [TextOperators.IsNot] = "Is Not", + }; private List intNames; private ListBox headerListBox; @@ -49,80 +70,105 @@ namespace DSPRE { public HeaderSearch(ref List internalNames, ListBox headerListBox, ToolStripStatusLabel statusLabel) { InitializeComponent(); - searchableHeaderFields = searchableHeaderFieldsList.ToArray(); - headerSearchNumericOperators = headerSearchNumericOperatorsList.ToArray(); - headerSearchTextOperators = headerSearchTextOperatorsList.ToArray(); intNames = internalNames; this.headerListBox = headerListBox; this.statusLabel = statusLabel; - fieldToSearch1ComboBox.Items.AddRange(searchableHeaderFields); + foreach (string elem in searchableHeaderFieldsDict.Values) { + fieldToSearch1ComboBox.Items.Add(elem); + } + fieldToSearch1ComboBox.SelectedIndex = 0; operator1ComboBox.SelectedIndex = 0; } - private void fieldToSearch1ComboBox_SelectedIndexChanged(object sender, EventArgs e) { - UpdateOperators(operator1ComboBox, fieldToSearch1ComboBox); - } - #region Helper Methods private void UpdateOperators(ComboBox operatorComboBox, ComboBox fieldToSearchComboBox) { operatorComboBox.Items.Clear(); if (fieldToSearchComboBox.SelectedItem.ToString().Contains("ID")) { - operatorComboBox.Items.AddRange(headerSearchNumericOperators); + foreach (string elem in numOperatorsDict.Values) { + operatorComboBox.Items.Add(elem); + } valueTextBox.MaxLength = 5; } else { - operatorComboBox.Items.AddRange(headerSearchTextOperators); + foreach (string elem in textOperatorsDict.Values) { + operatorComboBox.Items.Add(elem); + } valueTextBox.MaxLength = 16; } operatorComboBox.SelectedIndex = 0; } #endregion - public static List advancedSearch(ushort startID, ushort finalID, List intNames, string fieldToSearch, string oper, string valToSearch) { - if (fieldToSearch == "" || oper == "" || valToSearch == "") + public static void ResetResults(ListBox headerListBox, List intNames, bool prependNumbers) { + if (headerListBox.Items.Count < intNames.Count) { + + headerListBox.Enabled = true; + headerListBox.Items.Clear(); + + if (prependNumbers) { + for (int i = 0; i < intNames.Count; i++) { + string name = intNames[i]; + headerListBox.Items.Add(i.ToString("D3") + MapHeader.nameSeparator + name); + } + } else { + headerListBox.Items.AddRange(intNames.ToArray()); + } + } + } + public static List AdvancedSearch(ushort startID, ushort finalID, List intNames, int fieldToSearch, int oper, string valToSearch) { + if (fieldToSearch < 0 || oper < 0 || valToSearch == "") return null; List result = new List(); switch (fieldToSearch) { - case "Internal Name": + case (int)MapHeader.SearchableFields.InternalName: for (ushort i = startID; i < finalID; i++) { - if (oper.Equals("Is Exactly")) { - if (intNames[i].Equals(valToSearch)) { - result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); - } - } else if (oper.Equals("Is Not")) { - if (!intNames[i].Equals(valToSearch)) { - result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); - } - } else if (oper.Equals("Contains")) { - if (intNames[i].IndexOf(valToSearch, StringComparison.InvariantCultureIgnoreCase) >= 0) { - result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); - } - } else if (oper.Equals("Does not contain")) { - if (intNames[i].IndexOf(valToSearch, StringComparison.InvariantCultureIgnoreCase) < 0) { - result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); - } + switch (oper) { + case (int)TextOperators.IsExactly: + if (intNames[i].Equals(valToSearch)) { + result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); + } + break; + case (int)TextOperators.IsNot: + if (!intNames[i].Equals(valToSearch)) { + result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); + } + break; + case (int)TextOperators.Contains: + if (intNames[i].IndexOf(valToSearch, StringComparison.InvariantCultureIgnoreCase) >= 0) { + result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); + } + break; + case (int)TextOperators.DoesNotContain: + if (intNames[i].IndexOf(valToSearch, StringComparison.InvariantCultureIgnoreCase) < 0) { + result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); + } + break; + default: + Console.WriteLine("Unrecognized operand!!!"); + break; } } break; - case "Music Day (Name)": + //case (int)MapHeader.SearchableFields.MusicDayName: //Maybe in the future - break; - case "Music Night (Name)": + //break; + //case (int)MapHeader.SearchableFields.MusicNightName: //Maybe in the future - break; + //break; default: - string[] fieldSplit = fieldToSearch.Split(); - fieldSplit[0] = fieldSplit[0].ToLower(); - fieldSplit[fieldSplit.Length - 1] = fieldSplit[fieldSplit.Length - 1].Replace("(", ""); //Remove ( from string - fieldSplit[fieldSplit.Length - 1] = fieldSplit[fieldSplit.Length - 1].Replace(")", ""); //Remove ) from string + string[] fieldSplit = searchableHeaderFieldsDict[(MapHeader.SearchableFields)fieldToSearch].Split(); + + fieldSplit[0] = fieldSplit[0].ToLower(); + fieldSplit[fieldSplit.Length - 1] = fieldSplit[fieldSplit.Length - 1].Replace("(", "").Replace(")", ""); //Remove ( and ) from string + + PropertyInfo property = typeof(MapHeader).GetProperty(String.Join("", fieldSplit)); + ushort numToSearch; - string property = String.Join("", fieldSplit); - ushort numToSearch = 0; try { numToSearch = ushort.Parse(valToSearch); } catch (OverflowException) { @@ -131,54 +177,77 @@ namespace DSPRE { } for (ushort i = startID; i < finalID; i++) { - var headerFieldEntry = typeof(MapHeader).GetProperty(property).GetValue(MapHeader.LoadFromARM9(i), null); - int headerField = int.Parse(headerFieldEntry.ToString()); - - if (oper.Equals("Is Less than")) { - if (headerField < numToSearch) { - result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); - } - } else if (oper.Equals("Equals")) { - if (headerField == numToSearch) { - result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); - } - } else if (oper.StartsWith("Is Greater")) { - if (headerField > numToSearch) { - result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); - } - } else if (oper.StartsWith("Is Less than or Equal")) { - if (headerField <= numToSearch) { - result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); - } - } else if (oper.StartsWith("Is Greater than or Equal")) { - if (headerField >= numToSearch) { - result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); - } - } else if (oper.StartsWith("Is Different")) { - if (headerField != numToSearch) { - result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); - } + MapHeader h; + if (ROMToolboxDialog.flag_DynamicHeadersPatchApplied || ROMToolboxDialog.CheckFilesDynamicHeadersPatchApplied()) { + h = MapHeader.LoadFromFile(RomInfo.gameDirs[DirNames.dynamicHeaders].unpackedDir + "\\" + i.ToString("D4"), i, 0); } else { - Console.WriteLine("Unrecognized operand!!!"); - break; + h = MapHeader.LoadFromARM9(i); + } + + int headerField = int.Parse(property.GetValue(h, null).ToString()); + + switch (oper) { + case (int)NumOperators.Less: + if (headerField < numToSearch) { + result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); + } + break; + case (int)NumOperators.Equal: + if (headerField == numToSearch) { + result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); + } + break; + case (int)NumOperators.Greater: + if (headerField > numToSearch) { + result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); + } + break; + case (int)NumOperators.LessOrEqual: + if (headerField <= numToSearch) { + result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); + } + break; + case (int)NumOperators.GreaterOrEqual: + if (headerField >= numToSearch) { + result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); + } + break; + case (int)NumOperators.Different: + if (headerField != numToSearch) { + result.Add(i.ToString("D3") + MapHeader.nameSeparator + intNames[i]); + } + break; + default: + Console.WriteLine("Unrecognized operand!!!"); + break; } } break; } return result; } - private void startSearchButton_Click(object sender, EventArgs e) { + private void startSearchButton_Click(object sender, EventArgs e) { + StartSearch(showDialog: true); + } + + private void StartSearch(bool showDialog = true) { if (valueTextBox.Text == "") { - MessageBox.Show("Value to search is empty", "Can't search", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + //if (showDialog) { + // MessageBox.Show("Value to search is empty", "Can't search", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + //} + headerSearchResetButton_Click(null, null); return; } List result; headerListBox.Items.Clear(); - try { - result = advancedSearch(0, (ushort)intNames.Count, intNames, fieldToSearch1ComboBox.Text, operator1ComboBox.SelectedItem.ToString(), valueTextBox.Text); + + try { + result = AdvancedSearch(0, (ushort)intNames.Count, intNames, fieldToSearch1ComboBox.SelectedIndex, operator1ComboBox.SelectedIndex, valueTextBox.Text); } catch (FormatException) { - MessageBox.Show("Make sure the value to search is correct.", "Format Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + if (showDialog) { + MessageBox.Show("Make sure the value to search is correct.", "Format Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } valueTextBox.Clear(); headerListBox.Items.Add("Search parameters are invalid"); headerListBox.Enabled = false; @@ -187,7 +256,7 @@ namespace DSPRE { string searchConfiguration = fieldToSearch1ComboBox.Text + " " + operator1ComboBox.Text.ToLower() + " " + '"' + valueTextBox.Text + '"'; if (result is null || result.Count <= 0) { - string res = "No header suits the search criteria."; + string res = "No header's " + searchConfiguration; headerListBox.Items.Add(res); headerListBox.Enabled = false; statusLabel.Text = res; @@ -200,30 +269,28 @@ namespace DSPRE { } Update(); } - private void valueTextBox_KeyDown(object sender, KeyEventArgs e) { - if (e.KeyCode == Keys.Enter) { - startSearchButton_Click(null, null); - } + + private void valueTextBox_KeyUp(object sender, KeyEventArgs e) { + if (autoSearchCB.Checked) { + StartSearch(showDialog: false); + } else if (e.KeyCode == Keys.Enter) { + StartSearch(showDialog: true); + } } private void headerSearchResetButton_Click(object sender, EventArgs e) { ResetResults(headerListBox, intNames, prependNumbers: true); valueTextBox.Clear(); statusLabel.Text = "Ready"; } - public static void ResetResults(ListBox headerListBox, List intNames, bool prependNumbers) { - if (headerListBox.Items.Count < intNames.Count) { - - headerListBox.Enabled = true; - headerListBox.Items.Clear(); - - if (prependNumbers) { - for (int i = 0; i < intNames.Count; i++) { - string name = intNames[i]; - headerListBox.Items.Add(i.ToString("D3") + MapHeader.nameSeparator + name); - } - } else { - headerListBox.Items.AddRange(intNames.ToArray()); - } + private void fieldToSearch1ComboBox_SelectedIndexChanged(object sender, EventArgs e) { + UpdateOperators(operator1ComboBox, fieldToSearch1ComboBox); + if (autoSearchCB.Checked) { + StartSearch(showDialog: false); + } + } + private void operator1ComboBox_SelectedIndexChanged(object sender, EventArgs e) { + if (autoSearchCB.Checked) { + StartSearch(showDialog: false); } } } diff --git a/DS_Map/Main Window.Designer.cs b/DS_Map/Main Window.Designer.cs index 75f0d53..298f3ee 100644 --- a/DS_Map/Main Window.Designer.cs +++ b/DS_Map/Main Window.Designer.cs @@ -30,6 +30,8 @@ { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainProgram)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle16 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle17 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); @@ -45,8 +47,6 @@ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle13 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle14 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle15 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle16 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle17 = new System.Windows.Forms.DataGridViewCellStyle(); this.mainTabControl = new System.Windows.Forms.TabControl(); this.headerEditorTabPage = new System.Windows.Forms.TabPage(); this.removeLastHeaderBTN = new System.Windows.Forms.Button(); @@ -114,6 +114,7 @@ this.areaSettingsComboBox = new System.Windows.Forms.ComboBox(); this.locationNameComboBox = new System.Windows.Forms.ComboBox(); this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.cameraUpDown = new System.Windows.Forms.NumericUpDown(); this.weatherUpDown = new System.Windows.Forms.NumericUpDown(); this.musicNightUpDown = new System.Windows.Forms.NumericUpDown(); this.musicDayUpDown = new System.Windows.Forms.NumericUpDown(); @@ -180,11 +181,8 @@ this.matrixNameLabel = new System.Windows.Forms.Label(); this.matrixTabControl = new System.Windows.Forms.TabControl(); this.headersTabPage = new System.Windows.Forms.TabPage(); - this.headersGridView = new DSPRE.DataGridViewDoubleBuffered(); this.heightsTabPage = new System.Windows.Forms.TabPage(); - this.heightsGridView = new DSPRE.DataGridViewDoubleBuffered(); this.mapFilesTabPage = new System.Windows.Forms.TabPage(); - this.mapFilesGridView = new DSPRE.DataGridViewDoubleBuffered(); this.matrixNameTextBox = new System.Windows.Forms.TextBox(); this.heightUpDown = new System.Windows.Forms.NumericUpDown(); this.widthUpDown = new System.Windows.Forms.NumericUpDown(); @@ -358,14 +356,14 @@ this.groupBox5 = new System.Windows.Forms.GroupBox(); this.goToSignButton = new System.Windows.Forms.Button(); this.signMatrixYLabel = new System.Windows.Forms.Label(); - this.spawnableMatrixXUpDown = new System.Windows.Forms.NumericUpDown(); + this.spawnableXMatrixUpDown = new System.Windows.Forms.NumericUpDown(); this.signMatrixXLabel = new System.Windows.Forms.Label(); - this.spawnableMatrixYUpDown = new System.Windows.Forms.NumericUpDown(); + this.spawnableYMatrixUpDown = new System.Windows.Forms.NumericUpDown(); this.signZLabel = new System.Windows.Forms.Label(); - this.spawnableMapXUpDown = new System.Windows.Forms.NumericUpDown(); + this.spawnablexMapUpDown = new System.Windows.Forms.NumericUpDown(); this.spawnableUpDown = new System.Windows.Forms.NumericUpDown(); this.signMapXLabel = new System.Windows.Forms.Label(); - this.spawnableMapYUpDown = new System.Windows.Forms.NumericUpDown(); + this.spawnableYMapUpDown = new System.Windows.Forms.NumericUpDown(); this.signMapYLabel = new System.Windows.Forms.Label(); this.removeSpawnableButton = new System.Windows.Forms.Button(); this.addSpawnableButton = new System.Windows.Forms.Button(); @@ -606,6 +604,9 @@ this.spawnEditorToolStripButton = new System.Windows.Forms.ToolStripButton(); this.versionLabel = new System.Windows.Forms.Label(); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.headersGridView = new DSPRE.DataGridViewDoubleBuffered(); + this.heightsGridView = new DSPRE.DataGridViewDoubleBuffered(); + this.mapFilesGridView = new DSPRE.DataGridViewDoubleBuffered(); this.mainTabControl.SuspendLayout(); this.headerEditorTabPage.SuspendLayout(); this.worldmapCoordsGroupBox.SuspendLayout(); @@ -623,6 +624,7 @@ ((System.ComponentModel.ISupportInitialize)(this.areaIconPictureBox)).BeginInit(); this.nameGroupBox.SuspendLayout(); this.groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.cameraUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.weatherUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.musicNightUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.musicDayUpDown)).BeginInit(); @@ -636,11 +638,8 @@ this.matrixEditorTabPage.SuspendLayout(); this.matrixTabControl.SuspendLayout(); this.headersTabPage.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.headersGridView)).BeginInit(); this.heightsTabPage.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.heightsGridView)).BeginInit(); this.mapFilesTabPage.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.mapFilesGridView)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.heightUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.widthUpDown)).BeginInit(); this.mapEditorTabPage.SuspendLayout(); @@ -694,11 +693,11 @@ this.eventsTabControl.SuspendLayout(); this.signsTabPage.SuspendLayout(); this.groupBox5.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.spawnableMatrixXUpDown)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.spawnableMatrixYUpDown)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.spawnableMapXUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.spawnableXMatrixUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.spawnableYMatrixUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.spawnablexMapUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.spawnableUpDown)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.spawnableMapYUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.spawnableYMapUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.spawnableScriptUpDown)).BeginInit(); this.overworldsTabPage.SuspendLayout(); this.groupBox22.SuspendLayout(); @@ -769,6 +768,9 @@ this.menuStrip1.SuspendLayout(); this.statusStrip1.SuspendLayout(); this.mainToolStrip.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.headersGridView)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.heightsGridView)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.mapFilesGridView)).BeginInit(); this.SuspendLayout(); // // mainTabControl @@ -1551,6 +1553,7 @@ // groupBox2 // this.groupBox2.BackColor = System.Drawing.SystemColors.Window; + this.groupBox2.Controls.Add(this.cameraUpDown); this.groupBox2.Controls.Add(this.weatherUpDown); this.groupBox2.Controls.Add(this.musicNightUpDown); this.groupBox2.Controls.Add(this.musicDayUpDown); @@ -1577,6 +1580,19 @@ this.groupBox2.TabStop = false; this.groupBox2.Text = "Appearance && Sound"; // + // cameraUpDown + // + this.cameraUpDown.Location = new System.Drawing.Point(376, 108); + this.cameraUpDown.Maximum = new decimal(new int[] { + 255, + 0, + 0, + 0}); + this.cameraUpDown.Name = "cameraUpDown"; + this.cameraUpDown.Size = new System.Drawing.Size(45, 20); + this.cameraUpDown.TabIndex = 41; + this.cameraUpDown.ValueChanged += new System.EventHandler(this.cameraUpDown_ValueChanged); + // // weatherUpDown // this.weatherUpDown.Location = new System.Drawing.Point(14, 108); @@ -1755,9 +1771,9 @@ // this.cameraComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cameraComboBox.FormattingEnabled = true; - this.cameraComboBox.Location = new System.Drawing.Point(376, 106); + this.cameraComboBox.Location = new System.Drawing.Point(427, 107); this.cameraComboBox.Name = "cameraComboBox"; - this.cameraComboBox.Size = new System.Drawing.Size(196, 21); + this.cameraComboBox.Size = new System.Drawing.Size(145, 21); this.cameraComboBox.TabIndex = 9; this.cameraComboBox.SelectedIndexChanged += new System.EventHandler(this.cameraComboBox_SelectedIndexChanged); // @@ -2346,64 +2362,6 @@ this.headersTabPage.Text = "Map Headers"; this.headersTabPage.UseVisualStyleBackColor = true; // - // headersGridView - // - this.headersGridView.AllowUserToAddRows = false; - this.headersGridView.AllowUserToDeleteRows = false; - this.headersGridView.AllowUserToResizeColumns = false; - this.headersGridView.AllowUserToResizeRows = false; - dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.headersGridView.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1; - this.headersGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.headersGridView.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; - dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F); - dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.headersGridView.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2; - this.headersGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle3.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.ControlText; - dataGridViewCellStyle3.Format = "D4"; - dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.headersGridView.DefaultCellStyle = dataGridViewCellStyle3; - this.headersGridView.Location = new System.Drawing.Point(0, 0); - this.headersGridView.MultiSelect = false; - this.headersGridView.Name = "headersGridView"; - dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F); - dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.headersGridView.RowHeadersDefaultCellStyle = dataGridViewCellStyle4; - this.headersGridView.RowHeadersWidth = 50; - this.headersGridView.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; - dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle5.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.headersGridView.RowsDefaultCellStyle = dataGridViewCellStyle5; - this.headersGridView.RowTemplate.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.headersGridView.RowTemplate.Height = 18; - this.headersGridView.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.False; - this.headersGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; - this.headersGridView.ShowCellErrors = false; - this.headersGridView.Size = new System.Drawing.Size(1032, 597); - this.headersGridView.TabIndex = 1; - this.headersGridView.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.headersGridView_CellFormatting); - this.headersGridView.CellMouseDoubleClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.headersGridView_CellMouseDoubleClick); - this.headersGridView.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.headersGridView_CellValueChanged); - this.headersGridView.SelectionChanged += new System.EventHandler(this.headersGridView_SelectionChanged); - // // heightsTabPage // this.heightsTabPage.Controls.Add(this.heightsGridView); @@ -2414,62 +2372,6 @@ this.heightsTabPage.Text = "Map Heights"; this.heightsTabPage.UseVisualStyleBackColor = true; // - // heightsGridView - // - this.heightsGridView.AllowUserToAddRows = false; - this.heightsGridView.AllowUserToDeleteRows = false; - this.heightsGridView.AllowUserToResizeColumns = false; - this.heightsGridView.AllowUserToResizeRows = false; - dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.heightsGridView.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle6; - this.heightsGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.heightsGridView.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; - dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle7.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F); - dataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.heightsGridView.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle7; - this.heightsGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle8.Font = new System.Drawing.Font("Tahoma", 8.25F); - dataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText; - dataGridViewCellStyle8.Format = "D2"; - dataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.heightsGridView.DefaultCellStyle = dataGridViewCellStyle8; - this.heightsGridView.Location = new System.Drawing.Point(0, 0); - this.heightsGridView.MultiSelect = false; - this.heightsGridView.Name = "heightsGridView"; - dataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle9.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F); - dataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.heightsGridView.RowHeadersDefaultCellStyle = dataGridViewCellStyle9; - this.heightsGridView.RowHeadersWidth = 50; - this.heightsGridView.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; - dataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle10.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.heightsGridView.RowsDefaultCellStyle = dataGridViewCellStyle10; - this.heightsGridView.RowTemplate.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.heightsGridView.RowTemplate.Height = 18; - this.heightsGridView.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.False; - this.heightsGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; - this.heightsGridView.Size = new System.Drawing.Size(1032, 576); - this.heightsGridView.TabIndex = 2; - this.heightsGridView.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.heightsGridView_CellFormatting); - this.heightsGridView.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.heightsGridView_CellValueChanged); - this.heightsGridView.SelectionChanged += new System.EventHandler(this.heightsGridView_SelectionChanged); - // // mapFilesTabPage // this.mapFilesTabPage.Controls.Add(this.mapFilesGridView); @@ -2480,63 +2382,6 @@ this.mapFilesTabPage.Text = "Map Files"; this.mapFilesTabPage.UseVisualStyleBackColor = true; // - // mapFilesGridView - // - this.mapFilesGridView.AllowUserToAddRows = false; - this.mapFilesGridView.AllowUserToDeleteRows = false; - this.mapFilesGridView.AllowUserToResizeColumns = false; - this.mapFilesGridView.AllowUserToResizeRows = false; - dataGridViewCellStyle11.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.mapFilesGridView.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle11; - this.mapFilesGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.mapFilesGridView.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; - dataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle12.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle12.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F); - dataGridViewCellStyle12.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle12.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle12.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.mapFilesGridView.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle12; - this.mapFilesGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - dataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle13.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle13.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - dataGridViewCellStyle13.ForeColor = System.Drawing.SystemColors.ControlText; - dataGridViewCellStyle13.Format = "D4"; - dataGridViewCellStyle13.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle13.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle13.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.mapFilesGridView.DefaultCellStyle = dataGridViewCellStyle13; - this.mapFilesGridView.Location = new System.Drawing.Point(0, 0); - this.mapFilesGridView.MultiSelect = false; - this.mapFilesGridView.Name = "mapFilesGridView"; - dataGridViewCellStyle14.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle14.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle14.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F); - dataGridViewCellStyle14.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle14.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle14.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle14.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.mapFilesGridView.RowHeadersDefaultCellStyle = dataGridViewCellStyle14; - this.mapFilesGridView.RowHeadersWidth = 50; - this.mapFilesGridView.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; - dataGridViewCellStyle15.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle15.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.mapFilesGridView.RowsDefaultCellStyle = dataGridViewCellStyle15; - this.mapFilesGridView.RowTemplate.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.mapFilesGridView.RowTemplate.Height = 18; - this.mapFilesGridView.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.False; - this.mapFilesGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; - this.mapFilesGridView.Size = new System.Drawing.Size(1032, 576); - this.mapFilesGridView.TabIndex = 2; - this.mapFilesGridView.CellContentDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.mapFilesGridView_CellMouseDoubleClick); - this.mapFilesGridView.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.mapFilesGridView_CellFormatting); - this.mapFilesGridView.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.mapFilesGridView_CellValueChanged); - this.mapFilesGridView.SelectionChanged += new System.EventHandler(this.mapFilesGridView_SelectionChanged); - // // matrixNameTextBox // this.matrixNameTextBox.Location = new System.Drawing.Point(13, 73); @@ -4365,6 +4210,7 @@ this.eventAreaDataUpDown.Name = "eventAreaDataUpDown"; this.eventAreaDataUpDown.Size = new System.Drawing.Size(40, 20); this.eventAreaDataUpDown.TabIndex = 30; + this.eventAreaDataUpDown.ValueChanged += new System.EventHandler(this.eventAreaDataUpDown_ValueChanged); // // eventMapTextureLabel // @@ -4719,14 +4565,14 @@ // this.groupBox5.Controls.Add(this.goToSignButton); this.groupBox5.Controls.Add(this.signMatrixYLabel); - this.groupBox5.Controls.Add(this.spawnableMatrixXUpDown); + this.groupBox5.Controls.Add(this.spawnableXMatrixUpDown); this.groupBox5.Controls.Add(this.signMatrixXLabel); - this.groupBox5.Controls.Add(this.spawnableMatrixYUpDown); + this.groupBox5.Controls.Add(this.spawnableYMatrixUpDown); this.groupBox5.Controls.Add(this.signZLabel); - this.groupBox5.Controls.Add(this.spawnableMapXUpDown); + this.groupBox5.Controls.Add(this.spawnablexMapUpDown); this.groupBox5.Controls.Add(this.spawnableUpDown); this.groupBox5.Controls.Add(this.signMapXLabel); - this.groupBox5.Controls.Add(this.spawnableMapYUpDown); + this.groupBox5.Controls.Add(this.spawnableYMapUpDown); this.groupBox5.Controls.Add(this.signMapYLabel); this.groupBox5.Location = new System.Drawing.Point(223, 150); this.groupBox5.Name = "groupBox5"; @@ -4759,16 +4605,16 @@ // // spawnableMatrixXUpDown // - this.spawnableMatrixXUpDown.Location = new System.Drawing.Point(74, 74); - this.spawnableMatrixXUpDown.Maximum = new decimal(new int[] { + this.spawnableXMatrixUpDown.Location = new System.Drawing.Point(74, 74); + this.spawnableXMatrixUpDown.Maximum = new decimal(new int[] { 65535, 0, 0, 0}); - this.spawnableMatrixXUpDown.Name = "spawnableMatrixXUpDown"; - this.spawnableMatrixXUpDown.Size = new System.Drawing.Size(101, 20); - this.spawnableMatrixXUpDown.TabIndex = 16; - this.spawnableMatrixXUpDown.ValueChanged += new System.EventHandler(this.spawnableMatrixXUpDown_ValueChanged); + this.spawnableXMatrixUpDown.Name = "spawnableMatrixXUpDown"; + this.spawnableXMatrixUpDown.Size = new System.Drawing.Size(101, 20); + this.spawnableXMatrixUpDown.TabIndex = 16; + this.spawnableXMatrixUpDown.ValueChanged += new System.EventHandler(this.spawnableMatrixXUpDown_ValueChanged); // // signMatrixXLabel // @@ -4781,16 +4627,16 @@ // // spawnableMatrixYUpDown // - this.spawnableMatrixYUpDown.Location = new System.Drawing.Point(74, 104); - this.spawnableMatrixYUpDown.Maximum = new decimal(new int[] { + this.spawnableYMatrixUpDown.Location = new System.Drawing.Point(74, 104); + this.spawnableYMatrixUpDown.Maximum = new decimal(new int[] { 65535, 0, 0, 0}); - this.spawnableMatrixYUpDown.Name = "spawnableMatrixYUpDown"; - this.spawnableMatrixYUpDown.Size = new System.Drawing.Size(101, 20); - this.spawnableMatrixYUpDown.TabIndex = 18; - this.spawnableMatrixYUpDown.ValueChanged += new System.EventHandler(this.spawnableMatrixYUpDown_ValueChanged); + this.spawnableYMatrixUpDown.Name = "spawnableMatrixYUpDown"; + this.spawnableYMatrixUpDown.Size = new System.Drawing.Size(101, 20); + this.spawnableYMatrixUpDown.TabIndex = 18; + this.spawnableYMatrixUpDown.ValueChanged += new System.EventHandler(this.spawnableMatrixYUpDown_ValueChanged); // // signZLabel // @@ -4803,21 +4649,21 @@ // // spawnableMapXUpDown // - this.spawnableMapXUpDown.Location = new System.Drawing.Point(28, 38); - this.spawnableMapXUpDown.Maximum = new decimal(new int[] { + this.spawnablexMapUpDown.Location = new System.Drawing.Point(28, 38); + this.spawnablexMapUpDown.Maximum = new decimal(new int[] { 32768, 0, 0, 0}); - this.spawnableMapXUpDown.Minimum = new decimal(new int[] { + this.spawnablexMapUpDown.Minimum = new decimal(new int[] { 32768, 0, 0, -2147483648}); - this.spawnableMapXUpDown.Name = "spawnableMapXUpDown"; - this.spawnableMapXUpDown.Size = new System.Drawing.Size(36, 20); - this.spawnableMapXUpDown.TabIndex = 10; - this.spawnableMapXUpDown.ValueChanged += new System.EventHandler(this.spawnableMapXUpDown_ValueChanged); + this.spawnablexMapUpDown.Name = "spawnableMapXUpDown"; + this.spawnablexMapUpDown.Size = new System.Drawing.Size(36, 20); + this.spawnablexMapUpDown.TabIndex = 10; + this.spawnablexMapUpDown.ValueChanged += new System.EventHandler(this.spawnableMapXUpDown_ValueChanged); // // spawnableUpDown // @@ -4848,16 +4694,16 @@ // // spawnableMapYUpDown // - this.spawnableMapYUpDown.Location = new System.Drawing.Point(83, 38); - this.spawnableMapYUpDown.Maximum = new decimal(new int[] { + this.spawnableYMapUpDown.Location = new System.Drawing.Point(83, 38); + this.spawnableYMapUpDown.Maximum = new decimal(new int[] { 65535, 0, 0, 0}); - this.spawnableMapYUpDown.Name = "spawnableMapYUpDown"; - this.spawnableMapYUpDown.Size = new System.Drawing.Size(36, 20); - this.spawnableMapYUpDown.TabIndex = 12; - this.spawnableMapYUpDown.ValueChanged += new System.EventHandler(this.spawnableMapYUpDown_ValueChanged); + this.spawnableYMapUpDown.Name = "spawnableMapYUpDown"; + this.spawnableYMapUpDown.Size = new System.Drawing.Size(36, 20); + this.spawnableYMapUpDown.TabIndex = 12; + this.spawnableYMapUpDown.ValueChanged += new System.EventHandler(this.spawnableMapYUpDown_ValueChanged); // // signMapYLabel // @@ -7669,6 +7515,177 @@ this.versionLabel.TabIndex = 9; this.versionLabel.Text = "ROM:"; // + // headersGridView + // + this.headersGridView.AllowUserToAddRows = false; + this.headersGridView.AllowUserToDeleteRows = false; + this.headersGridView.AllowUserToResizeColumns = false; + this.headersGridView.AllowUserToResizeRows = false; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.headersGridView.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1; + this.headersGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.headersGridView.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F); + dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.headersGridView.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2; + this.headersGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle3.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle3.Format = "D4"; + dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.headersGridView.DefaultCellStyle = dataGridViewCellStyle3; + this.headersGridView.Location = new System.Drawing.Point(0, 0); + this.headersGridView.MultiSelect = false; + this.headersGridView.Name = "headersGridView"; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F); + dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.headersGridView.RowHeadersDefaultCellStyle = dataGridViewCellStyle4; + this.headersGridView.RowHeadersWidth = 50; + this.headersGridView.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; + dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle5.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.headersGridView.RowsDefaultCellStyle = dataGridViewCellStyle5; + this.headersGridView.RowTemplate.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.headersGridView.RowTemplate.Height = 18; + this.headersGridView.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.False; + this.headersGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.headersGridView.ShowCellErrors = false; + this.headersGridView.Size = new System.Drawing.Size(1032, 597); + this.headersGridView.TabIndex = 1; + this.headersGridView.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.headersGridView_CellFormatting); + this.headersGridView.CellMouseDoubleClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.headersGridView_CellMouseDoubleClick); + this.headersGridView.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.headersGridView_CellValueChanged); + this.headersGridView.SelectionChanged += new System.EventHandler(this.headersGridView_SelectionChanged); + // + // heightsGridView + // + this.heightsGridView.AllowUserToAddRows = false; + this.heightsGridView.AllowUserToDeleteRows = false; + this.heightsGridView.AllowUserToResizeColumns = false; + this.heightsGridView.AllowUserToResizeRows = false; + dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.heightsGridView.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle6; + this.heightsGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.heightsGridView.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; + dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle7.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F); + dataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.heightsGridView.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle7; + this.heightsGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle8.Font = new System.Drawing.Font("Tahoma", 8.25F); + dataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle8.Format = "D2"; + dataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.heightsGridView.DefaultCellStyle = dataGridViewCellStyle8; + this.heightsGridView.Location = new System.Drawing.Point(0, 0); + this.heightsGridView.MultiSelect = false; + this.heightsGridView.Name = "heightsGridView"; + dataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle9.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F); + dataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.heightsGridView.RowHeadersDefaultCellStyle = dataGridViewCellStyle9; + this.heightsGridView.RowHeadersWidth = 50; + this.heightsGridView.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; + dataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle10.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.heightsGridView.RowsDefaultCellStyle = dataGridViewCellStyle10; + this.heightsGridView.RowTemplate.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.heightsGridView.RowTemplate.Height = 18; + this.heightsGridView.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.False; + this.heightsGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.heightsGridView.Size = new System.Drawing.Size(1032, 576); + this.heightsGridView.TabIndex = 2; + this.heightsGridView.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.heightsGridView_CellFormatting); + this.heightsGridView.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.heightsGridView_CellValueChanged); + this.heightsGridView.SelectionChanged += new System.EventHandler(this.heightsGridView_SelectionChanged); + // + // mapFilesGridView + // + this.mapFilesGridView.AllowUserToAddRows = false; + this.mapFilesGridView.AllowUserToDeleteRows = false; + this.mapFilesGridView.AllowUserToResizeColumns = false; + this.mapFilesGridView.AllowUserToResizeRows = false; + dataGridViewCellStyle11.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.mapFilesGridView.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle11; + this.mapFilesGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.mapFilesGridView.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; + dataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle12.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle12.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F); + dataGridViewCellStyle12.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle12.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle12.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.mapFilesGridView.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle12; + this.mapFilesGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle13.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle13.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle13.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle13.Format = "D4"; + dataGridViewCellStyle13.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle13.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle13.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.mapFilesGridView.DefaultCellStyle = dataGridViewCellStyle13; + this.mapFilesGridView.Location = new System.Drawing.Point(0, 0); + this.mapFilesGridView.MultiSelect = false; + this.mapFilesGridView.Name = "mapFilesGridView"; + dataGridViewCellStyle14.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle14.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle14.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F); + dataGridViewCellStyle14.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle14.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle14.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle14.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.mapFilesGridView.RowHeadersDefaultCellStyle = dataGridViewCellStyle14; + this.mapFilesGridView.RowHeadersWidth = 50; + this.mapFilesGridView.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; + dataGridViewCellStyle15.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle15.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.mapFilesGridView.RowsDefaultCellStyle = dataGridViewCellStyle15; + this.mapFilesGridView.RowTemplate.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.mapFilesGridView.RowTemplate.Height = 18; + this.mapFilesGridView.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.False; + this.mapFilesGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.mapFilesGridView.Size = new System.Drawing.Size(1032, 576); + this.mapFilesGridView.TabIndex = 2; + this.mapFilesGridView.CellContentDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.mapFilesGridView_CellMouseDoubleClick); + this.mapFilesGridView.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.mapFilesGridView_CellFormatting); + this.mapFilesGridView.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.mapFilesGridView_CellValueChanged); + this.mapFilesGridView.SelectionChanged += new System.EventHandler(this.mapFilesGridView_SelectionChanged); + // // MainProgram // this.AllowDrop = true; @@ -7714,6 +7731,7 @@ this.nameGroupBox.PerformLayout(); this.groupBox2.ResumeLayout(false); this.groupBox2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.cameraUpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.weatherUpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.musicNightUpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.musicDayUpDown)).EndInit(); @@ -7730,11 +7748,8 @@ this.matrixEditorTabPage.PerformLayout(); this.matrixTabControl.ResumeLayout(false); this.headersTabPage.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.headersGridView)).EndInit(); this.heightsTabPage.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.heightsGridView)).EndInit(); this.mapFilesTabPage.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.mapFilesGridView)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.heightUpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.widthUpDown)).EndInit(); this.mapEditorTabPage.ResumeLayout(false); @@ -7805,11 +7820,11 @@ this.signsTabPage.PerformLayout(); this.groupBox5.ResumeLayout(false); this.groupBox5.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.spawnableMatrixXUpDown)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.spawnableMatrixYUpDown)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.spawnableMapXUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.spawnableXMatrixUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.spawnableYMatrixUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.spawnablexMapUpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.spawnableUpDown)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.spawnableMapYUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.spawnableYMapUpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.spawnableScriptUpDown)).EndInit(); this.overworldsTabPage.ResumeLayout(false); this.overworldsTabPage.PerformLayout(); @@ -7903,6 +7918,9 @@ this.statusStrip1.PerformLayout(); this.mainToolStrip.ResumeLayout(false); this.mainToolStrip.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.headersGridView)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.heightsGridView)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.mapFilesGridView)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -8055,14 +8073,14 @@ private System.Windows.Forms.GroupBox groupBox5; private System.Windows.Forms.Button goToSignButton; private System.Windows.Forms.Label signMatrixYLabel; - private System.Windows.Forms.NumericUpDown spawnableMatrixXUpDown; + private System.Windows.Forms.NumericUpDown spawnableXMatrixUpDown; private System.Windows.Forms.Label signMatrixXLabel; - private System.Windows.Forms.NumericUpDown spawnableMatrixYUpDown; + private System.Windows.Forms.NumericUpDown spawnableYMatrixUpDown; private System.Windows.Forms.Label signZLabel; - private System.Windows.Forms.NumericUpDown spawnableMapXUpDown; + private System.Windows.Forms.NumericUpDown spawnablexMapUpDown; private System.Windows.Forms.NumericUpDown spawnableUpDown; private System.Windows.Forms.Label signMapXLabel; - private System.Windows.Forms.NumericUpDown spawnableMapYUpDown; + private System.Windows.Forms.NumericUpDown spawnableYMapUpDown; private System.Windows.Forms.Label signMapYLabel; private System.Windows.Forms.Button removeTriggerButton; private System.Windows.Forms.Button addTriggerButton; @@ -8468,6 +8486,7 @@ private System.Windows.Forms.CheckBox SyncNavigatorCB; private System.Windows.Forms.Button removeLastHeaderBTN; private System.Windows.Forms.Button addHeaderBTN; + private System.Windows.Forms.NumericUpDown cameraUpDown; } } diff --git a/DS_Map/Main Window.cs b/DS_Map/Main Window.cs index 52da509..e026a76 100644 --- a/DS_Map/Main Window.cs +++ b/DS_Map/Main Window.cs @@ -840,7 +840,7 @@ namespace DSPRE { areaIconComboBox.Enabled = false; areaIconPictureBox.Image = (Image)Properties.Resources.ResourceManager.GetObject("dpareaicon"); areaSettingsLabel.Text = "Show nametag:"; - cameraComboBox.Items.AddRange(PokeDatabase.CameraAngles.DPPtCameraValues); + cameraComboBox.Items.AddRange(PokeDatabase.CameraAngles.DPPtCameraDict.Values.ToArray()); musicDayComboBox.Items.AddRange(PokeDatabase.MusicDB.DPMusicDict.Values.ToArray()); musicNightComboBox.Items.AddRange(PokeDatabase.MusicDB.DPMusicDict.Values.ToArray()); areaSettingsComboBox.Items.AddRange(PokeDatabase.ShowName.DPShowNameValues); @@ -850,7 +850,7 @@ namespace DSPRE { case "Plat": areaIconComboBox.Items.AddRange(PokeDatabase.Area.PtAreaIconValues); areaSettingsLabel.Text = "Show nametag:"; - cameraComboBox.Items.AddRange(PokeDatabase.CameraAngles.DPPtCameraValues); + cameraComboBox.Items.AddRange(PokeDatabase.CameraAngles.DPPtCameraDict.Values.ToArray()); musicDayComboBox.Items.AddRange(PokeDatabase.MusicDB.PtMusicDict.Values.ToArray()); musicNightComboBox.Items.AddRange(PokeDatabase.MusicDB.PtMusicDict.Values.ToArray()); areaSettingsComboBox.Items.AddRange(PokeDatabase.ShowName.PtShowNameValues); @@ -858,8 +858,8 @@ namespace DSPRE { wildPokeUpDown.Maximum = 65535; break; default: - areaIconComboBox.Items.AddRange(PokeDatabase.Area.HGSSAreaIconValues); - cameraComboBox.Items.AddRange(PokeDatabase.CameraAngles.HGSSCameraValues); + areaIconComboBox.Items.AddRange(PokeDatabase.Area.HGSSAreaIconsDict.Values.ToArray()); + cameraComboBox.Items.AddRange(PokeDatabase.CameraAngles.HGSSCameraDict.Values.ToArray()); areaSettingsComboBox.Items.AddRange(PokeDatabase.Area.HGSSAreaProperties); areaSettingsLabel.Text = "Area Settings:"; musicDayComboBox.Items.AddRange(PokeDatabase.MusicDB.HGSSMusicDict.Values.ToArray()); @@ -956,37 +956,12 @@ namespace DSPRE { areaIconPictureBox.Image = (Image)Properties.Resources.ResourceManager.GetObject(imageName); break; default: - ((HeaderHGSS)currentHeader).areaIcon = Byte.Parse(areaIconComboBox.SelectedItem.ToString().Substring(1, 3)); + ((HeaderHGSS)currentHeader).areaIcon = (byte)areaIconComboBox.SelectedIndex; imageName = PokeDatabase.System.AreaPics.hgssAreaPicDict[areaIconComboBox.SelectedIndex]; areaIconPictureBox.Image = (Image)Properties.Resources.ResourceManager.GetObject(imageName); break; } } - private void cameraComboBox_SelectedIndexChanged(object sender, EventArgs e) { - if (disableHandlers) - return; - - string imageName; - try { - switch (RomInfo.gameFamily) { - case "DP": - currentHeader.cameraAngleID = (byte)cameraComboBox.SelectedIndex; - imageName = "dpcamera" + cameraComboBox.SelectedIndex.ToString(); - break; - case "Plat": - currentHeader.cameraAngleID = (byte)cameraComboBox.SelectedIndex; - imageName = "ptcamera" + cameraComboBox.SelectedIndex.ToString(); - break; - default: - currentHeader.cameraAngleID = Byte.Parse(cameraComboBox.SelectedItem.ToString().Substring(1, 2)); - imageName = "hgsscamera" + currentHeader.cameraAngleID.ToString("D2"); - break; - } - cameraPictureBox.Image = (Image)Properties.Resources.ResourceManager.GetObject(imageName); - } catch (NullReferenceException) { - MessageBox.Show("The current header uses an unrecognized camera.\n", "Unknown camera settings", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } private void eventFileUpDown_ValueChanged(object sender, EventArgs e) { if (disableHandlers) return; @@ -1037,10 +1012,10 @@ namespace DSPRE { } else { currentHeader = MapHeader.LoadFromARM9(headerNumber); } - refreshHeaderEditorFields(); + RefreshHeaderEditorFields(); } - private void refreshHeaderEditorFields() { + private void RefreshHeaderEditorFields() { /* Setup controls for common fields across headers */ internalNameBox.Text = internalNames[currentHeader.ID]; matrixUpDown.Value = currentHeader.matrixID; @@ -1051,16 +1026,13 @@ namespace DSPRE { textFileUpDown.Value = currentHeader.textArchiveID; wildPokeUpDown.Value = currentHeader.wildPokémon; weatherUpDown.Value = currentHeader.weatherID; + cameraUpDown.Value = currentHeader.cameraAngleID; - cameraComboBox.SelectedIndex = cameraComboBox.FindString("[" + currentHeader.cameraAngleID.ToString("D2")); + if (RomInfo.gameFamily == "HGSS") { + areaSettingsComboBox.SelectedIndex = ((HeaderHGSS)currentHeader).locationType; + } - if (RomInfo.gameFamily == "HGSS") - areaSettingsComboBox.SelectedIndex = cameraComboBox.FindString("[" + ((HeaderHGSS)currentHeader).areaSettings.ToString("D2")); - - if (currentHeader.wildPokémon == RomInfo.nullEncounterID) - openWildEditorWithIdButton.Enabled = false; - else - openWildEditorWithIdButton.Enabled = true; + openWildEditorWithIdButton.Enabled = currentHeader.wildPokémon != RomInfo.nullEncounterID; /* Setup controls for fields with version-specific differences */ try { @@ -1081,21 +1053,24 @@ namespace DSPRE { battleBackgroundUpDown.Value = currentHeader.battleBackground; break; default: - areaIconComboBox.SelectedIndex = areaIconComboBox.FindString("[" + $"{((HeaderHGSS)currentHeader).areaIcon:D3}"); + areaIconComboBox.SelectedIndex = ((HeaderHGSS)currentHeader).areaIcon; locationNameComboBox.SelectedIndex = ((HeaderHGSS)currentHeader).locationName; musicDayUpDown.Value = ((HeaderHGSS)currentHeader).musicDayID; musicNightUpDown.Value = ((HeaderHGSS)currentHeader).musicNightID; worldmapXCoordUpDown.Value = ((HeaderHGSS)currentHeader).worldmapX; worldmapYCoordUpDown.Value = ((HeaderHGSS)currentHeader).worldmapY; break; + + } } catch (ArgumentOutOfRangeException) { MessageBox.Show("This header contains an irregular/unsupported field.", "Error loading header file", MessageBoxButtons.OK, MessageBoxIcon.Error); } - refreshFlags(); + RefreshFlags(); updateWeatherPicAndComboBox(); + updateCameraPicAndComboBox(); } - private void refreshFlags() { + private void RefreshFlags() { BitArray ba = new BitArray(new byte[] { currentHeader.flags }); flag0CheckBox.Checked = ba[0]; @@ -1235,11 +1210,6 @@ namespace DSPRE { } disableHandlers = false; } - - private void weatherUpDown_ValueChanged(object sender, EventArgs e) { - currentHeader.weatherID = (byte)weatherUpDown.Value; - updateWeatherPicAndComboBox(); - } private void worldmapXCoordUpDown_ValueChanged(object sender, EventArgs e) { ((HeaderHGSS)currentHeader).worldmapX = (byte)worldmapXCoordUpDown.Value; } @@ -1298,6 +1268,51 @@ namespace DSPRE { weatherPictureBox.Image = null; } } + private void updateCameraPicAndComboBox() { + if (disableHandlers) + return; + + /* Update Camera Combobox*/ + disableHandlers = true; + try { + switch (RomInfo.gameFamily) { + case "DP": + cameraComboBox.SelectedItem = PokeDatabase.CameraAngles.DPPtCameraDict[currentHeader.cameraAngleID]; + break; + case "Plat": + cameraComboBox.SelectedItem = PokeDatabase.CameraAngles.DPPtCameraDict[currentHeader.cameraAngleID]; + break; + default: + cameraComboBox.SelectedItem = PokeDatabase.CameraAngles.HGSSCameraDict[currentHeader.cameraAngleID]; + break; + } + } catch (KeyNotFoundException) { + cameraComboBox.SelectedItem = null; + } + disableHandlers = false; + + /* Update Camera Picture */ + string imageName; + try { + switch (RomInfo.gameFamily) { + case "DP": + currentHeader.cameraAngleID = (byte)cameraComboBox.SelectedIndex; + imageName = "dpcamera" + cameraUpDown.Value.ToString(); + break; + case "Plat": + currentHeader.cameraAngleID = (byte)cameraComboBox.SelectedIndex; + imageName = "ptcamera" + cameraUpDown.Value.ToString(); + break; + default: + currentHeader.cameraAngleID = (byte)cameraComboBox.SelectedIndex; + imageName = "hgsscamera" + cameraUpDown.Value.ToString(); + break; + } + cameraPictureBox.Image = (Image)Properties.Resources.ResourceManager.GetObject(imageName); + } catch (NullReferenceException) { + MessageBox.Show("The current header uses an unrecognized camera.\n", "Unknown camera settings", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } private void weatherComboBox_SelectedIndexChanged(object sender, EventArgs e) { if (disableHandlers || weatherComboBox.SelectedIndex < 0) @@ -1315,7 +1330,31 @@ namespace DSPRE { break; } currentHeader.weatherID = (byte)weatherUpDown.Value; + } + private void weatherUpDown_ValueChanged(object sender, EventArgs e) { + currentHeader.weatherID = (byte)weatherUpDown.Value; + updateWeatherPicAndComboBox(); + } + private void cameraComboBox_SelectedIndexChanged(object sender, EventArgs e) { + if (disableHandlers || cameraComboBox.SelectedIndex < 0) + return; + switch (RomInfo.gameFamily) { + case "DP": + cameraUpDown.Value = PokeDatabase.CameraAngles.DPPtCameraDict.Keys.ElementAt(cameraComboBox.SelectedIndex); + break; + case "Plat": + cameraUpDown.Value = PokeDatabase.CameraAngles.DPPtCameraDict.Keys.ElementAt(cameraComboBox.SelectedIndex); + break; + default: + cameraUpDown.Value = PokeDatabase.CameraAngles.HGSSCameraDict.Keys.ElementAt(cameraComboBox.SelectedIndex); + break; + } + currentHeader.cameraAngleID = (byte)cameraUpDown.Value; + } + private void cameraUpDown_ValueChanged(object sender, EventArgs e) { + currentHeader.cameraAngleID = (byte)cameraUpDown.Value; + updateCameraPicAndComboBox(); } private void openAreaDataButton_Click(object sender, EventArgs e) { if (!nsbtxEditorIsReady) { @@ -1338,8 +1377,9 @@ namespace DSPRE { eventEditorIsReady = true; } - if (matrixUpDown.Value != 0) + if (matrixUpDown.Value != 0) { eventAreaDataUpDown.Value = areaDataUpDown.Value; // Use Area Data for textures if matrix is not 0 + } eventMatrixUpDown.Value = matrixUpDown.Value; // Open the right matrix in event editor selectEventComboBox.SelectedIndex = (int)eventFileUpDown.Value; // Select event file @@ -1473,18 +1513,11 @@ namespace DSPRE { currentHeader.locationSpecifier = Byte.Parse(areaSettingsComboBox.SelectedItem.ToString().Substring(1, 3)); break; case "HGSS": - HeaderHGSS ch = ((HeaderHGSS)currentHeader); - - ch.areaSettings = (byte)areaSettingsComboBox.SelectedIndex; - if (ch.areaSettings == 4) { - areaImageLabel.Text = "[Location Tag hidden]"; - areaIconComboBox.Enabled = false; - areaIconPictureBox.Visible = false; - } else { - areaImageLabel.Text = "Area icon"; - areaIconComboBox.Enabled = true; - areaIconPictureBox.Visible = true; - } + HeaderHGSS ch = (HeaderHGSS)currentHeader; + ch.locationType = (byte)areaSettingsComboBox.SelectedIndex; + //areaImageLabel.Text = "Area icon"; + //areaIconComboBox.Enabled = true; + //areaIconPictureBox.Visible = true; break; } } @@ -1549,7 +1582,7 @@ namespace DSPRE { updateHeaderNameShown(headerListBox.SelectedIndex); } catch (EndOfStreamException) { } - refreshHeaderEditorFields(); + RefreshHeaderEditorFields(); } private void exportHeaderToFileButton_Click(object sender, EventArgs e) { @@ -1763,7 +1796,7 @@ namespace DSPRE { worldmapXCoordUpDown.Value = worldmapXCoordCopy; worldmapYCoordUpDown.Value = worldmapYCoordCopy; battleBackgroundUpDown.Value = battleBGCopy; - refreshFlags(); + RefreshFlags(); } private void pasteInternalNameButton_Click(object sender, EventArgs e) { internalNameBox.Text = internalNameCopy; @@ -1818,7 +1851,7 @@ namespace DSPRE { private void pasteMapSettingsButton_Click(object sender, EventArgs e) { currentHeader.flags = flagsCopy; battleBackgroundUpDown.Value = battleBGCopy; - refreshFlags(); + RefreshFlags(); } #endregion @@ -2299,7 +2332,7 @@ namespace DSPRE { Environment.NewLine + "Do you want to check if any Header is using it and choose that one as your Spawn Point? " + Environment.NewLine + "\nChoosing 'No' will pick the last selected Header.", "Couldn't find Header Tab", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (d == DialogResult.Yes) { - result = HeaderSearch.advancedSearch(0, (ushort)internalNames.Count, internalNames, "Matrix (ID)", "Equals", selectMatrixComboBox.SelectedIndex.ToString()); + result = HeaderSearch.AdvancedSearch(0, (ushort)internalNames.Count, internalNames, (int)MapHeader.SearchableFields.MatrixID, (int)HeaderSearch.NumOperators.Equal, selectMatrixComboBox.SelectedIndex.ToString()); if (result.Count < 1) { MessageBox.Show("The current Matrix isn't assigned to any Header.\nThe default choice has been set to the last selected Header.", "No result", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); headerNumber = currentHeader.ID; @@ -4059,7 +4092,7 @@ namespace DSPRE { g.DrawRectangle(eventPen, (ow.xMapPosition) * 17 - 8, (ow.yMapPosition - 1) * 17, 34, 34); g.DrawRectangle(eventPen, (ow.xMapPosition) * 17 - 9, (ow.yMapPosition - 1) * 17 - 1, 36, 36); } - private void DisplayEventMap() { + private void DisplayEventMap(bool readGraphicsFromHeader = true) { /* Determine map file to open and open it in BinaryReader, unless map is VOID */ uint mapIndex = GameMatrix.EMPTY; if (eventMatrixXUpDown.Value > eventMatrix.width || eventMatrixYUpDown.Value > eventMatrix.height) { @@ -4076,7 +4109,7 @@ namespace DSPRE { } else { /* Determine area data */ byte areaDataID; - if (eventMatrix.hasHeadersSection) { + if (eventMatrix.hasHeadersSection && readGraphicsFromHeader) { ushort headerID = (ushort)eventMatrix.headers[(short)eventMatrixYUpDown.Value, (short)eventMatrixXUpDown.Value]; MapHeader h; if (ROMToolboxDialog.flag_DynamicHeadersPatchApplied || ROMToolboxDialog.CheckFilesDynamicHeadersPatchApplied()) { @@ -4571,6 +4604,9 @@ namespace DSPRE { private void showEventsCheckBoxes_CheckedChanged(object sender, EventArgs e) { DisplayActiveEvents(); } + private void eventAreaDataUpDown_ValueChanged(object sender, EventArgs e) { + DisplayEventMap(readGraphicsFromHeader: false); + } private void eventPictureBox_Click(object sender, EventArgs e) { int squareSize = 17; Point coordinates = eventPictureBox.PointToClient(Cursor.Position); @@ -4579,12 +4615,32 @@ namespace DSPRE { if (mea.Button == MouseButtons.Left) { if (selectedEvent != null) { - - selectedEvent.xMapPosition = (short)mouseTilePos.X; - selectedEvent.yMapPosition = (short)mouseTilePos.Y; - selectedEvent.xMatrixPosition = (ushort)eventMatrixXUpDown.Value; - selectedEvent.yMatrixPosition = (ushort)eventMatrixYUpDown.Value; - + switch (selectedEvent.evType) { + case Event.EventType.SPAWNABLE: + spawnablexMapUpDown.Value = (short)mouseTilePos.X; + spawnableYMapUpDown.Value = (short)mouseTilePos.Y; + spawnableXMatrixUpDown.Value = (short)eventMatrixXUpDown.Value; + spawnableYMatrixUpDown.Value = (short)eventMatrixYUpDown.Value; + break; + case Event.EventType.OVERWORLD: + owXMapUpDown.Value = (short)mouseTilePos.X; + owYMapUpDown.Value = (short)mouseTilePos.Y; + owXMatrixUpDown.Value = (short)eventMatrixXUpDown.Value; + owYMatrixUpDown.Value = (short)eventMatrixYUpDown.Value; + break; + case Event.EventType.WARP: + warpXMapUpDown.Value = (short)mouseTilePos.X; + warpYMapUpDown.Value = (short)mouseTilePos.Y; + warpXMatrixUpDown.Value = (short)eventMatrixXUpDown.Value; + warpYMatrixUpDown.Value = (short)eventMatrixYUpDown.Value; + break; + case Event.EventType.TRIGGER: + triggerXMapUpDown.Value = (short)mouseTilePos.X; + triggerYMapUpDown.Value = (short)mouseTilePos.Y; + triggerXMatrixUpDown.Value = (short)eventMatrixXUpDown.Value; + triggerYMatrixUpDown.Value = (short)eventMatrixYUpDown.Value; + break; + } DisplayActiveEvents(); } } else if (mea.Button == MouseButtons.Right) { @@ -4647,7 +4703,7 @@ namespace DSPRE { } } } - #region Spawnables Editor + #region Spawnables Tab private void addSpawnableButton_Click(object sender, EventArgs e) { currentEvFile.spawnables.Add(new Spawnable((int)eventMatrixXUpDown.Value, (int)eventMatrixYUpDown.Value)); spawnablesListBox.Items.Add("Spawnable " + (currentEvFile.spawnables.Count - 1).ToString()); @@ -4697,11 +4753,11 @@ namespace DSPRE { spawnableTypeComboBox.SelectedIndex = currentEvFile.spawnables[spawnablesListBox.SelectedIndex].type; spawnableScriptUpDown.Value = currentEvFile.spawnables[spawnablesListBox.SelectedIndex].scriptNumber; - spawnableMapXUpDown.Value = currentEvFile.spawnables[spawnablesListBox.SelectedIndex].xMapPosition; - spawnableMapYUpDown.Value = currentEvFile.spawnables[spawnablesListBox.SelectedIndex].yMapPosition; + spawnablexMapUpDown.Value = currentEvFile.spawnables[spawnablesListBox.SelectedIndex].xMapPosition; + spawnableYMapUpDown.Value = currentEvFile.spawnables[spawnablesListBox.SelectedIndex].yMapPosition; spawnableUpDown.Value = currentEvFile.spawnables[spawnablesListBox.SelectedIndex].zPosition; - spawnableMatrixXUpDown.Value = currentEvFile.spawnables[spawnablesListBox.SelectedIndex].xMatrixPosition; - spawnableMatrixYUpDown.Value = currentEvFile.spawnables[spawnablesListBox.SelectedIndex].yMatrixPosition; + spawnableXMatrixUpDown.Value = currentEvFile.spawnables[spawnablesListBox.SelectedIndex].xMatrixPosition; + spawnableYMatrixUpDown.Value = currentEvFile.spawnables[spawnablesListBox.SelectedIndex].yMatrixPosition; DisplayActiveEvents(); disableHandlers = false; @@ -4710,14 +4766,14 @@ namespace DSPRE { if (disableHandlers || spawnablesListBox.SelectedIndex < 0) return; - currentEvFile.spawnables[spawnablesListBox.SelectedIndex].xMatrixPosition = (ushort)spawnableMatrixXUpDown.Value; + currentEvFile.spawnables[spawnablesListBox.SelectedIndex].xMatrixPosition = (ushort)spawnableXMatrixUpDown.Value; DisplayActiveEvents(); } private void spawnableMatrixYUpDown_ValueChanged(object sender, EventArgs e) { if (disableHandlers || spawnablesListBox.SelectedIndex < 0) return; - currentEvFile.spawnables[spawnablesListBox.SelectedIndex].yMatrixPosition = (ushort)spawnableMatrixYUpDown.Value; + currentEvFile.spawnables[spawnablesListBox.SelectedIndex].yMatrixPosition = (ushort)spawnableYMatrixUpDown.Value; DisplayActiveEvents(); } private void spawnableScriptUpDown_ValueChanged(object sender, EventArgs e) { @@ -4729,18 +4785,18 @@ namespace DSPRE { if (disableHandlers || spawnablesListBox.SelectedIndex < 0) return; - currentEvFile.spawnables[spawnablesListBox.SelectedIndex].xMapPosition = (short)spawnableMapXUpDown.Value; + currentEvFile.spawnables[spawnablesListBox.SelectedIndex].xMapPosition = (short)spawnablexMapUpDown.Value; DisplayActiveEvents(); } private void spawnableMapYUpDown_ValueChanged(object sender, EventArgs e) { - if (disableHandlers) + if (disableHandlers || spawnablesListBox.SelectedIndex < 0) return; - currentEvFile.spawnables[spawnablesListBox.SelectedIndex].yMapPosition = (short)spawnableMapYUpDown.Value; + currentEvFile.spawnables[spawnablesListBox.SelectedIndex].yMapPosition = (short)spawnableYMapUpDown.Value; DisplayActiveEvents(); } private void spawnableZUpDown_ValueChanged(object sender, EventArgs e) { - if (disableHandlers) + if (disableHandlers || spawnablesListBox.SelectedIndex < 0) return; currentEvFile.spawnables[spawnablesListBox.SelectedIndex].zPosition = (short)spawnableUpDown.Value; @@ -4769,7 +4825,7 @@ namespace DSPRE { } #endregion - #region Overworlds Editor + #region Overworlds Tab private void addOverworldButton_Click(object sender, EventArgs e) { currentEvFile.overworlds.Add(new Overworld(currentEvFile.overworlds.Count + 1, (int)eventMatrixXUpDown.Value, (int)eventMatrixYUpDown.Value)); overworldsListBox.Items.Add("Overworld " + (currentEvFile.overworlds.Count - 1).ToString()); @@ -5058,7 +5114,7 @@ namespace DSPRE { #endregion - #region Warps Editor + #region Warps Tab private void addWarpButton_Click(object sender, EventArgs e) { currentEvFile.warps.Add(new Warp((int)eventMatrixXUpDown.Value, (int)eventMatrixYUpDown.Value)); warpsListBox.Items.Add("Warp " + (currentEvFile.warps.Count - 1).ToString()); @@ -5164,7 +5220,13 @@ namespace DSPRE { private void goToWarpDestination_Click(object sender, EventArgs e) { int destAnchor = (int)warpAnchorUpDown.Value; ushort destHeaderID = (ushort)warpHeaderUpDown.Value; - MapHeader destHeader = MapHeader.LoadFromARM9(destHeaderID); + + MapHeader destHeader; + if (ROMToolboxDialog.flag_DynamicHeadersPatchApplied || ROMToolboxDialog.CheckFilesDynamicHeadersPatchApplied()) { + destHeader = MapHeader.LoadFromFile(RomInfo.gameDirs[DirNames.dynamicHeaders].unpackedDir + "\\" + destHeaderID.ToString("D4"), destHeaderID, 0); + } else { + destHeader = MapHeader.LoadFromARM9(destHeaderID); + } if (new EventFile(destHeader.eventFileID).warps.Count < destAnchor + 1) { DialogResult d = MessageBox.Show("The selected warp's destination anchor doesn't exist.\n" + @@ -5188,7 +5250,7 @@ namespace DSPRE { } #endregion - #region Triggers Editor + #region Triggers Tab private void addTriggerButton_Click(object sender, EventArgs e) { currentEvFile.triggers.Add(new Trigger((int)eventMatrixXUpDown.Value, (int)eventMatrixYUpDown.Value)); triggersListBox.Items.Add("Trigger " + (currentEvFile.triggers.Count - 1).ToString()); @@ -6334,10 +6396,28 @@ namespace DSPRE { RomInfo.PrepareCameraData(); if (DSUtils.CheckOverlayHasCompressionFlag(RomInfo.cameraTblOverlayNumber)) { - if (DSUtils.OverlayIsCompressed(RomInfo.cameraTblOverlayNumber)) { - DSUtils.DecompressOverlay(RomInfo.cameraTblOverlayNumber); + DialogResult d1 = MessageBox.Show("It is STRONGLY recommended to configure Overlay1 as uncompressed before proceeding.\n\n" + + "More details in the following dialog.\n\n" + "Do you want to know more?", + "Confirm to proceed", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + + bool userConfirmed; + if (d1 == DialogResult.Yes) { + userConfirmed = ROMToolboxDialog.ConfigureOverlay1Uncompressed(); + } else { + userConfirmed = false; + } + + if (!userConfirmed) { + MessageBox.Show("You chose not to apply the patch. Use this editor responsibly.\n\n" + + "If you change your mind, you can apply it later by accessing the ROM Toolbox.", + "Caution", MessageBoxButtons.OK, MessageBoxIcon.Information); + + if (DSUtils.OverlayIsCompressed(RomInfo.cameraTblOverlayNumber)) { + DSUtils.DecompressOverlay(RomInfo.cameraTblOverlayNumber); + } } } + uint[] RAMaddresses = new uint[RomInfo.cameraTblOffsetsToRAMaddress.Length]; string camOverlayPath = DSUtils.GetOverlayPath(RomInfo.cameraTblOverlayNumber); @@ -6360,8 +6440,9 @@ namespace DSPRE { using (BinaryReader br = new BinaryReader(File.OpenRead(camOverlayPath))) { br.BaseStream.Position = overlayCameraTblOffset = RAMaddresses[0] - DSUtils.GetOverlayRAMAddress(RomInfo.cameraTblOverlayNumber); - currentCameraTable = new GameCamera[16]; + if (RomInfo.gameFamily.Equals("HGSS")) { + currentCameraTable = new GameCamera[17]; for (int i = 0; i < currentCameraTable.Length; i++) { currentCameraTable[i] = new GameCamera(br.ReadUInt32(), br.ReadInt16(), br.ReadInt16(), br.ReadInt16(), br.ReadInt16(), br.ReadByte(), br.ReadByte(), @@ -6370,6 +6451,7 @@ namespace DSPRE { } } else { + currentCameraTable = new GameCamera[16]; for (int i = 0; i < 3; i++) { cameraEditorDataGridView.Columns.RemoveAt(cameraEditorDataGridView.Columns.Count - 3); } @@ -6379,6 +6461,7 @@ namespace DSPRE { br.ReadUInt16(), br.ReadUInt32(), br.ReadUInt32()); } } + cameraEditorDataGridView.RowTemplate.Height = 32*16 / currentCameraTable.Length; for (int i = 0; i < currentCameraTable.Length; i++) { currentCameraTable[i].ShowInGridView(cameraEditorDataGridView, i); } diff --git a/DS_Map/Main Window.resx b/DS_Map/Main Window.resx index 119dcd0..d067260 100644 --- a/DS_Map/Main Window.resx +++ b/DS_Map/Main Window.resx @@ -865,7 +865,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABk - EAAAAk1TRnQBSQFMAgEBCAEAAbQBEgG0ARIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + EAAAAk1TRnQBSQFMAgEBCAEAAeQBEgHkARIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/DS_Map/Properties/Resources.Designer.cs b/DS_Map/Properties/Resources.Designer.cs index 995ab3a..d53c4ee 100644 --- a/DS_Map/Properties/Resources.Designer.cs +++ b/DS_Map/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace DSPRE.Properties { // tramite uno strumento quale ResGen o Visual Studio. // Per aggiungere o rimuovere un membro, modificare il file con estensione ResX ed eseguire nuovamente ResGen // con l'opzione /str oppure ricompilare il progetto VS. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -330,15 +330,6 @@ namespace DSPRE.Properties { } } - /// - /// Cerca una stringa localizzata simile a D. - /// - internal static string Diamond { - get { - return ResourceManager.GetString("Diamond", resourceCulture); - } - } - /// /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. /// @@ -749,15 +740,6 @@ namespace DSPRE.Properties { } } - /// - /// Cerca una stringa localizzata simile a HG. - /// - internal static string HeartGold { - get { - return ResourceManager.GetString("HeartGold", resourceCulture); - } - } - /// /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. /// @@ -771,9 +753,9 @@ namespace DSPRE.Properties { /// /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap hgsscamera00 { + internal static System.Drawing.Bitmap hgsscamera0 { get { - object obj = ResourceManager.GetObject("hgsscamera00", resourceCulture); + object obj = ResourceManager.GetObject("hgsscamera0", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -781,89 +763,9 @@ namespace DSPRE.Properties { /// /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap hgsscamera01 { + internal static System.Drawing.Bitmap hgsscamera1 { get { - object obj = ResourceManager.GetObject("hgsscamera01", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap hgsscamera02 { - get { - object obj = ResourceManager.GetObject("hgsscamera02", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap hgsscamera03 { - get { - object obj = ResourceManager.GetObject("hgsscamera03", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap hgsscamera04 { - get { - object obj = ResourceManager.GetObject("hgsscamera04", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap hgsscamera05 { - get { - object obj = ResourceManager.GetObject("hgsscamera05", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap hgsscamera06 { - get { - object obj = ResourceManager.GetObject("hgsscamera06", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap hgsscamera07 { - get { - object obj = ResourceManager.GetObject("hgsscamera07", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap hgsscamera08 { - get { - object obj = ResourceManager.GetObject("hgsscamera08", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap hgsscamera09 { - get { - object obj = ResourceManager.GetObject("hgsscamera09", resourceCulture); + object obj = ResourceManager.GetObject("hgsscamera1", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -928,6 +830,96 @@ namespace DSPRE.Properties { } } + /// + /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap hgsscamera16 { + get { + object obj = ResourceManager.GetObject("hgsscamera16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap hgsscamera2 { + get { + object obj = ResourceManager.GetObject("hgsscamera2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap hgsscamera3 { + get { + object obj = ResourceManager.GetObject("hgsscamera3", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap hgsscamera4 { + get { + object obj = ResourceManager.GetObject("hgsscamera4", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap hgsscamera5 { + get { + object obj = ResourceManager.GetObject("hgsscamera5", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap hgsscamera6 { + get { + object obj = ResourceManager.GetObject("hgsscamera6", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap hgsscamera7 { + get { + object obj = ResourceManager.GetObject("hgsscamera7", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap hgsscamera8 { + get { + object obj = ResourceManager.GetObject("hgsscamera8", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap hgsscamera9 { + get { + object obj = ResourceManager.GetObject("hgsscamera9", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. /// @@ -1008,6 +1000,16 @@ namespace DSPRE.Properties { } } + /// + /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap hgsslake { + get { + object obj = ResourceManager.GetObject("hgsslake", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. /// @@ -1178,24 +1180,6 @@ namespace DSPRE.Properties { } } - /// - /// Cerca una stringa localizzata simile a P. - /// - internal static string Pearl { - get { - return ResourceManager.GetString("Pearl", resourceCulture); - } - } - - /// - /// Cerca una stringa localizzata simile a Plat. - /// - internal static string Platinum { - get { - return ResourceManager.GetString("Platinum", resourceCulture); - } - } - /// /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. /// @@ -1726,15 +1710,6 @@ namespace DSPRE.Properties { } } - /// - /// Cerca una stringa localizzata simile a SS. - /// - internal static string SoulSilver { - get { - return ResourceManager.GetString("SoulSilver", resourceCulture); - } - } - /// /// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap. /// diff --git a/DS_Map/Properties/Resources.resx b/DS_Map/Properties/Resources.resx index d5346b0..2a3ebce 100644 --- a/DS_Map/Properties/Resources.resx +++ b/DS_Map/Properties/Resources.resx @@ -160,7 +160,7 @@ ..\Resources\Graphics\weather\hgss\hgssarcade.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\Graphics\camera angles\hgss\hgsscamera08.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -193,7 +193,7 @@ ..\Resources\Graphics\program icons\resetcolortable.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\Graphics\camera angles\hgss\hgsscamera06.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -238,15 +238,12 @@ ..\Resources\Graphics\Camera Angles\DPPt\dpcamera5.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\Graphics\camera angles\hgss\hgsscamera04.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Graphics\Program Icons\goToWarp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - HG - ..\Resources\Graphics\Camera Angles\DPPt\dpcamera0.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -307,22 +304,19 @@ ..\Resources\Graphics\Camera Angles\DPPt\dpcamera9.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\Graphics\camera angles\hgss\hgsscamera05.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Graphics\Camera Angles\DPPt\ptcamera9.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - D - ..\Resources\Graphics\Area Icons\areaicon03.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Graphics\Camera Angles\DPPt\ptcamera8.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\Graphics\camera angles\hgss\hgsscamera00.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -385,9 +379,6 @@ ..\Resources\Graphics\Program Icons\wideLensImageTransp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - SS - ..\Resources\Graphics\program icons\exportarrow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -433,7 +424,7 @@ ..\Resources\Graphics\Weather\DPPt\dplightning.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\Graphics\camera angles\hgss\hgsscamera02.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -460,9 +451,6 @@ ..\Resources\Graphics\Camera Angles\DPPt\dpcamera3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - P - ..\Resources\Graphics\Event Icons\brown_sign.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -517,7 +505,7 @@ ..\Resources\Graphics\Weather\DPPt\dpthunderstorm.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\Graphics\camera angles\hgss\hgsscamera03.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -547,7 +535,7 @@ ..\Resources\Graphics\Area Icons\areaicon06.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\Graphics\camera angles\hgss\hgsscamera01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -559,9 +547,6 @@ ..\Resources\Graphics\weather\hgss\hgssrain.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - Plat - ..\Resources\Graphics\Weather\DPPt\ptspotlight.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -586,7 +571,7 @@ ..\Resources\Graphics\Event Icons\overworldUnreadable.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\Graphics\camera angles\hgss\hgsscamera09.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -634,7 +619,7 @@ ..\Resources\Graphics\Program Icons\resetListIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\Graphics\camera angles\hgss\hgsscamera07.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -655,4 +640,10 @@ ..\Resources\selectBldWithMouse.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\hgsscamera16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Graphics\Area Icons\hgsslake.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/DS_Map/ROMFiles/EventFile.cs b/DS_Map/ROMFiles/EventFile.cs index d8b546a..745ee5e 100644 --- a/DS_Map/ROMFiles/EventFile.cs +++ b/DS_Map/ROMFiles/EventFile.cs @@ -7,8 +7,7 @@ namespace DSPRE.ROMFiles { /// /// Classes to store event data in Pokémon NDS games /// - public class EventFile: RomFile - { + public class EventFile : RomFile { #region Fields (4) public List spawnables = new List(); public List overworlds = new List(); @@ -21,17 +20,17 @@ namespace DSPRE.ROMFiles { using (BinaryReader reader = new BinaryReader(data)) { /* Read spawnables */ uint spawnablesCount = reader.ReadUInt32(); - for (int i = 0; i < spawnablesCount; i++) + for (int i = 0; i < spawnablesCount; i++) spawnables.Add(new Spawnable(new MemoryStream(reader.ReadBytes(0x14)))); /* Read overworlds */ uint overworldsCount = reader.ReadUInt32(); - for (int i = 0; i < overworldsCount; i++) + for (int i = 0; i < overworldsCount; i++) overworlds.Add(new Overworld(new MemoryStream(reader.ReadBytes(0x20)))); /* Read warps */ uint warpsCount = reader.ReadUInt32(); - for (int i = 0; i < warpsCount; i++) + for (int i = 0; i < warpsCount; i++) warps.Add(new Warp(new MemoryStream(reader.ReadBytes(0xC)))); /* Read triggers */ @@ -44,29 +43,27 @@ namespace DSPRE.ROMFiles { #endregion #region Methods (1) - public override byte[] ToByteArray() - { + public override byte[] ToByteArray() { MemoryStream newData = new MemoryStream(); - using (BinaryWriter writer = new BinaryWriter(newData)) - { + using (BinaryWriter writer = new BinaryWriter(newData)) { /* Write spawnables */ writer.Write((uint)spawnables.Count); - for (int i = 0; i < spawnables.Count; i++) + for (int i = 0; i < spawnables.Count; i++) writer.Write(spawnables[i].ToByteArray()); /* Write overworlds */ writer.Write((uint)overworlds.Count); - for (int i = 0; i < overworlds.Count; i++) + for (int i = 0; i < overworlds.Count; i++) writer.Write(overworlds[i].ToByteArray()); /* Write warps */ writer.Write((uint)warps.Count); - for (int i = 0; i < warps.Count; i++) + for (int i = 0; i < warps.Count; i++) writer.Write(warps[i].ToByteArray()); /* Write triggers */ writer.Write((uint)triggers.Count); - for (int i = 0; i < triggers.Count; i++) + for (int i = 0; i < triggers.Count; i++) writer.Write(triggers[i].ToByteArray()); } return newData.ToArray(); @@ -81,9 +78,16 @@ namespace DSPRE.ROMFiles { } - public abstract class Event - { + public abstract class Event { + public enum EventType : byte { + SPAWNABLE, + OVERWORLD, + WARP, + TRIGGER + } #region Fields (6) + public EventType evType; + public short xMapPosition; public short yMapPosition; public short zPosition; @@ -96,8 +100,7 @@ namespace DSPRE.ROMFiles { #endregion } - public class Spawnable : Event - { + public class Spawnable : Event { public const int TYPE_MISC = 0; public const int TYPE_BOARD = 1; public const int TYPE_HIDDENITEM = 2; @@ -114,22 +117,23 @@ namespace DSPRE.ROMFiles { #region Constructors (2) public Spawnable(Stream data) { + evType = EventType.SPAWNABLE; using (BinaryReader reader = new BinaryReader(data)) { scriptNumber = reader.ReadUInt16(); type = reader.ReadUInt16(); - + /* Decompose x coordinate in matrix and map positions */ int xPosition = reader.ReadInt16(); xMapPosition = (short)(xPosition % 32); xMatrixPosition = (ushort)(xPosition / 32); unknown2 = reader.ReadUInt16(); - + /* Decompose y coordinate in matrix and map positions */ int yPosition = reader.ReadInt16(); yMapPosition = (short)(yPosition % 32); yMatrixPosition = (ushort)(yPosition / 32); - + unknown3 = reader.ReadUInt16(); zPosition = reader.ReadInt16(); unknown4 = reader.ReadUInt16(); @@ -138,6 +142,8 @@ namespace DSPRE.ROMFiles { } } public Spawnable(int xMatrixPosition, int yMatrixPosition) { + evType = EventType.SPAWNABLE; + scriptNumber = 0; type = 0; unknown2 = 0; @@ -153,6 +159,8 @@ namespace DSPRE.ROMFiles { this.yMatrixPosition = (ushort)yMatrixPosition; } public Spawnable(Spawnable toCopy) { + evType = EventType.SPAWNABLE; + scriptNumber = toCopy.scriptNumber; type = toCopy.type; unknown2 = toCopy.unknown2; @@ -186,15 +194,14 @@ namespace DSPRE.ROMFiles { writer.Write(unknown5); return ((MemoryStream)writer.BaseStream).ToArray(); - } + } } #endregion } - public class Overworld : Event - { + public class Overworld : Event { #region Fields (14) - public enum owType : ushort { NORMAL = 0, TRAINER = 1, ITEM = 3}; + public enum owType : ushort { NORMAL = 0, TRAINER = 1, ITEM = 3 }; public ushort owID; public ushort overlayTableEntry; @@ -214,6 +221,7 @@ namespace DSPRE.ROMFiles { #region Constructors (2) public Overworld(Stream data) { + evType = EventType.OVERWORLD; using (BinaryReader reader = new BinaryReader(data)) { owID = reader.ReadUInt16(); overlayTableEntry = reader.ReadUInt16(); @@ -227,7 +235,7 @@ namespace DSPRE.ROMFiles { unknown2 = reader.ReadUInt16(); xRange = reader.ReadUInt16(); yRange = reader.ReadUInt16(); - + /* Decompose x-y coordinates in matrix and map positions */ int xPosition = reader.ReadInt16(); int yPosition = reader.ReadInt16(); @@ -235,12 +243,14 @@ namespace DSPRE.ROMFiles { yMapPosition = (short)(yPosition % 32); xMatrixPosition = (ushort)(xPosition / 32); yMatrixPosition = (ushort)(yPosition / 32); - + zPosition = reader.ReadInt16(); unknown3 = reader.ReadUInt16(); } } public Overworld(int owID, int xMatrixPosition, int yMatrixPosition) { + evType = EventType.OVERWORLD; + this.owID = (ushort)owID; overlayTableEntry = 1; movement = 0; @@ -262,6 +272,8 @@ namespace DSPRE.ROMFiles { this.yMatrixPosition = (ushort)yMatrixPosition; } public Overworld(Overworld toCopy) { + evType = EventType.OVERWORLD; + this.owID = toCopy.owID; overlayTableEntry = toCopy.overlayTableEntry; movement = toCopy.movement; @@ -285,10 +297,8 @@ namespace DSPRE.ROMFiles { #endregion #region Methods (1) - public override byte[] ToByteArray() - { - using (BinaryWriter writer = new BinaryWriter(new MemoryStream())) - { + public override byte[] ToByteArray() { + using (BinaryWriter writer = new BinaryWriter(new MemoryStream())) { writer.Write(owID); writer.Write(overlayTableEntry); writer.Write(movement); @@ -318,8 +328,7 @@ namespace DSPRE.ROMFiles { } - public class Warp : Event - { + public class Warp : Event { #region Fields (4) public ushort header; public ushort anchor; @@ -327,10 +336,9 @@ namespace DSPRE.ROMFiles { #endregion #region Constructors (2) - public Warp(Stream data) - { - using (BinaryReader reader = new BinaryReader(data)) - { + public Warp(Stream data) { + evType = EventType.WARP; + using (BinaryReader reader = new BinaryReader(data)) { /* Decompose x-y coordinates in matrix and map positions */ int xPosition = reader.ReadInt16(); int yPosition = reader.ReadInt16(); @@ -345,6 +353,8 @@ namespace DSPRE.ROMFiles { } } public Warp(int xMatrixPosition, int yMatrixPosition) { + evType = EventType.WARP; + header = 0; anchor = 0; @@ -354,6 +364,8 @@ namespace DSPRE.ROMFiles { this.yMatrixPosition = (ushort)yMatrixPosition; } public Warp(Warp toCopy) { + evType = EventType.WARP; + header = toCopy.header; anchor = toCopy.anchor; @@ -384,8 +396,7 @@ namespace DSPRE.ROMFiles { } - public class Trigger : Event - { + public class Trigger : Event { #region Fields (7) public ushort scriptNumber; public ushort widthX; @@ -397,6 +408,7 @@ namespace DSPRE.ROMFiles { #region Constructors (2) public Trigger(Stream data) { + evType = EventType.TRIGGER; using (BinaryReader reader = new BinaryReader(data)) { scriptNumber = reader.ReadUInt16(); @@ -414,9 +426,11 @@ namespace DSPRE.ROMFiles { zPosition = reader.ReadUInt16(); expectedVarValue = reader.ReadUInt16(); variableWatched = reader.ReadUInt16(); - } + } } public Trigger(int xMatrixPosition, int yMatrixPosition) { + evType = EventType.TRIGGER; + scriptNumber = 0; variableWatched = 0; expectedVarValue = 0; @@ -429,6 +443,8 @@ namespace DSPRE.ROMFiles { this.yMatrixPosition = (ushort)yMatrixPosition; } public Trigger(Trigger toCopy) { + evType = EventType.TRIGGER; + scriptNumber = toCopy.scriptNumber; variableWatched = toCopy.variableWatched; expectedVarValue = toCopy.expectedVarValue; @@ -443,10 +459,8 @@ namespace DSPRE.ROMFiles { #endregion #region Methods (1) - public override byte[] ToByteArray() - { - using (BinaryWriter writer = new BinaryWriter(new MemoryStream())) - { + public override byte[] ToByteArray() { + using (BinaryWriter writer = new BinaryWriter(new MemoryStream())) { writer.Write(scriptNumber); ushort xCoordinate = (ushort)(xMapPosition + 32 * xMatrixPosition); writer.Write(xCoordinate); diff --git a/DS_Map/ROMFiles/MapHeader.cs b/DS_Map/ROMFiles/MapHeader.cs index fe07e7e..3694ce6 100644 --- a/DS_Map/ROMFiles/MapHeader.cs +++ b/DS_Map/ROMFiles/MapHeader.cs @@ -87,6 +87,22 @@ namespace DSPRE.ROMFiles { public ushort ID { get; set; } public static readonly byte length = 24; public static readonly string nameSeparator = " - "; + + public enum SearchableFields: byte { + AreaDataID, + CameraAngleID, + EventFileID, + InternalName, + LevelScriptID, + MatrixID, + MusicDayID, + //MusicDayName, + MusicNightID, + //MusicNightName, + ScriptFileID, + TextArchiveID, + WeatherID, + }; /**/ @@ -277,10 +293,12 @@ namespace DSPRE.ROMFiles { public byte areaIcon { get; set; } public byte followMode { get; set; } public byte locationName { get; set; } - public byte areaSettings { get; set; } // 4 bits only [4 bits for the camera as well] + public byte locationType { get; set; } //4 bits only public byte unknown0 { get; set; } //4 bits only + public byte unknown1 { get; set; } //4 bits only public byte worldmapX { get; set; } //6 bits only public byte worldmapY { get; set; } //6 bits only + public bool kantoFlag { get; set; } #endregion #region Constructors (1) @@ -304,16 +322,21 @@ namespace DSPRE.ROMFiles { musicNightID = reader.ReadUInt16(); eventFileID = reader.ReadUInt16(); locationName = reader.ReadByte(); - areaIcon = StandardizeAreaIcon(reader.ReadByte()); - weatherID = reader.ReadByte(); + + byte areaProperties = reader.ReadByte(); + areaIcon = (byte)(areaProperties & 0b_1111); //get 4 bits + unknown1 = (byte)((areaProperties >> 4) & 0b_1111); //get 4 bits after the first 4 - byte cameraAndArea = reader.ReadByte(); - areaSettings = (byte)(cameraAndArea & 0b_1111); //get 4 bits - cameraAngleID = (byte)(cameraAndArea >> 4 & 0b_1111); //get 4 bits after the first 4 + uint last32 = reader.ReadUInt32(); + kantoFlag = (last32 & 0b_1) == 1; //get 1 bit + weatherID = (byte)((last32 >> 1) & 0b_1111_111); //get 7 bits after the first one + locationType = (byte)((last32 >> 8) & 0b_1111); //get 4 bits after the first 8 + cameraAngleID = (byte)((last32 >> 12) & 0b_1111_11); //get 6 bits after the first 12 + followMode = (byte)((last32 >> 18) & 0b_11); //get 2 bits after the first 17 + battleBackground = (byte)((last32 >> 20) & 0b_1111_1); //get 5 bits after the first 19 + flags = (byte)(last32 >> 25 & 0b_1111_111); //get 7 bits after the first 24 - followMode = reader.ReadByte(); - flags = reader.ReadByte(); } catch (EndOfStreamException) { MessageBox.Show("Error loading header " + ID + '.', "Unexpected EOF", MessageBoxButtons.OK, MessageBoxIcon.Error); ID = ushort.MaxValue; @@ -340,86 +363,25 @@ namespace DSPRE.ROMFiles { writer.Write(musicNightID); writer.Write(eventFileID); writer.Write(locationName); - writer.Write(areaIcon); - writer.Write(weatherID); - byte cameraAndArea = (byte)((areaSettings & 0b_1111) + ((cameraAngleID & 0b_1111) << 4)); - writer.Write(cameraAndArea); + byte areaProperties = (byte)((areaIcon & 0b_1111) + ((unknown1 & 0b_1111) << 4)); + writer.Write(areaProperties); - writer.Write(followMode); - writer.Write(flags); + uint last32 = (uint)(((weatherID & 0b_1111_111) << 1) + + ((locationType & 0b_1111) << 8) + + ((cameraAngleID & 0b_1111_1) << 12) + + ((followMode & 0b_11) << 18) + + ((battleBackground & 0b_1111_1) << 20) + + ((flags & 0b_1111_111) << 25)); + + if (kantoFlag) { + last32++; + } + + writer.Write(last32); } return newData.ToArray(); } - public byte StandardizeAreaIcon(byte areaIcon) { - //TO DO: improve this - //The AreaIcon byte is probably split into bits by the game engine, - //each with a specific purpose... - //there is a very interesting pattern here - - - /* This function was written to avoid having to account - for duplicate values of the map name textbox types, since - many share the same textbox image */ - - switch (areaIcon) { - /* Water textbox values */ - case 182: - case 198: - return 166; - /* Town textbox values*/ - case 147: - case 163: - case 179: - case 195: - return 131; - /* Wall textbox values */ - case 33: - case 65: - case 81: - case 97: - case 113: - case 145: - case 161: - case 193: - case 209: - return 17; - /* Gray textbox values */ - case 25: - case 41: - case 57: - case 73: - case 89: - case 105: - case 121: - case 137: - case 153: - case 169: - case 185: - case 201: - case 217: - return 9; - /* Cave textbox values */ - case 148: - case 164: - case 180: - case 196: - return 132; - /* Field textbox values */ - case 151: - return 135; - /* Wooden textbox values */ - case 50: - case 162: - case 194: - return 2; - /* Forest textbox values */ - case 181: - return 165; - default: - return areaIcon; - } - } #endregion } } \ No newline at end of file diff --git a/DS_Map/ROMToolboxDialog.cs b/DS_Map/ROMToolboxDialog.cs index a5d3d62..6fd3cc0 100644 --- a/DS_Map/ROMToolboxDialog.cs +++ b/DS_Map/ROMToolboxDialog.cs @@ -389,8 +389,7 @@ namespace DSPRE { if (RomInfo.gameFamily == "HGSS") { if (DSUtils.CheckOverlayHasCompressionFlag(data.overlayNumber)) { - DialogResult d1; - d1 = MessageBox.Show("It is STRONGLY recommended to configure Overlay1 as uncompressed before proceeding.\n\n" + + DialogResult d1 = MessageBox.Show("It is STRONGLY recommended to configure Overlay1 as uncompressed before proceeding.\n\n" + "More details in the following dialog.\n\n" + "Do you want to know more?", "Confirm to proceed", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); @@ -448,25 +447,41 @@ namespace DSPRE { } } private void overlay1uncomprButton_Click(object sender, EventArgs e) { + if (ConfigureOverlay1Uncompressed()) { + DisableOverlay1patch("Already applied"); + overlay1CB.Visible = true; + } + } + + public static bool ConfigureOverlay1Uncompressed() { + bool isCompressed = false; + string stringDecompressOverlay = ""; + + if (DSUtils.OverlayIsCompressed(1)) { + isCompressed = true; + stringDecompressOverlay = "- Overlay 1 will be decompressed.\n\n"; + } + DialogResult d = MessageBox.Show("This process will apply the following changes:\n\n" + - "- Overlay 1 will be decompressed.\n\n" + - "- Overlay 1 will be configured as \"uncompressed\" in the overlay table.\n\n" + - "Do you wish to continue?", - "Confirm to proceed", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + stringDecompressOverlay + + "- Overlay 1 will be configured as \"uncompressed\" in the overlay table.\n\n" + + "Do you wish to continue?", + "Confirm to proceed", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (d == DialogResult.Yes) { DSUtils.SetOverlayCompressionInTable(1, 0); - if (DSUtils.OverlayIsCompressed(1)) { + if (isCompressed) { DSUtils.DecompressOverlay(1); } - DisableOverlay1patch("Already applied"); - overlay1CB.Visible = true; MessageBox.Show("Overlay1 is now configured as uncompressed.", "Operation successful", MessageBoxButtons.OK, MessageBoxIcon.Information); + return true; } else { MessageBox.Show("No changes have been made.", "Operation canceled", MessageBoxButtons.OK, MessageBoxIcon.Information); + return false; } } + private void ApplyItemStandardizeButton_Click(object sender, EventArgs e) { DialogResult d = MessageBox.Show("This process will apply the following changes:\n\n" + "- Item scripts will be rearranged to follow the natural, ascending index order.\n\n" + diff --git a/DS_Map/Resources/Graphics/Area Icons/hgsslake.png b/DS_Map/Resources/Graphics/Area Icons/hgsslake.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef95ca05646f0bf39de43b8ee3df2068c78b097 GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^jX*5T!3-pGnq}O96k~CayA#8@b22Z19F}xPUq=Rp zjs4tz5?O(Ki2$DvR}-61*J+`(=lfE(l}@|=f8P85+rIw?O4?au><3aDB|(0{{~>_k zUi02apcrR?M`SSr1K(i~W;~w1A_XYeSEXXJVX@k+2dkEf zgm=AT%KxBt=E1%%%tsP7alUIx|I8-)f2ttcw34HIAK3f~#O;1eWwc+|FoV&0r5STk n)b_}o@3a)( zIN8(1F~r0BZMdV*5d)4>v)2BvFJgTwexX^0>q*eEgMLLa76;Trd;}-GV^0V?DRzeC z`JrzQ9u+ZLe2QuCPTE#c&(iSLG4H6F!~_Ok9esDRLSden$Lgh@sZ`uLz><+vX}PI$ zcEja}eT>etc5o^={t+``_Vdk36JEJ%!sU##mtGn((^Kz=Cu~p_@j55XJ@2W;lsE76 YcQ|XuY(9}*3v?fYr>mdKI;Vst0KtN3SpWb4 delta 403 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®_U~zj9uC*0Wi$|-0 zhku8DC~_AT#h?sYf#s;3FQ9r7b?T?y4 zC&`*2z*9fq=} HGSSAreaIconsDict = new Dictionary() { + [00] = "Not displayed", + [01] = "Wall", + [02] = "Wood", + [03] = "Town", + [04] = "Cave", + [05] = "Forest", + [06] = "Water", + [07] = "Field", + [08] = "Lake", + [09] = "Gray" }; + public static string[] HGSSAreaProperties = new string[] { - "[00] Unknown", - "[01] Unknown", - "[02] Unknown", - "[03] Cave Animation", - "[04] Hide Location Tag", - "[05] Unknown", - "[06] Unknown", - "[07] Unknown", - "[08] Unknown", - "[09] Unknown", - "[10] Unknown", - "[11] Unknown", - "[12] Unknown", - "[13] Unknown", - "[14] Unknown", - "[15] Unknown", - "[16] Unknown", + "[00] Mystery Zone", + "[01] City/Town", + "[02] Route", + "[03] Cave", + "[04] Interior [Hide Name]", + "[05] Pokémon Center", + "[06] Underground", + "[07] Unknown/Unused", + "[08] Unknown/Unused", + "[09] Unknown/Unused", + "[10] Unknown/Unused", + "[11] Unknown/Unused", + "[12] Unknown/Unused", + "[13] Unknown/Unused", + "[14] Unknown/Unused", + "[15] Unknown/Unused", + "[16] Unknown/Unused", }; } public static class ShowName { @@ -144,76 +145,58 @@ namespace DSPRE.Resources { }; public static Dictionary HGSSWeatherDict = new Dictionary { [00] = "Normal", - [01] = "Normal [1]", - - [02] = "Rain", + [01] = "Rain", + [02] = "Rain [2]", [03] = "Rain [3]", [04] = "Rain [4]", - [05] = "Rain [5]", - [06] = "Rain [6]", - [07] = "Rain [7]", - [08] = "Rain [8]", - - [09] = "Snow [9]", - [10] = "Snow [10]", - [11] = "Snow [11]", - [12] = "Snow [12]", - [13] = "Snow [13]", - [14] = "Sandstorm (in battle only)", - [15] = "Snow [15]", - - [16] = "Diamond Dust", - [17] = "Diamond Dust [17]", - - [18] = "Fog", - [19] = "Fog [19]", - [20] = "Fog [20]", - [21] = "Fog [21]", - - [22] = "Darkness", - [23] = "Darkness [23]", - [24] = "Darkness after flash", - [25] = "Darkness after flash [25]", - - [26] = "Low Light (Battle Arcade)" + [05] = "Snow [5]", + [06] = "Snow [6]", + [07] = "Sandstorm (in battle only)", + [08] = "Diamond Dust", + [09] = "Fog", + [10] = "Fog [10]", + [11] = "Darkness", + [12] = "Darkness after flash", + [13] = "Low Light (Battle Arcade)" }; } public static class CameraAngles { - public static string[] DPPtCameraValues = new string[] { - "[00] 3D Normal", - "[01] 3D Top View (Higher than [12])", - "[02] 3D Frontal Low (Wider than [15])", - "[03] 3D Frontal", - "[04] 2D Ortho", - "[05] 3D Normal - Wide FOV", - "[06] 3D Bird View", - "[07] 3D Normal", - "[08] 3D Bird View Far", - "[09] 3D Frontal - Wide FOV", - "[10] 3D Top View - Narrow", - "[11] Normal 3D", - "[12] 3D Top View", - "[13] Frontal 3D", - "[14] 3D Top View - Wide FOV", - "[15] 3D Frontal Low" + public static Dictionary DPPtCameraDict = new Dictionary() { + [00] = "3D Normal", + [01] = "3D Top Higher", + [02] = "3D Front Low - Wide FOV", + [03] = "3D Front", + [04] = "2D Ortho", + [05] = "3D Normal - Wide FOV", + [06] = "3D Bird View", + [07] = "3D Normal [07]", + [08] = "3D Bird View Far", + [09] = "3D Front - Wide FOV", + [10] = "3D Top - Narrow", + [11] = "3D Normal [11]", + [12] = "3D Top", + [13] = "Front 3D", + [14] = "3D Top - Wide FOV", + [15] = "3D Front Low" }; - public static string[] HGSSCameraValues = new string[] { - "[00] 3D Top", - "[01] 3D Front High", - "[02] 3D Lower", - "[03] 3D Frontal", - "[04] 2D Top View", - "[05] Normal 3D", - "[06] 3D Normal", - "[07] High 3D", - "[08] 3D Top View", - "[09] 3D Top View", - "[10] 3D High Wide", - "[11] 3D Frontal Wide", - "[12] 3D Lower Close", - "[13] 3D Full Frontal", - "[14] 3D Top View", - "[15] 2D Higher" + public static Dictionary HGSSCameraDict = new Dictionary() { + [00] = "3D Top View [00]", + [01] = "3D Front High", + [02] = "3D Lower", + [03] = "3D Front", + [04] = "2D Top View", + [05] = "Normal 3D", + [06] = "Normal 3D [06]", + [07] = "High 3D", + [08] = "3D Top View [08]", + [09] = "3D Top View [09]", + [10] = "3D High Wide", + [11] = "3D Front Wide", + [12] = "3D Lower Close", + [13] = "3D Full Front", + [14] = "3D Top View [14]", + [15] = "2D Higher", + [16] = "3D Top View [16]" }; } public abstract class MusicDB { @@ -503,7 +486,7 @@ namespace DSPRE.Resources { public static class EventEditor { public static class Spawnables { public static string[] orientationsArray = new string[] { - "Frontal Interaction", + "Front Interaction", "Activated from the left", "Activated from the right", "Activated from behind", @@ -4120,16 +4103,16 @@ namespace DSPRE.Resources { } public static class AreaPics { public static Dictionary hgssAreaPicDict = new Dictionary() { - [0] = "hgsswood", - [1] = "hgssgray", - [2] = "hgsswall", - [3] = "empty", - [4] = "hgsstown", - [5] = "hgsscave", - [6] = "hgssfield", - [7] = "hgsslake", - [8] = "hgssforest", - [9] = "hgsswater", + [0] = "empty", + [1] = "hgsswall", + [2] = "hgsswood", + [3] = "hgsstown", + [4] = "hgsscave", + [5] = "hgssforest", + [6] = "hgsswater", + [7] = "hgssfield", + [8] = "hgsslake", + [9] = "hgssgray" }; } public static class WeatherPics { @@ -4185,15 +4168,15 @@ namespace DSPRE.Resources { }; public static Dictionary hgssweatherImageDict = new Dictionary() { - [new byte[] { 0, 1 }] = "hgssnormal", - [new byte[] { 2, 3, 4, 5, 6, 7, 8 }] = "hgssrain", - [new byte[] { 9, 10, 11, 12, 13, 15 }] = "hgsssnow", - [new byte[] { 14 }] = "hgssnormal", //sandstorm in battle only - [new byte[] { 16, 17 }] = "hgssdiamond", - [new byte[] { 18, 19, 20, 21 }] = "hgssfog", - [new byte[] { 22, 23 }] = "hgssdark", - [new byte[] { 24, 25 }] = "hgssdark2", - [new byte[] { 26 }] = "hgssArcade" + [new byte[] { 0}] = "hgssnormal", + [new byte[] { 1, 2, 3, 4 }] = "hgssrain", + [new byte[] { 5, 6 }] = "hgsssnow", + [new byte[] { 7 }] = "hgssnormal", //sandstorm in battle only + [new byte[] { 8 }] = "hgssdiamond", + [new byte[] { 9, 10 }] = "hgssfog", + [new byte[] { 11 }] = "hgssdark", + [new byte[] { 12 }] = "hgssdark2", + [new byte[] { 13 }] = "hgssArcade" }; } } diff --git a/DS_Map/Resources/hgsscamera16.png b/DS_Map/Resources/hgsscamera16.png new file mode 100644 index 0000000000000000000000000000000000000000..7339bb1767e9af5ff1666edfd2667769e957060c GIT binary patch literal 23386 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