using System; using System.IO; using Omegasis.BuyBackCollectables.Framework; using StardewModdingAPI; using StardewModdingAPI.Events; using StardewValley; namespace Omegasis.BuyBackCollectables { /// The mod entry point. public class BuyBackCollectables : Mod { /********* ** Properties *********/ /// The key which shows the menu. private string KeyBinding = "B"; /// The multiplier applied to the cost of buying back a collectable. private double CostMultiplier = 3.0; /// Whether the player loaded a save. private bool IsGameLoaded; /********* ** Public methods *********/ /// The mod entry point, called after the mod is first loaded. /// Provides simplified APIs for writing mods. public override void Entry(IModHelper helper) { SaveEvents.AfterLoad += this.SaveEvents_AfterLoad; ControlEvents.KeyPressed += this.ControlEvents_KeyPressed; } /********* ** Private methods *********/ /// The method invoked after the player loads a save. /// The event sender. /// The event data. public void SaveEvents_AfterLoad(object sender, EventArgs e) { this.IsGameLoaded = true; this.LoadConfig(); this.WriteConfig(); } /// The method invoked when the presses a keyboard button. /// The event sender. /// The event data. public void ControlEvents_KeyPressed(object sender, EventArgsKeyPressed e) { if (Game1.player == null || Game1.player.currentLocation == null || !this.IsGameLoaded || Game1.activeClickableMenu != null) return; if (e.KeyPressed.ToString() == this.KeyBinding) Game1.activeClickableMenu = new BuyBackMenu(this.CostMultiplier); } /// Load the configuration settings. private void LoadConfig() { //loads the data to the variables upon loading the game. string path = Path.Combine(Helper.DirectoryPath, "BuyBack_Config.txt"); if (!File.Exists(path)) { this.KeyBinding = "B"; this.CostMultiplier = 3.0; } else { string[] text = File.ReadAllLines(path); this.KeyBinding = Convert.ToString(text[3]); this.CostMultiplier = Convert.ToDouble(text[5]); } } /// Save the configuration settings. private void WriteConfig() { //write all of my info to a text file. string path = Path.Combine(Helper.DirectoryPath, "BuyBack_Config.txt"); string[] text = new string[20]; text[0] = "Config: Buy Back Collections. Feel free to mess with these settings."; text[1] = "===================================================================================="; text[2] = "Key binding"; text[3] = this.KeyBinding; text[4] = "Collectables Multiplier Cost: Sell Value * value listed below"; text[5] = this.CostMultiplier.ToString(); File.WriteAllLines(path, text); } } }