using System.Collections; using System.Collections.Generic; using UnityEngine; namespace vnxbqy.UI { public class EquipSet { public readonly int level; public readonly int realm; public bool unLocked { get { return PlayerDatas.Instance.baseData.realmLevel >= realm; } } public readonly LogicBool selected = new LogicBool(); public int fightPower { get { return EquipFightPower.Instance.CalculatePower(level); } } public readonly Redpoint redpoint; private Redpoint SuiteBtnRedpoint; Dictionary equipSlots = new Dictionary(); public Dictionary suitRepoints = new Dictionary(); PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } public EquipSet(int level, int realm) { this.level = level; this.realm = realm; for (var i = 1; i <= 12; i++) { equipSlots[i] = new EquipSlot(new Int2(this.level, i)); } redpoint = new Redpoint(MainRedDot.RedPoint_BagFuncKey, 200100 + this.level); SuiteBtnRedpoint = new Redpoint(200100 + this.level, 6560 + this.level); //装备界面的 套装按钮 foreach (var star in EquipStarModel.StarList) { suitRepoints[star] = new Redpoint(6560 + this.level, (200100 + this.level) * 100 + star); } } public void UpdateEquipSlot(int place, string equipGuid) { if (equipSlots.ContainsKey(place)) { equipSlots[place].equip.value = equipGuid; } } public bool IsSlotUnLocked(int place) { if (!equipSlots.ContainsKey(place)) { return false; } return equipSlots[place].unLocked; } public int GetSlotUnLockRealmLevel(int place) { if (!equipSlots.ContainsKey(place)) { return 0; } return equipSlots[place].GetUnLockRealmLevel(); } public EquipSlot GetEquipSlot(int place) { if (!equipSlots.ContainsKey(place)) { return null; } return equipSlots[place]; } public string GetEquip(int place) { if (!equipSlots.ContainsKey(place)) { return null; } return equipSlots[place].equip.value; } public EquipAppearance GetAppearance() { var appearance = new EquipAppearance(); appearance.job = PlayerDatas.Instance.baseData.Job; var clothes = equipSlots[(int)RoleEquipType.Clothes].equip.value; if (string.IsNullOrEmpty(clothes)) { appearance.clothes = 0; } else { var equip = packModel.GetItemByGuid(clothes); appearance.clothes = equip == null ? 0 : equip.itemId; } var weapon = equipSlots[(int)RoleEquipType.Weapon].equip.value; if (string.IsNullOrEmpty(weapon)) { appearance.weapon = 0; } else { var equip = packModel.GetItemByGuid(weapon); appearance.weapon = equip == null ? 0 : equip.itemId; } var secondary = equipSlots[(int)RoleEquipType.Weapon2].equip.value; if (string.IsNullOrEmpty(secondary)) { appearance.secondary = 0; } else { var equip = packModel.GetItemByGuid(secondary); appearance.secondary = equip == null ? 0 : equip.itemId; } return appearance; } public int CompareToCurrent(string equipGuid) { var item = packModel.GetItemByGuid(equipGuid); if (item == null) { return 0; } var place = item.config.EquipPlace; if (!equipSlots.ContainsKey(place)) { return 0; } var slot = equipSlots[place]; var currentEquip = packModel.GetItemByGuid(slot.equip.value); if (currentEquip == null) { return 1; } return item.score.CompareTo(currentEquip.score); } public static Int2 ServerPlaceToClientPlace(int serverPlace) { var config = EquipPlaceMapConfig.Get(serverPlace); if (config != null) { return new Int2(config.LV, config.EquipPlace); } else { return Int2.zero; } } public static int ClientPlaceToServerPlace(Int2 equipPosition) { return EquipPlaceMapConfig.GetServerPlace(equipPosition.x, equipPosition.y); } } public struct EquipAppearance { public int job; public int clothes; public int weapon; public int secondary; public int wings; public int mount; public int guard1; public int fashionClothes; public int fashionWeapon; public int fashionSecondary; public bool isSuit; } }