From e1017e92b4daab4664756e13028019e66edb54d5 Mon Sep 17 00:00:00 2001 From: DogooFalchion Date: Mon, 12 Dec 2016 17:46:44 -0500 Subject: [PATCH] Refactor some of the mess that is NetItem and PlayerData to be more sane. Can not reproduce the SSC corruption with this. --- TShockAPI/NetItem.cs | 9 +++++++++ TShockAPI/PlayerData.cs | 43 ++++++++++++++--------------------------- 2 files changed, 24 insertions(+), 28 deletions(-) diff --git a/TShockAPI/NetItem.cs b/TShockAPI/NetItem.cs index 8ae60e62..8d6b4e2a 100644 --- a/TShockAPI/NetItem.cs +++ b/TShockAPI/NetItem.cs @@ -76,6 +76,15 @@ namespace TShockAPI /// public static readonly int MaxInventory = InventorySlots + ArmorSlots + DyeSlots + MiscEquipSlots + MiscDyeSlots + PiggySlots + SafeSlots + ForgeSlots + 1; + public static readonly Tuple InventoryIndex = new Tuple(0, InventorySlots); + public static readonly Tuple ArmorIndex = new Tuple(InventoryIndex.Item2, InventoryIndex.Item2 + ArmorSlots); + public static readonly Tuple DyeIndex = new Tuple(ArmorIndex.Item2, ArmorIndex.Item2 + DyeSlots); + public static readonly Tuple MiscEquipIndex = new Tuple(DyeIndex.Item2, DyeIndex.Item2 + MiscEquipSlots); + public static readonly Tuple MiscDyeIndex = new Tuple(MiscEquipIndex.Item2, MiscEquipIndex.Item2 + MiscDyeSlots); + public static readonly Tuple PiggyIndex = new Tuple(MiscDyeIndex.Item2, MiscDyeIndex.Item2 + PiggySlots); + public static readonly Tuple SafeIndex = new Tuple(PiggyIndex.Item2, PiggyIndex.Item2 + SafeSlots); + public static readonly Tuple ForgeIndex = new Tuple(SafeIndex.Item2, SafeIndex.Item2 + ForgeSlots); + [JsonProperty("netID")] private int _netId; [JsonProperty("prefix")] diff --git a/TShockAPI/PlayerData.cs b/TShockAPI/PlayerData.cs index 113ceb2a..9cd7c97b 100644 --- a/TShockAPI/PlayerData.cs +++ b/TShockAPI/PlayerData.cs @@ -123,64 +123,51 @@ namespace TShockAPI for (int i = 0; i < NetItem.MaxInventory; i++) { - if (i < NetItem.InventorySlots) + if (i < NetItem.InventoryIndex.Item2) { //0-58 this.inventory[i] = (NetItem)inventory[i]; } - else if (i < NetItem.InventorySlots + NetItem.ArmorSlots) + else if (i < NetItem.ArmorIndex.Item2) { //59-78 - var index = i - NetItem.InventorySlots; + var index = i - NetItem.ArmorIndex.Item1; this.inventory[i] = (NetItem)armor[index]; } - else if (i < NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots) + else if (i < NetItem.DyeIndex.Item2) { //79-88 - var index = i - (NetItem.InventorySlots + NetItem.ArmorSlots); + var index = i - NetItem.DyeIndex.Item1; this.inventory[i] = (NetItem)dye[index]; } - else if (i < - NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots) + else if (i < NetItem.MiscEquipIndex.Item2) { //89-93 - var index = i - (NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots); + var index = i - NetItem.MiscEquipIndex.Item1; this.inventory[i] = (NetItem)miscEqups[index]; } - else if (i < - NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots - + NetItem.MiscDyeSlots) + else if (i < NetItem.MiscDyeIndex.Item2) { //93-98 - var index = i - (NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots - + NetItem.MiscEquipSlots); + var index = i - NetItem.MiscDyeIndex.Item1; this.inventory[i] = (NetItem)miscDyes[index]; } - else if (i < - NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots + - NetItem.MiscDyeSlots + NetItem.PiggySlots) + else if (i < NetItem.PiggyIndex.Item2) { //98-138 - var index = i - (NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots - + NetItem.MiscEquipSlots + NetItem.MiscDyeSlots); + var index = i - NetItem.PiggyIndex.Item1; this.inventory[i] = (NetItem)piggy[index]; } - else if (i < - NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots + - NetItem.MiscDyeSlots + NetItem.PiggySlots + NetItem.SafeSlots) + else if (i < NetItem.SafeIndex.Item2) { //138-178 - var index = i - (NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots - + NetItem.MiscEquipSlots + NetItem.MiscDyeSlots + NetItem.PiggySlots); + var index = i - NetItem.SafeIndex.Item1; this.inventory[i] = (NetItem)safe[index]; } - else if (i < - NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots + - NetItem.MiscDyeSlots + NetItem.PiggySlots + NetItem.SafeSlots + NetItem.ForgeSlots) + else if (i < NetItem.ForgeIndex.Item2) { //179-219 - var index = i - (NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots - + NetItem.MiscEquipSlots + NetItem.MiscDyeSlots + NetItem.PiggySlots); + var index = i - NetItem.ForgeIndex.Item1; this.inventory[i] = (NetItem)forge[index]; } else