From beb4e8111a5601582ab60a5ab536d42b03152dbb Mon Sep 17 00:00:00 2001 From: Kurt Date: Sun, 26 Apr 2020 21:11:11 -0700 Subject: [PATCH] Add pocket/bag count Rename Pocket1/Pocket2 to Bag/Pocket respectively (bag is slots21-40) --- NHSE.Core/Save/Files/Personal.cs | 16 ++++- NHSE.WinForms/Editor.Designer.cs | 70 +++++++++++++++++++ NHSE.WinForms/Editor.cs | 25 ++++--- .../Subforms/Map/PlayerHouseEditor.cs | 2 +- .../Subforms/Map/VillagerHouseEditor.cs | 2 +- 5 files changed, 100 insertions(+), 15 deletions(-) diff --git a/NHSE.Core/Save/Files/Personal.cs b/NHSE.Core/Save/Files/Personal.cs index 2f0ec95..36ba3cb 100644 --- a/NHSE.Core/Save/Files/Personal.cs +++ b/NHSE.Core/Save/Files/Personal.cs @@ -58,18 +58,30 @@ public EncryptedInt32 NookMiles set => value.Write(Data, Offsets.NookMiles); } - public IReadOnlyList Pocket1 + public IReadOnlyList Bag // Slots 21-40 { get => Item.GetArray(Data.Slice(Offsets.Pockets1, Offsets.Pockets1Count * Item.SIZE)); set => Item.SetArray(value).CopyTo(Data, Offsets.Pockets1); } - public IReadOnlyList Pocket2 + public uint BagCount // Count of the Bag Slots that are available for use + { + get => BitConverter.ToUInt32(Data, Offsets.Pockets1 + (Offsets.Pockets1Count * Item.SIZE)); + set => BitConverter.GetBytes(value).CopyTo(Data, Offsets.Pockets1 + (Offsets.Pockets1Count * Item.SIZE)); + } + + public IReadOnlyList Pocket // Slots 1-20 { get => Item.GetArray(Data.Slice(Offsets.Pockets2, Offsets.Pockets2Count * Item.SIZE)); set => Item.SetArray(value).CopyTo(Data, Offsets.Pockets2); } + public uint PocketCount // Count of the Pocket Slots that are available for use + { + get => BitConverter.ToUInt32(Data, Offsets.Pockets2 + (Offsets.Pockets2Count * Item.SIZE)); + set => BitConverter.GetBytes(value).CopyTo(Data, Offsets.Pockets2 + (Offsets.Pockets2Count * Item.SIZE)); + } + public IReadOnlyList Storage { get => Item.GetArray(Data.Slice(Offsets.Storage, Offsets.StorageCount * Item.SIZE)); diff --git a/NHSE.WinForms/Editor.Designer.cs b/NHSE.WinForms/Editor.Designer.cs index 95e315d..1fbb6ad 100644 --- a/NHSE.WinForms/Editor.Designer.cs +++ b/NHSE.WinForms/Editor.Designer.cs @@ -79,6 +79,10 @@ private void InitializeComponent() this.PB_Player = new System.Windows.Forms.PictureBox(); this.TC_Editors = new System.Windows.Forms.TabControl(); this.B_EditPlayerHouses = new System.Windows.Forms.Button(); + this.NUD_PocketCount1 = new System.Windows.Forms.NumericUpDown(); + this.NUD_PocketCount2 = new System.Windows.Forms.NumericUpDown(); + this.L_PocketCount1 = new System.Windows.Forms.Label(); + this.L_PocketCount2 = new System.Windows.Forms.Label(); this.Menu_Editor.SuspendLayout(); this.CM_Picture.SuspendLayout(); this.Tab_Map.SuspendLayout(); @@ -90,6 +94,8 @@ 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_PocketCount1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_PocketCount2)).BeginInit(); this.SuspendLayout(); // // Menu_Editor @@ -340,6 +346,10 @@ private void InitializeComponent() // // Tab_Players // + this.Tab_Players.Controls.Add(this.L_PocketCount2); + this.Tab_Players.Controls.Add(this.L_PocketCount1); + this.Tab_Players.Controls.Add(this.NUD_PocketCount2); + this.Tab_Players.Controls.Add(this.NUD_PocketCount1); this.Tab_Players.Controls.Add(this.B_EditPlayer); this.Tab_Players.Controls.Add(this.B_EditPlayerFlags); this.Tab_Players.Controls.Add(this.B_EditPlayerItems); @@ -570,6 +580,60 @@ private void InitializeComponent() this.B_EditPlayerHouses.UseVisualStyleBackColor = true; this.B_EditPlayerHouses.Click += new System.EventHandler(this.B_EditPlayerHouses_Click); // + // NUD_PocketCount1 + // + this.NUD_PocketCount1.Location = new System.Drawing.Point(104, 167); + this.NUD_PocketCount1.Maximum = new decimal(new int[] { + 2147483647, + 0, + 0, + 0}); + this.NUD_PocketCount1.Name = "NUD_PocketCount1"; + this.NUD_PocketCount1.Size = new System.Drawing.Size(41, 20); + this.NUD_PocketCount1.TabIndex = 19; + this.NUD_PocketCount1.Value = new decimal(new int[] { + 20, + 0, + 0, + 0}); + // + // NUD_PocketCount2 + // + this.NUD_PocketCount2.Location = new System.Drawing.Point(104, 188); + this.NUD_PocketCount2.Maximum = new decimal(new int[] { + 2147483647, + 0, + 0, + 0}); + this.NUD_PocketCount2.Name = "NUD_PocketCount2"; + this.NUD_PocketCount2.Size = new System.Drawing.Size(41, 20); + this.NUD_PocketCount2.TabIndex = 20; + this.NUD_PocketCount2.Value = new decimal(new int[] { + 20, + 0, + 0, + 0}); + // + // L_PocketCount1 + // + this.L_PocketCount1.AutoSize = true; + this.L_PocketCount1.Location = new System.Drawing.Point(148, 170); + this.L_PocketCount1.Name = "L_PocketCount1"; + this.L_PocketCount1.Size = new System.Drawing.Size(81, 13); + this.L_PocketCount1.TabIndex = 21; + this.L_PocketCount1.Text = "Pocket Count 1"; + this.L_PocketCount1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // L_PocketCount2 + // + this.L_PocketCount2.AutoSize = true; + this.L_PocketCount2.Location = new System.Drawing.Point(148, 191); + this.L_PocketCount2.Name = "L_PocketCount2"; + this.L_PocketCount2.Size = new System.Drawing.Size(81, 13); + this.L_PocketCount2.TabIndex = 22; + this.L_PocketCount2.Text = "Pocket Count 2"; + this.L_PocketCount2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // // Editor // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -596,6 +660,8 @@ 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_PocketCount1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_PocketCount2)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -652,6 +718,10 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem B_EditPlayerRecipes; private System.Windows.Forms.Button B_EditPlayer; private System.Windows.Forms.Button B_EditPlayerHouses; + private System.Windows.Forms.Label L_PocketCount2; + private System.Windows.Forms.Label L_PocketCount1; + private System.Windows.Forms.NumericUpDown NUD_PocketCount2; + private System.Windows.Forms.NumericUpDown NUD_PocketCount1; } } diff --git a/NHSE.WinForms/Editor.cs b/NHSE.WinForms/Editor.cs index 307d1d7..e96d634 100644 --- a/NHSE.WinForms/Editor.cs +++ b/NHSE.WinForms/Editor.cs @@ -176,15 +176,15 @@ private void B_EditPlayerItems_Click(object sender, EventArgs e) var player = SAV.Players[PlayerIndex]; { var pers = player.Personal; - var p1 = pers.Pocket1; - var p2 = pers.Pocket2; - var items = p2.Concat(p1).ToArray(); + var bag = pers.Bag; + var pocket = pers.Pocket; + var items = pocket.Concat(bag).ToArray(); using var editor = new PlayerItemEditor(items, 10, 4, sysbot: true); if (editor.ShowDialog() != DialogResult.OK) return; - pers.Pocket2 = items.Take(p2.Count).ToArray(); - pers.Pocket1 = items.Skip(p2.Count).Take(p1.Count).ToArray(); + pers.Pocket = items.Take(pocket.Count).ToArray(); + pers.Bag = items.Skip(pocket.Count).Take(bag.Count).ToArray(); } } @@ -237,6 +237,10 @@ private void LoadPlayer(int index) NUD_NookMiles.Value = Math.Min(int.MaxValue, pers.NookMiles.Value); NUD_Wallet.Value = Math.Min(int.MaxValue, pers.Wallet.Value); + // swapped on purpose -- first count is the first two rows of items + NUD_PocketCount1.Value = Math.Min(int.MaxValue, pers.PocketCount); + NUD_PocketCount2.Value = Math.Min(int.MaxValue, pers.BagCount); + try { var photo = pers.GetPhotoData(); @@ -286,6 +290,10 @@ private void SavePlayer(int index) var wallet = pers.Wallet; wallet.Value = (uint)NUD_Wallet.Value; pers.Wallet = wallet; + + // swapped on purpose -- first count is the first two rows of items + pers.PocketCount = (uint)NUD_PocketCount1.Value; + pers.BagCount = (uint)NUD_PocketCount2.Value; } private void B_EditAchievements_Click(object sender, EventArgs e) @@ -317,12 +325,7 @@ private void Menu_SavePNG_Click(object sender, EventArgs e) return; } - string name; - if (pb == PB_Player) - name = SAV.Players[PlayerIndex].Personal.PlayerName; - else - name = "photo"; - + string name = SAV.Players[PlayerIndex].Personal.PlayerName; var bmp = pb.Image; using var sfd = new SaveFileDialog { diff --git a/NHSE.WinForms/Subforms/Map/PlayerHouseEditor.cs b/NHSE.WinForms/Subforms/Map/PlayerHouseEditor.cs index c6d0b05..623e484 100644 --- a/NHSE.WinForms/Subforms/Map/PlayerHouseEditor.cs +++ b/NHSE.WinForms/Subforms/Map/PlayerHouseEditor.cs @@ -8,7 +8,7 @@ namespace NHSE.WinForms { public partial class PlayerHouseEditor : Form { - public readonly PlayerHouse[] Houses; + private readonly PlayerHouse[] Houses; private readonly IReadOnlyList Players; private int Index; diff --git a/NHSE.WinForms/Subforms/Map/VillagerHouseEditor.cs b/NHSE.WinForms/Subforms/Map/VillagerHouseEditor.cs index 1bb2749..7728159 100644 --- a/NHSE.WinForms/Subforms/Map/VillagerHouseEditor.cs +++ b/NHSE.WinForms/Subforms/Map/VillagerHouseEditor.cs @@ -9,7 +9,7 @@ namespace NHSE.WinForms public partial class VillagerHouseEditor : Form { private readonly MainSave SAV; - public readonly VillagerHouse[] Houses; + private readonly VillagerHouse[] Houses; private readonly IReadOnlyList Villagers; private int Index;