using Microsoft.Xna.Framework; using Netcode; using StardewModdingAPI; using StardewValley; using StardewValley.Menus; namespace Omegasis.SaveAnywhere.Framework { /// A subclass of that does everything except save. internal class NewShippingMenu : ShippingMenu { /********* ** Properties *********/ /// The private field on the shipping menu which indicates the game has already been saved, which prevents it from saving. private readonly IReflectedField SavedYet; /********* ** Public methods *********/ /// Construct an instance. /// The shipping bin items. /// Simplifies access to game code. public NewShippingMenu(NetCollection items, IReflectionHelper reflection) : base(items) { this.SavedYet = reflection.GetField(this, "savedYet"); } /// /// Overrides some base functionality of the shipping menu to enable proper closing. /// /// /// /// public override void receiveLeftClick(int x, int y, bool playSound = true) { if (this.okButton.containsPoint(x, y)) this.exitThisMenu(true); base.receiveLeftClick(x, y, playSound); } /// Updates the menu during the game's update loop. /// The game time that has passed. public override void update(GameTime time) { this.SavedYet.SetValue(true); // prevent menu from saving base.update(time); } } }