using System.Collections.Generic; using System.Linq; using UnityEngine; namespace Equip { public enum WeaponType { Gun, Auto, Shotgun, Rocket } public class EquipItem { public string Name; public string Icon; public string Rarity; public float AddHp; public float AddDamage; public float AddSpeed; public float DamageMult; public float AddCrit; public WeaponType WeaponType; } public enum EquipType { Weapon, Armor, Implant } public class EquipSettings { private static readonly List Weapons = new List { new EquipItem { Name = "Gun", DamageMult = 1, AddDamage = 5, AddSpeed = 1f, Icon = "ICN_Pistol_01", Rarity = "green", WeaponType = WeaponType.Gun }, new EquipItem { Name = "Auto", DamageMult = 1f, AddDamage = 10, AddSpeed = 1f, Icon = "ICN_AssaultRifle_01", Rarity = "blue", WeaponType = WeaponType.Auto }, new EquipItem { Name = "Shotgun", DamageMult = 1f, AddDamage = 40, AddSpeed = 1.5f, Icon = "ICN_Shotgun_01", Rarity = "blue", WeaponType = WeaponType.Shotgun }, new EquipItem { Name = "Bazooka", DamageMult = 1, AddDamage = 100, AddSpeed = 2.2f, Icon = "ICN_Bazooka_01", Rarity = "violet", WeaponType = WeaponType.Rocket } }; private static readonly List Armor = new List { new EquipItem { Name = "Leather", AddHp = 10f, Icon = "ICN_Armor_01", Rarity = "green" }, new EquipItem { Name = "Bulletproof", AddHp = 30f, Icon = "ICN_Armor_02", Rarity = "blue" }, new EquipItem { Name = "Exo", AddHp = 50f, Icon = "ICN_Armor_03", Rarity = "blue" }, new EquipItem { Name = "Tactical", AddHp = 100f, Icon = "ICN_Armor_04", Rarity = "violet" } }; private static readonly List Implant = new List { new EquipItem { Name = "Bull Heart", AddCrit = 0.05f, Icon = "ICN_Implant_01", Rarity = "green" }, new EquipItem { Name = "Hawk Eye", AddCrit = 0.1f, Icon = "ICN_Implant_02", Rarity = "blue" }, new EquipItem { Name = "Inner Fire", AddCrit = 0.2f, Icon = "ICN_Implant_03", Rarity = "blue" }, new EquipItem { Name = "Berserk", AddCrit = 0.4f, Icon = "ICN_Implant_04", Rarity = "violet" } }; public static List EquipedItems = new List { 0, 0, 0 }; private static Dictionary> UnlockedItems = new Dictionary> { { EquipType.Weapon, new List { 0 } }, { EquipType.Armor, new List { 0 } }, { EquipType.Implant, new List { 0 } } }; public static void Init() { InitEquipedItems(); InitUnlockedItems(); } private static void InitEquipedItems() { string equipedStr = GlobalsVar.gUser.GetFlagByName("equiped_items"); if (equipedStr != "") { string[] arr = equipedStr.Split('_'); if (arr.Length != 3) { CommonFunctions.myassert(false); return; } for (int i = 0; i < arr.Length; ++i) EquipedItems[i] = System.Convert.ToInt32(arr[i]); } } private static void InitUnlockedItems() { string weaponStr = GlobalsVar.gUser.GetFlagByName("unlocked_weapons"); if (weaponStr != "") { string[] weaponArr = weaponStr.Split('_'); List weapons = new List(); for (int i = 0; i < weaponArr.Length; ++i) weapons.Add(System.Convert.ToInt32(weaponArr[i])); UnlockedItems[EquipType.Weapon] = weapons; } string armorStr = GlobalsVar.gUser.GetFlagByName("unlocked_armor"); if (armorStr != "") { string[] armorArr = armorStr.Split('_'); List armors = new List(); for (int i = 0; i < armorArr.Length; ++i) armors.Add(System.Convert.ToInt32(armorArr[i])); UnlockedItems[EquipType.Armor] = armors; } string implantStr = GlobalsVar.gUser.GetFlagByName("unlocked_implant"); if (implantStr != "") { string[] implantArr = implantStr.Split('_'); List implants = new List(); for (int i = 0; i < implantArr.Length; ++i) implants.Add(System.Convert.ToInt32(implantArr[i])); UnlockedItems[EquipType.Implant] = implants; } } public static string GetEquipedItemsSerializedStr() { string serStr = ""; for (int i = 0; i < EquipedItems.Count; ++i) { serStr += EquipedItems[i]; if (i < EquipedItems.Count - 1) serStr += "_"; } return serStr; } public static string GetUnlockedItemsSerializedStr(EquipType type) { if (UnlockedItems.ContainsKey(type)) { string serStr = ""; for (int i = 0; i < UnlockedItems[type].Count; ++i) { serStr += UnlockedItems[type][i]; if (i < UnlockedItems[type].Count - 1) serStr += "_"; } return serStr; } else CommonFunctions.myassert(false); return ""; } public static EquipItem UnlockRandomItem() { var randomTypeRange = new List {0, 1, 2}; for (int i = 0; i < 3; i++) { var randomType = randomTypeRange[Random.Range(0, randomTypeRange.Count)]; var type = (EquipType) randomType; var collection = randomType == 0 ? Weapons : randomType == 1 ? Armor : Implant; if (collection.Count == UnlockedItems[type].Count) continue; var items = new List(); for (var a = 0; a < collection.Count; a++) items.Add(a); items = items.Except(UnlockedItems[type]).ToList(); var index = items[Random.Range(0, items.Count)]; UnlockedItems[type].Add(index); GlobalsVar.gUser.SaveUnlockedItems(); return collection[index]; } return null; } public static bool ItemUnlocked(int index, EquipType type) { return UnlockedItems[type].Contains(index); } public static List GetItemsByType(EquipType type) { return type == EquipType.Weapon ? Weapons : type == EquipType.Armor ? Armor : Implant; } public static List GetItems() { return new List { Weapons[EquipedItems[0]], Armor[EquipedItems[1]], Implant[EquipedItems[2]] }; } } }