using System; using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 装备栏 /// public class EquipmentColumn { /// 插槽字典 public Dictionary dictionary = new Dictionary(); /// 索引器 public EquipmentSlot this[string key] => dictionary[key]; public EquipmentColumn() { AddSlot(WeaponSlot()); AddSlot(DeputySlot()); AddSlot(ArmorSlot(EquipmentSlotType.上衣, ArmorType.上衣)); AddSlot(ArmorSlot(EquipmentSlotType.头盔, ArmorType.头盔)); AddSlot(ArmorSlot(EquipmentSlotType.手套, ArmorType.手套)); AddSlot(ArmorSlot(EquipmentSlotType.腰带, ArmorType.腰带)); AddSlot(ArmorSlot(EquipmentSlotType.鞋子, ArmorType.鞋子)); AddSlot(AccessorySlot(EquipmentSlotType.项链, AccessoryType.项链)); AddSlot(AccessorySlot(EquipmentSlotType.戒指1, AccessoryType.戒指)); AddSlot(AccessorySlot(EquipmentSlotType.戒指2, AccessoryType.戒指)); AddSlot(AccessorySlot(EquipmentSlotType.手镯1, AccessoryType.手镯)); AddSlot(AccessorySlot(EquipmentSlotType.手镯2, AccessoryType.手镯)); } public bool ContainsKey(string key) => dictionary.ContainsKey(key); /// 添加插槽 public void AddSlot(EquipmentSlot slot) => dictionary.Add(slot.name, slot); /// 武器插槽 public EquipmentSlot WeaponSlot() { return new EquipmentSlot(EquipmentSlotType.主手, VerifyWeapon); } /// 副手插槽 public EquipmentSlot DeputySlot() { return new EquipmentSlot(EquipmentSlotType.副手, VerifyDeputy); } /// 护甲插槽 public EquipmentSlot ArmorSlot(EquipmentSlotType type, ArmorType armor) { return new EquipmentSlot(type, (equipment) => VerifyCommon(equipment, armor.ToString())); } /// 饰品插槽 public EquipmentSlot AccessorySlot(EquipmentSlotType type, AccessoryType accessory) { return new EquipmentSlot(type, (equipment) => VerifyCommon(equipment, accessory.ToString())); } /// 通用校验 public static bool VerifyCommon(Equipment equipment, string type) { string[] types = equipment.type.Split("/"); if (types[0] == type) { return true; } return false; } /// 主手校验 public static bool VerifyWeapon(Equipment equipment) { string[] type = equipment.type.Split("/"); if (type[0] == WeaponType.单手.ToString()) { return true; } if (type[0] == WeaponType.双手.ToString()) { return true; } return false; } /// 副手校验 public static bool VerifyDeputy(Equipment equipment) { string[] type = equipment.type.Split("/"); if (type[0] == WeaponType.副手.ToString()) { return true; } return false; } }