//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, November 20, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using System.Collections.Generic; using vnxbqy.UI; //翅膀精炼红点 namespace vnxbqy.UI { public class WingsRedDotModel : Model, IPlayerLoginOk, IBeforePlayerDataInitialize { private const int Redpoint_key = 10603; private int WingNumber = 0;//翅膀数量标记 private int Marking = 0; private bool IsOnePutOn = true; public bool IsBoolOpenWingeWin = false; PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } public override void Init() { } public void OnPlayerLoginOk() { packModel.itemCntAddEvent += ItemCntAddAct;//物品数量增加 packModel.itemCntReduceEvent += ItemCntReduceAct;//物品数量减少 FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChange; ItemModel itemModel = packModel.GetItemByIndex(PackType.Equip, SpiritWeaponModel.WING_EQUIPINDEX); if (IsOnePutOn) { WingsDot(); } if (itemModel != null) { IsOnePutOn = false; } } public void OnBeforePlayerDataInitialize() { packModel.itemCntAddEvent -= ItemCntAddAct;//物品数量增加 FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChange; packModel.itemCntReduceEvent -= ItemCntReduceAct;//物品数量减少 } public override void UnInit() { } private void OnFuncStateChange(int obj) { if (obj == 90) { WingsDot(); } } public class WingsInformation { public int WingsID; public int WingsCount; } private Dictionary _dicWings = new Dictionary(); private List WingRefineAttr = new List(); public void WingsDot() { ItemModel itemModel = packModel.GetItemByIndex(PackType.Equip, SpiritWeaponModel.WING_EQUIPINDEX); if (itemModel == null || !FuncOpen.Instance.IsFuncOpen(90)) { WingNumber = 0; Marking = 0; return; } var WingItemA = WingRefineExpConfig.Get(itemModel.itemId); if (WingItemA == null) { WingNumber = 0; Marking = 0; return; } SinglePack singlePackModel = packModel.GetSinglePack(PackType.Item); Dictionary backpack_dic = singlePackModel.GetAllItems(); List wingsRefinelist = itemModel.GetUseData((int)ItemUseDataKey.wingProgressValue); if (wingsRefinelist != null) { var config = WingRefineExpConfig.Get((int)itemModel.itemId); int WingsPhase = config.WingsPhase;//获取翅膀阶数 if (WingRefineAttr.Count <= 0) { WingRefineAttr = WingRefineAttrConfig.GetValues(); } //var WingRefineAttr = WingRefineAttrConfig.GetValues(); int Max = 0; foreach (var value in WingRefineAttr) { if (value.wingsPhase == WingsPhase) { Max = value.EXPupper;//最大精炼度 } } int Now = wingsRefinelist[0]; if (Now >= Max) { WingNumber = 0; Marking = 0; return; } } _dicWings.Clear(); foreach (int index in backpack_dic.Keys) { var item = backpack_dic[index]; var itemId = item.itemId; if (WingRefineExpConfig.Has(itemId) && ItemLogicUtility.Instance.IsWing(itemId)) { var _WingsInformation = new WingsInformation(); _WingsInformation.WingsID = itemId; _WingsInformation.WingsCount = item.count; _dicWings.Add(index, _WingsInformation); } } var config1 = WingRefineExpConfig.Get((int)itemModel.itemId); foreach (var key in _dicWings.Keys) { var wings = ItemConfig.Get(_dicWings[key].WingsID); if (wings.EndureReduceType != 0) { return; } var config2 = WingRefineExpConfig.Get(_dicWings[key].WingsID); if (config1.WingsPhase >= config2.WingsPhase) { WingNumber += packModel.GetItemCountByID(PackType.Item, _dicWings[key].WingsID); } } if (IsBoolOpenWingeWin) { return; } if (WingNumber > Marking && FuncOpen.Instance.IsFuncOpen(90)) { Marking = WingNumber; return; } else { Marking = WingNumber; } } private void ItemCntAddAct(PackType arg1, int ItemIndex, int ItemID)//物品数量增加 { if (arg1 == PackType.Item)//物品背包物品增加 { ItemBagAdd(ItemIndex, ItemID); } if (arg1 == PackType.Equip)//装备背包物品增加 { ItemModel itemModel = packModel.GetItemByIndex(PackType.Equip, SpiritWeaponModel.WING_EQUIPINDEX); if (IsOnePutOn) { WingsDot(); } if (itemModel != null) { IsOnePutOn = false; } } } private void ItemBagAdd(int ItemIndex, int ItemID)//物品背包数量添加 { ItemModel ItemModel = packModel.GetItemByIndex(PackType.Item, ItemIndex); int ItemCount = ItemModel.preItemCount; var WingItem = WingRefineExpConfig.Get(ItemModel.itemId); if (IsBoolOpenWingeWin || WingItem == null) { return; } if (_dicWings.ContainsKey(ItemIndex)) { if (ItemCount > _dicWings[ItemIndex].WingsCount) { _dicWings[ItemIndex].WingsCount = ItemCount; } else { _dicWings[ItemIndex].WingsCount = ItemCount; } } } private void ItemCntReduceAct(PackType arg1, int Index, int ItemID) { if (arg1 == PackType.Item)//物品背包物品减少 { var WingItem = WingRefineExpConfig.Get(ItemID); if (WingItem != null && _dicWings.ContainsKey(Index)) { _dicWings.Remove(Index); if (_dicWings.Count <= 0 ) { return; } } } if (arg1 == PackType.Equip)//装备脱下 { ItemModel itemModel = packModel.GetItemByIndex(PackType.Equip, SpiritWeaponModel.WING_EQUIPINDEX); if (itemModel == null ) { return; } } } } }