From a14ddcade6ef778478b24249e340ffbfbd348411 Mon Sep 17 00:00:00 2001 From: Kurt Date: Fri, 12 Jun 2020 23:04:44 -0700 Subject: [PATCH] Add raw weather seed reading (not shifted) #309 --- NHSE.Core/Save/Files/MainSave.cs | 3 +- NHSE.Core/Save/Offsets/MainSaveOffsets.cs | 3 +- NHSE.Core/Save/Offsets/MainSaveOffsets10.cs | 3 +- NHSE.Core/Save/Offsets/MainSaveOffsets11.cs | 3 +- NHSE.Core/Save/Offsets/MainSaveOffsets12.cs | 3 +- NHSE.WinForms/Editor.Designer.cs | 35 +++++++++++++++++++++ NHSE.WinForms/Editor.cs | 2 ++ 7 files changed, 47 insertions(+), 5 deletions(-) diff --git a/NHSE.Core/Save/Files/MainSave.cs b/NHSE.Core/Save/Files/MainSave.cs index 02ed41d..5f6b647 100644 --- a/NHSE.Core/Save/Files/MainSave.cs +++ b/NHSE.Core/Save/Files/MainSave.cs @@ -11,8 +11,9 @@ public sealed class MainSave : EncryptedFilePair public readonly MainSaveOffsets Offsets; public MainSave(string folder) : base(folder, "main") => Offsets = MainSaveOffsets.GetOffsets(Info); - public Hemisphere Hemisphere { get => (Hemisphere)Data[Offsets.Hemisphere]; set => Data[Offsets.Hemisphere] = (byte)value; } + public Hemisphere Hemisphere { get => (Hemisphere)Data[Offsets.WeatherArea]; set => Data[Offsets.WeatherArea] = (byte)value; } public AirportColor AirportThemeColor { get => (AirportColor)Data[Offsets.AirportThemeColor]; set => Data[Offsets.AirportThemeColor] = (byte)value; } + public uint WeatherSeed { get => BitConverter.ToUInt32(Data, Offsets.WeatherRandSeed); set => BitConverter.GetBytes(value).CopyTo(Data, Offsets.WeatherRandSeed); } public Villager GetVillager(int index) => Offsets.ReadVillager(Data, index); public void SetVillager(Villager value, int index) => Offsets.WriteVillager(value, Data, index); diff --git a/NHSE.Core/Save/Offsets/MainSaveOffsets.cs b/NHSE.Core/Save/Offsets/MainSaveOffsets.cs index 246ec45..d216c10 100644 --- a/NHSE.Core/Save/Offsets/MainSaveOffsets.cs +++ b/NHSE.Core/Save/Offsets/MainSaveOffsets.cs @@ -21,7 +21,8 @@ public abstract class MainSaveOffsets public abstract int PatternFlag { get; } public abstract int PatternTailor { get; } - public abstract int Hemisphere { get; } + public abstract int WeatherArea { get; } + public abstract int WeatherRandSeed { get; } public abstract int MainFieldStructure { get; } diff --git a/NHSE.Core/Save/Offsets/MainSaveOffsets10.cs b/NHSE.Core/Save/Offsets/MainSaveOffsets10.cs index f2d0ebc..7a1624c 100644 --- a/NHSE.Core/Save/Offsets/MainSaveOffsets10.cs +++ b/NHSE.Core/Save/Offsets/MainSaveOffsets10.cs @@ -15,7 +15,8 @@ public class MainSaveOffsets10 : MainSaveOffsets public override int PatternTailor => PatternFlag + DesignPattern.SIZE; public const int GSaveWeather = GSaveLandStart + 0x1D6FB0; - public override int Hemisphere => GSaveWeather + 0x14; + public override int WeatherArea => GSaveWeather + 0x14; // Hemisphere + public override int WeatherRandSeed => GSaveWeather + 0x18; public override int EventFlagLand => GSaveLandStart + 0x200FF4; diff --git a/NHSE.Core/Save/Offsets/MainSaveOffsets11.cs b/NHSE.Core/Save/Offsets/MainSaveOffsets11.cs index cabd703..d07385c 100644 --- a/NHSE.Core/Save/Offsets/MainSaveOffsets11.cs +++ b/NHSE.Core/Save/Offsets/MainSaveOffsets11.cs @@ -15,7 +15,8 @@ public class MainSaveOffsets11 : MainSaveOffsets public override int PatternTailor => PatternFlag + DesignPattern.SIZE; public const int GSaveWeather = GSaveLandStart + 0x1D6F98; - public override int Hemisphere => GSaveWeather + 0x14; + public override int WeatherArea => GSaveWeather + 0x14; // Hemisphere + public override int WeatherRandSeed => GSaveWeather + 0x18; public override int EventFlagLand => GSaveLandStart + 0x20100C; diff --git a/NHSE.Core/Save/Offsets/MainSaveOffsets12.cs b/NHSE.Core/Save/Offsets/MainSaveOffsets12.cs index 2d1a7e1..a371dd7 100644 --- a/NHSE.Core/Save/Offsets/MainSaveOffsets12.cs +++ b/NHSE.Core/Save/Offsets/MainSaveOffsets12.cs @@ -15,7 +15,8 @@ public class MainSaveOffsets12 : MainSaveOffsets public override int PatternTailor => PatternFlag + DesignPattern.SIZE; public const int GSaveWeather = GSaveLandStart + 0x1D6FB0; - public override int Hemisphere => GSaveWeather + 0x14; + public override int WeatherArea => GSaveWeather + 0x14; // Hemisphere + public override int WeatherRandSeed => GSaveWeather + 0x18; public override int EventFlagLand => GSaveLandStart + 0x20100C; diff --git a/NHSE.WinForms/Editor.Designer.cs b/NHSE.WinForms/Editor.Designer.cs index 976472d..0b07349 100644 --- a/NHSE.WinForms/Editor.Designer.cs +++ b/NHSE.WinForms/Editor.Designer.cs @@ -96,6 +96,8 @@ private void InitializeComponent() this.CB_Players = new System.Windows.Forms.ComboBox(); this.PB_Player = new System.Windows.Forms.PictureBox(); this.TC_Editors = new System.Windows.Forms.TabControl(); + this.L_WeatherSeed = new System.Windows.Forms.Label(); + this.NUD_WeatherSeed = new System.Windows.Forms.NumericUpDown(); this.Menu_Editor.SuspendLayout(); this.CM_Picture.SuspendLayout(); this.Tab_Map.SuspendLayout(); @@ -111,6 +113,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.NUD_BankBells)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PB_Player)).BeginInit(); this.TC_Editors.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_WeatherSeed)).BeginInit(); this.SuspendLayout(); // // Menu_Editor @@ -236,6 +239,8 @@ private void InitializeComponent() // // Tab_Map // + this.Tab_Map.Controls.Add(this.NUD_WeatherSeed); + this.Tab_Map.Controls.Add(this.L_WeatherSeed); this.Tab_Map.Controls.Add(this.B_EditDesignsTailor); this.Tab_Map.Controls.Add(this.B_EditPatternFlag); this.Tab_Map.Controls.Add(this.CB_AirportColor); @@ -786,6 +791,33 @@ private void InitializeComponent() this.TC_Editors.Size = new System.Drawing.Size(404, 237); this.TC_Editors.TabIndex = 1; // + // L_WeatherSeed + // + this.L_WeatherSeed.AutoSize = true; + this.L_WeatherSeed.Location = new System.Drawing.Point(301, 66); + this.L_WeatherSeed.Name = "L_WeatherSeed"; + this.L_WeatherSeed.Size = new System.Drawing.Size(63, 13); + this.L_WeatherSeed.TabIndex = 64; + this.L_WeatherSeed.Text = "Hemisphere"; + // + // NUD_WeatherSeed + // + this.NUD_WeatherSeed.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.NUD_WeatherSeed.Location = new System.Drawing.Point(202, 59); + this.NUD_WeatherSeed.Maximum = new decimal(new int[] { + -1, + 0, + 0, + 0}); + this.NUD_WeatherSeed.Name = "NUD_WeatherSeed"; + this.NUD_WeatherSeed.Size = new System.Drawing.Size(93, 20); + this.NUD_WeatherSeed.TabIndex = 65; + this.NUD_WeatherSeed.Value = new decimal(new int[] { + 1234567890, + 0, + 0, + 0}); + // // Editor // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -817,6 +849,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.NUD_BankBells)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PB_Player)).EndInit(); this.TC_Editors.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.NUD_WeatherSeed)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -890,6 +923,8 @@ private void InitializeComponent() private System.Windows.Forms.Button B_EditPatternFlag; private System.Windows.Forms.ToolStripMenuItem B_EditMuseum_Click; private System.Windows.Forms.ToolStripMenuItem B_EditVisitors; + private System.Windows.Forms.Label L_WeatherSeed; + private System.Windows.Forms.NumericUpDown NUD_WeatherSeed; } } diff --git a/NHSE.WinForms/Editor.cs b/NHSE.WinForms/Editor.cs index f964a5b..76ff3f3 100644 --- a/NHSE.WinForms/Editor.cs +++ b/NHSE.WinForms/Editor.cs @@ -180,6 +180,7 @@ private void LoadMain() foreach (var n in names) CB_AirportColor.Items.Add(n); CB_AirportColor.SelectedIndex = (int)m.AirportThemeColor; + NUD_WeatherSeed.Value = m.WeatherSeed; } private void SaveMain() @@ -187,6 +188,7 @@ private void SaveMain() var m = SAV.Main; m.Hemisphere = (Hemisphere)CB_Hemisphere.SelectedIndex; m.AirportThemeColor = (AirportColor)CB_AirportColor.SelectedIndex; + m.WeatherSeed = (uint)NUD_WeatherSeed.Value; } #region Player Editing