diff --git a/Class1.cs b/Class1.cs new file mode 100644 index 00000000..1f3b49c4 --- /dev/null +++ b/Class1.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using StardewModdingAPI; +using StardewValley; +using StardewModdingAPI.Events; +using Microsoft.Xna.Framework; +using System.IO; + +namespace CustomShopMod +{ + class myclass : Mod + { + public override void Entry(params object[] objects) + { + Command.RegisterCommand("shop_mod", "Allows purchasing from custom shops. | shopmod ", new[] { "(String) (Int32) (Int32)" }).CommandFired += player_addItem; + } + public void player_addItem(object sender, EventArgsCommand e) + { + if (e.Command.CalledArgs.Length > 0) + { + if (e.Command.CalledArgs.Length <= 3) + { + int quantity = Convert.ToInt32(e.Command.CalledArgs[2]); + int list_num = Convert.ToInt32(e.Command.CalledArgs[1]); + string newstring = e.Command.CalledArgs[0]; + DataLoader(newstring, list_num, quantity); + } + else Log.Error("Invalid number of parameters! The paramaters are as follows: shop_mod (shop_name.txt) (Shop_List_Number) (quantity)"); + } + else Log.Error("Invalid Parameters. Try Shop_Name.txt Shop_List_Id Quantity"); + } + + public void DataLoader(string funnystring, int list_num, int quantity) + { + int object_id = 0; + int count = 0; + int price = 0; + + //loads the data to the variables upon loading the game. + //string myname = StardewValley.Game1.player.name; + string mylocation = Path.Combine(PathOnDisk, funnystring); + string mylocation3 = mylocation + ".txt"; + if (!File.Exists(mylocation3)) //if not data.json exists, initialize the data variables to the ModConfig data. I.E. starting out. + { + Log.Error("Invalid shop.Please make sure that " + mylocation3 + " exists!"); + + } + + else + { + string[] separators = { "/", " " }; + var lineCount = File.ReadLines(mylocation3).Count(); + + if (lineCount > 12 + ((list_num - 1) * 11)) + { //my logic seems reversed here? + string[] readtext = File.ReadAllLines(mylocation3); + string obj_name = readtext[6 + ((list_num - 1) * 11)]; + + string string_obj_id = readtext[8 + ((list_num - 1) * 11)]; + string string_count_id = readtext[10 + ((list_num - 1) * 11)]; + string string_price_id = readtext[12 + ((list_num - 1) * 11)]; + + string[] string_obj_id_arr = string_obj_id.Split(separators, StringSplitOptions.RemoveEmptyEntries); + string[] string_count_id_arr = string_count_id.Split(separators, StringSplitOptions.RemoveEmptyEntries); + // string[] string_price_id_arr = string_price_id.Split(separators, StringSplitOptions.RemoveEmptyEntries); + + object_id = Convert.ToInt32(string_obj_id); + count = Convert.ToInt32(string_count_id); + price = Convert.ToInt32(string_price_id); + + int array_size = string_obj_id_arr.Length; + int array_size2 = string_count_id_arr.Length; + Log.Info(array_size2); + Log.Info(array_size); + + int i = 0; + // string[] object_id_array = object_id.Split(separators, StringSplitOptions.RemoveEmptyEntries); + + //Log.Info(quantity); + //Log.Info(price); + if (array_size == array_size2) + { + while (i < array_size && i < array_size2) + { + object_id = Convert.ToInt32(string_obj_id_arr[i]); + count = Convert.ToInt32(string_count_id_arr[i]); + price = Convert.ToInt32(string_price_id); + i++; + if (quantity * price <= 999) + { + if (StardewModdingAPI.Entities.SPlayer.Player.money >= quantity * price) + { + StardewModdingAPI.Entities.SPlayer.Player.money -= quantity * price; + var o = new StardewValley.Object(object_id, count * quantity); + Game1.player.addItemByMenuIfNecessary(o); + Log.Success("Successfully purchased " + obj_name + " from " + funnystring); + } + else Log.Error("Not enough Money!"); + + } + else Log.Error("Warning. Attempting to obtain more than 999 of an item. This loss was prevented."); + } + } + else Log.Error("Item Object Id's and Object count values are of different lengths. Please make sure that they are the same length! i.e each has the same amount of elements."); + } + + + else Log.Error("You tried to call something not in the text file. Please stick to the original format!"); + + + } + } + } + } \ No newline at end of file