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;
}
}