private static bool ConfirmData(string Name, Race race, Stats stats) { string Ans; while (true) { Console.WriteLine("Name: {0}", Name); Console.WriteLine("Race: {0}", StringModify.FirstToUpper(race.race)); Console.WriteLine("Strength: {0}", stats.Strength); Console.WriteLine("Ability: {0}", stats.Ability); Console.WriteLine("Resistance: {0}", stats.Resistance); Console.WriteLine("Armor: {0}", stats.Armor); Console.WriteLine("Firepower: {0}\n", stats.Firepower); Console.WriteLine("Done?"); Console.WriteLine("1. Yes"); Console.WriteLine("2. No"); Ans = Console.ReadLine(); Ans = YesNoInput.Parse(Ans); if (Ans.Equals("yes")) { return(true); } else if (Ans.Equals("no")) { return(false); } else { Console.Clear(); Console.WriteLine("Invalid command\n"); } } }
public void Sell() { string Name; while (true) { Console.WriteLine("Which item do you want to sell? (Type ENTER on empty item to return)"); foreach (var It in this.H.Bag.Inventory) { Console.WriteLine("> {0} ({1}) - Selling price: {2}", StringModify.FirstToUpper(It.Name), StringModify.FirstToUpper(It.Type), It.Value / 2); } Name = Console.ReadLine(); Name = Name.ToLower(); if (Name.Equals("")) { Console.Clear(); return; } Item Item = this.Find(this.H, Name); Console.Clear(); if (Item == null) { Console.WriteLine("Item not found\n"); } else { H.DropItem(Item); H.Gold += (Item.Value / 2); Console.WriteLine("{0} sold\n", StringModify.FirstToUpper(Item.Name)); } } }
public static void Show(Hero H) { Console.WriteLine("Name: {0}\tRace: {1}", H.Name, StringModify.FirstToUpper(H.Race)); Console.WriteLine("HP: {0}\t\tMP: {1}", H.HP, H.MP); Console.WriteLine("\nStrength: {0}\tFirepower: {1}", H.Strength, H.Firepower); Console.WriteLine("Resistance: {0}\tArmor: {1}", H.Resistance, H.Armor); Console.WriteLine("Ability: {0}", H.Ability); Console.WriteLine("\nEXP: {0}", H.Exp); Console.WriteLine("Level: {0}", H.Level); Console.WriteLine("Gold: {0}", H.Gold); Console.WriteLine("Items:"); foreach (var item in H.Bag.Inventory) { Console.WriteLine("> {0}", StringModify.FirstToUpper(item.Name)); } Console.WriteLine("\nEquipment:"); Console.WriteLine("> Weapon: {0}", (H.Equip.Weapon != null ? StringModify.FirstToUpper(H.Equip.Weapon.Name) : "")); Console.WriteLine("> Head: {0}", (H.Equip.Head != null ? StringModify.FirstToUpper(H.Equip.Head.Name) : "")); Console.WriteLine("> Torso: {0}", (H.Equip.Torso != null ? StringModify.FirstToUpper(H.Equip.Torso.Name) : "")); Console.WriteLine("> Hand: {0}", (H.Equip.Hand != null ? StringModify.FirstToUpper(H.Equip.Hand.Name) : "")); Console.WriteLine("> Leg: {0}", (H.Equip.Leg != null ? StringModify.FirstToUpper(H.Equip.Leg.Name) : "")); }
private static void Equip(Hero H) { string Name; while (true) { Console.WriteLine("What item do you want to equip? (Type ENTER with empty name to return)"); foreach (var Item in H.Bag.Inventory) { Console.WriteLine("> {0} ({1})", StringModify.FirstToUpper(Item.Name), StringModify.FirstToUpper(Item.Type)); } Name = Console.ReadLine(); Name = Name.ToLower(); if (Name.Equals("")) { Console.Clear(); return; } Item It = InventoryController.Find(H, Name); Console.Clear(); if (It == null) { Console.WriteLine("Item not found\n"); } else { H.EquipFromBag(It.Name); Console.WriteLine("{0} equipped\n", StringModify.FirstToUpper(It.Name)); } } }
private void BuyArmor(List <Item> Armor) { string ArmorName; int Index = new int(); Console.Clear(); while (true) { Console.WriteLine("Which armor do you want to buy? (Type ENTER on empty armor to return)"); Console.WriteLine("Current gold: {0}\n", this.H.Gold); Console.Write("> {0} - Buying price: {1}\t", StringModify.FirstToUpper(Armor[0].Name), Armor[0].Type, Armor[0].Value); Console.Write("> {0} - Buying price: {1}\n", StringModify.FirstToUpper(Armor[1].Name), Armor[1].Value); for (int i = 2; i < Armor.Count; i += 2) { Console.Write("> {0} - Buying price: {1}\t\t", StringModify.FirstToUpper(Armor[i].Name), Armor[i].Value); Console.Write("> {0} - Buying price: {1}\n", StringModify.FirstToUpper(Armor[i + 1].Name), Armor[i + 1].Value); } ArmorName = Console.ReadLine(); ArmorName = ArmorName.ToLower(); if (ArmorName.Equals("")) { Console.Clear(); return; } Index = this.Find(Armor, ArmorName); Console.Clear(); if (Index < 0) { Console.WriteLine("Weapon not found\n"); } else { Item It = new Item(Armor[Index]); if (this.H.Gold < It.Value) { Console.WriteLine("Not enough gold\n"); } else { this.H.Gold -= It.Value; this.H.PickItem(It); Console.WriteLine("{0} bought\n", StringModify.FirstToUpper(It.Name)); } } } }
private static void Unequip(Hero H) { string Part; bool IsPart = false; while (true) { IsPart = false; Console.WriteLine("What part do you want to unequip? (Type ENTER on empty part to return)"); Console.WriteLine("> Head ({0})", H.Equip.Head != null ? StringModify.FirstToUpper(H.Equip.Head.Name) : "Empty"); Console.WriteLine("> Torso ({0})", H.Equip.Torso != null ? StringModify.FirstToUpper(H.Equip.Torso.Name) : "Empty"); Console.WriteLine("> Hand ({0})", H.Equip.Hand != null ? StringModify.FirstToUpper(H.Equip.Hand.Name) : "Empty"); Console.WriteLine("> Leg ({0})", H.Equip.Leg != null ? StringModify.FirstToUpper(H.Equip.Leg.Name) : "Empty"); Console.WriteLine("> Weapon ({0})", H.Weapon != null ? StringModify.FirstToUpper(H.Weapon.Name) : "Empty"); Part = Console.ReadLine(); Part = Part.ToLower(); if (Part.Equals("")) { Console.Clear(); return; } IsPart = InventoryController.IsPart(Part); Console.Clear(); if (!IsPart) { Console.WriteLine("Unknown part\n"); } else { if (InventoryController.PartIsNull(H, Part)) { Console.WriteLine("You do not have any item equipped there\n"); } else { H.RemoveEquip(Part); if (InventoryController.PartIsNull(H, Part)) { Console.WriteLine("{0} unequipped\n", StringModify.FirstToUpper(Part)); } else { Console.WriteLine("Error! Could not unequip {0}\n", Part); } } } } }
private void BuyRanged(List <Item> Ranged) { string Weapon; int Index = new int(); while (true) { Console.WriteLine("Which weapon do you want to buy? (Type ENTER on empty weapon to return)"); Console.WriteLine("Current gold: {0}\n", this.H.Gold); foreach (var weapon in Ranged) { Console.WriteLine("> {0} - Buying price: {2}", StringModify.FirstToUpper(weapon.Name), weapon.Type, weapon.Value); } Weapon = Console.ReadLine(); Weapon = Weapon.ToLower(); if (Weapon.Equals("")) { Console.Clear(); return; } Index = this.Find(Ranged, Weapon); Console.Clear(); if (Index < 0) { Console.WriteLine("Weapon not found\n"); } else { Item It = new Item(Ranged[Index]); if (this.H.Gold < It.Value) { Console.WriteLine("Not enough gold\n"); } else { this.H.Gold -= It.Value; this.H.PickItem(It); Console.WriteLine("{0} bought\n", StringModify.FirstToUpper(It.Name)); } } } }
/* Create an item file and save it on Inventory folder */ public static void Make(string name, string type, string category, int buff, int value) { string DirPath = "./GameData/Inventory/" + StringModify.FirstToUpper(category) + "/"; Directory.CreateDirectory(DirPath); string[] Tokens = name.Split(' '); string FileName = ""; /* Generating filename string */ FileName = String.Join("", Tokens); FileName = String.Join("", DirPath, FileName, ".itm"); FileStream Stream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write); DESCryptoServiceProvider Crypto = new DESCryptoServiceProvider(); /* This key is used only to avoid simple file editing on the enemies stats */ Crypto.Key = ASCIIEncoding.ASCII.GetBytes("THEITEMS"); Crypto.IV = ASCIIEncoding.ASCII.GetBytes("THEITEMS"); CryptoStream CrStream = new CryptoStream(Stream, Crypto.CreateEncryptor(), CryptoStreamMode.Write); /* Concatenating item data with comma */ string Data = name + "," + type + "," + category + "," + buff + "," + value; byte[] EncodedData = ASCIIEncoding.ASCII.GetBytes(Data); /* Write file */ CrStream.Write(EncodedData, 0, EncodedData.Length); File.SetAttributes(FileName, FileAttributes.ReadOnly); CrStream.Close(); Stream.Close(); }
/* Load item based on its name and category */ public static Item Load(string item, string category) { /* Generate path to load item */ string FullPath = String.Join("", "./GameData/Inventory/", StringModify.FirstToUpper(category), "/", item, ".itm"); FileStream Stream = new FileStream(FullPath, FileMode.Open, FileAccess.Read); DESCryptoServiceProvider Crypto = new DESCryptoServiceProvider(); /* This key is used only to avoid simple file editing on the enemies stats */ Crypto.Key = ASCIIEncoding.ASCII.GetBytes("THEITEMS"); Crypto.IV = ASCIIEncoding.ASCII.GetBytes("THEITEMS"); CryptoStream CrStream = new CryptoStream(Stream, Crypto.CreateDecryptor(), CryptoStreamMode.Read); StreamReader Reader = new StreamReader(CrStream); /* Read file and split tokens */ string Data = Reader.ReadToEnd(); Reader.Close(); Stream.Close(); string[] Tokens = Data.Split(','); /* Create item with tokens */ int k = 0; string Name = Tokens[k++]; string Type = Tokens[k++]; string Category = Tokens[k++]; int Buff = Int32.Parse(Tokens[k++]); int Value = Int32.Parse(Tokens[k++]); Item I = new Item(Name, Type, Category, Buff, Value); return(I); }
private void ShowMonsters(List <string> Monsters) { Console.WriteLine("Which monster do you want to battle with? (Type ENTER on empty monster to return)\n"); Console.WriteLine("1. Random\t\t21. Ghost\t\t41. Phoenix"); for (int i = 2; i <= 16; i++) { Console.WriteLine("{0}. {3}\t{6}{1}. {4}\t{7}{2}. {5}", i, i + 20, i + 40, StringModify.FirstToUpper(Monsters[i - 2]), StringModify.FirstToUpper(Monsters[i + 18]), StringModify.FirstToUpper(Monsters[i + 38]), Monsters[i - 2].Length < 12 ? "\t" : "", Monsters[i + 18].Length < 12 ? "\t" : ""); } }