Moved farmhand inventory recreation to MenuHacks.cs
This commit is contained in:
parent
0d760f5cfe
commit
70edc9acf0
|
@ -6,7 +6,9 @@ using System.Threading.Tasks;
|
||||||
using Revitalize.Framework.Objects;
|
using Revitalize.Framework.Objects;
|
||||||
using StardewValley;
|
using StardewValley;
|
||||||
using StardewValley.BellsAndWhistles;
|
using StardewValley.BellsAndWhistles;
|
||||||
|
using StardewValley.Locations;
|
||||||
using StardewValley.Menus;
|
using StardewValley.Menus;
|
||||||
|
using StardewValley.Objects;
|
||||||
|
|
||||||
namespace Revitalize.Framework.Hacks
|
namespace Revitalize.Framework.Hacks
|
||||||
{
|
{
|
||||||
|
@ -142,6 +144,47 @@ namespace Revitalize.Framework.Hacks
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Recreates the farmhand's inventory even when they are offline.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
public static void RecreateFarmhandInventory(object sender, StardewModdingAPI.Events.MenuChangedEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.NewMenu != null)
|
||||||
|
{
|
||||||
|
ModCore.log(e.NewMenu.GetType());
|
||||||
|
|
||||||
|
if (e.NewMenu.GetType() == typeof(StardewValley.Menus.ItemGrabMenu))
|
||||||
|
{
|
||||||
|
if (Game1.player.currentLocation is Cabin)
|
||||||
|
{
|
||||||
|
//ModCore.log("Let's get processing!");
|
||||||
|
List<KeyValuePair<int, Item>> addition = new List<KeyValuePair<int, Item>>();
|
||||||
|
for (int i = 0; i < (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.actualInventory.Count; i++)
|
||||||
|
{
|
||||||
|
Item I = (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.actualInventory[i];
|
||||||
|
if (I is Chest && I.Name != "Chest")
|
||||||
|
{
|
||||||
|
//ModCore.log("Found a custom object!");
|
||||||
|
Item cObj = ModCore.Serializer.DeserializeFromFarmhandInventory(I.Name);
|
||||||
|
if (cObj == null) continue;
|
||||||
|
addition.Add(new KeyValuePair<int, Item>(i, cObj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (KeyValuePair<int, Item> pair in addition)
|
||||||
|
{
|
||||||
|
(Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.actualInventory[pair.Key] = pair.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
(Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu = new InventoryMenu((Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.xPositionOnScreen, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.yPositionOnScreen, true, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.actualInventory, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.highlightMethod, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.capacity, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.rows, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.horizontalGap, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.verticalGap, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.drawSlots);
|
||||||
|
(Game1.activeClickableMenu as ItemGrabMenu).populateClickableComponentList();
|
||||||
|
(Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.populateClickableComponentList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -267,68 +267,10 @@ namespace Revitalize
|
||||||
//Adds in recipes to the mod.
|
//Adds in recipes to the mod.
|
||||||
VanillaRecipeBook = new VanillaRecipeBook();
|
VanillaRecipeBook = new VanillaRecipeBook();
|
||||||
|
|
||||||
ModHelper.Events.Display.MenuChanged += this.Display_MenuChanged;
|
ModHelper.Events.Display.MenuChanged += MenuHacks.RecreateFarmhandInventory;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Display_MenuChanged(object sender, StardewModdingAPI.Events.MenuChangedEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.NewMenu != null)
|
|
||||||
{
|
|
||||||
ModCore.log(e.NewMenu.GetType());
|
|
||||||
|
|
||||||
if (e.NewMenu.GetType() == typeof(StardewValley.Menus.ItemGrabMenu))
|
|
||||||
{
|
|
||||||
if (Game1.player.currentLocation is Cabin)
|
|
||||||
{
|
|
||||||
ModCore.log("Let's get processing!");
|
|
||||||
List<KeyValuePair<int,Item>> addition = new List<KeyValuePair<int,Item>>();
|
|
||||||
for (int i = 0; i < (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.actualInventory.Count; i++)
|
|
||||||
{
|
|
||||||
Item I = (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.actualInventory[i];
|
|
||||||
if (I is Chest && I.Name != "Chest")
|
|
||||||
{
|
|
||||||
ModCore.log("Found a custom object!");
|
|
||||||
Item cObj= ModCore.Serializer.DeserializeFromFarmhandInventory(I.Name);
|
|
||||||
if (cObj == null)
|
|
||||||
{
|
|
||||||
ModCore.log("NULL OBJ");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ModCore.log("Not null!");
|
|
||||||
}
|
|
||||||
if (cObj == null) continue;
|
|
||||||
addition.Add(new KeyValuePair<int, Item>(i,cObj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
for(int I=0; I< (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.actualInventory.Count; I++)
|
|
||||||
{
|
|
||||||
if((Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.actualInventory[I] == null)
|
|
||||||
{
|
|
||||||
if (addition.Count > 0) {
|
|
||||||
(Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.actualInventory[I] = addition[0].Value;
|
|
||||||
addition.RemoveAt(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
foreach(KeyValuePair<int,Item> pair in addition)
|
|
||||||
{
|
|
||||||
(Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.actualInventory[pair.Key] = pair.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
(Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu = new InventoryMenu((Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.xPositionOnScreen, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.yPositionOnScreen, true, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.actualInventory, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.highlightMethod, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.capacity, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.rows, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.horizontalGap, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.verticalGap, (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.drawSlots);
|
|
||||||
(Game1.activeClickableMenu as ItemGrabMenu).populateClickableComponentList();
|
|
||||||
(Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu.populateClickableComponentList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void GameLoop_Saving(object sender, StardewModdingAPI.Events.SavingEventArgs e)
|
private void GameLoop_Saving(object sender, StardewModdingAPI.Events.SavingEventArgs e)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue