using System.Collections; using System.Collections.Generic; using UnityEngine; using TableConfig; using UnityEngine.UI; using Snxxz.UI; using System; //翅膀弹框 namespace Snxxz.UI { public class WingsBouncedWin : Window { [SerializeField] ScrollerController m_ScrollerController; [SerializeField] Button _CloseButton; private Dictionary WingDic = new Dictionary();//从背包获取相同职业的翅膀(1背包位置索引,2翅膀信息) List refineAttrConfigs; PlayerPackModel _playerPack; PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel()); } } PackModelInterface _modelInterface; PackModelInterface modelInterface { get { return _modelInterface ?? (_modelInterface = ModelCenter.Instance.GetModel()); } } private int _Job;//得到职业 private int _ReincarnationLv;//得到转生等级 protected override void BindController() { refineAttrConfigs = Config.Instance.GetAllValues(); } protected override void AddListeners() { _CloseButton.AddListener(OnClickCloseBtn); } protected override void OnPreOpen() { m_ScrollerController.OnRefreshCell += OnRefreshGridCell; playerPack.ItemCntAddAct += OnEquipRefreshEvent;//角色装备刷新 _Job = PlayerDatas.Instance.baseData.Job;//得到职业信息 _ReincarnationLv = (int)PlayerDatas.Instance.baseData.ExAttr1;//得到转生等级 WingType(); OnCreateGridLineCell(m_ScrollerController); } protected override void OnAfterOpen() { } void OnClickCloseBtn() { Close(); } protected override void OnPreClose() { playerPack.ItemCntAddAct -= OnEquipRefreshEvent;//角色装备刷新 m_ScrollerController.OnRefreshCell -= OnRefreshGridCell; } private void OnEquipRefreshEvent(PackType arg1, int arg2, int arg3) { if (PackType.rptEquip == arg1) { ItemModel itemModel = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retWing); if (itemModel != null) { Close(); } } } void OnCreateGridLineCell(ScrollerController gridCtrl)//预制体创建 { gridCtrl.Refresh(); foreach (int key in WingDic.Keys) { gridCtrl.AddCell(ScrollerDataType.Header, key); } gridCtrl.Restart(); } private void OnRefreshGridCell(ScrollerDataType type, CellView cell) { int Index = cell.index; WingButton _WingButton = cell.GetComponent(); ItemConfig tagItem = Config.Instance.Get((int)WingDic[Index].itemInfo.ItemID); ItemModel model = playerPack.GetItemModelByIndex(PackType.rptItem, Index); int color = modelInterface.GetItemQuality(model.itemInfo.ItemID, model.useDataDict); _WingButton.IconBG.SetItemBackGround(color); _WingButton.Icon.SetSprite(tagItem.IconKey); _WingButton.WingsText.text = UIHelper.GetTextColorByItemColor((TextColType)color, tagItem.ItemName, true); int _currentRefining = 0;//当前精炼度 if (WingDic[Index].GetUseDataModel(42) != null) _currentRefining = WingDic[Index].GetUseDataModel(42)[0]; foreach (var config in refineAttrConfigs) { if (tagItem.LV == config.wingsPhase) { int _currentRefiningAll = config.EXPupper;//总精炼度 if (_currentRefining >= _currentRefiningAll) _currentRefining = _currentRefiningAll; string NumberText = Mathf.CeilToInt(((float)_currentRefining / _currentRefiningAll) * 100).ToString() + "%"; _WingButton.RefLvText.text = NumberText; } } _WingButton.WingBG.RemoveAllListeners(); _WingButton.WingBG.AddListener(() => { PackSendQuestMgr.Instance.SendPutOnQuest(ItemWinBtnType.putIn, model.itemInfo.ItemGUID); //string strJob = tagItem.JobLimit.ToString(); //if (_ReincarnationLv >= int.Parse(strJob.Substring(strJob.Length - 1, 1))) //{ // C0703_tagCEquipItem _tagC0703 = new C0703_tagCEquipItem(); // _tagC0703.RoleEquipType = (int)RoleEquipType.retWing; // _tagC0703.ItemIndex = (byte)Index; // GameNetSystem.Instance.SendInfo(_tagC0703); // Close(); //} //else //{ // MessageWin.Inst.ShowFixedTip(Language.Get("Z1019"));//"翅膀未达到穿戴条件" //} }); } protected override void OnAfterClose() { } void WingType() { SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem); if (singlePack == null) { return; } WingDic.Clear(); Dictionary backpack_dic = singlePack.GetPackModelIndexDict(); if (backpack_dic.Count == 0)//得到背包的所有物品 { return; } foreach (int index in backpack_dic.Keys) { int _id = (int)backpack_dic[index].itemInfo.ItemID; var WingItem = Config.Instance.Get(_id); if (!ItemConfig.tag_Wings.ContainsKey(_id) || WingItem == null) { continue; } if (ItemConfig.tag_Wings[_id].Type == 111 && int.Parse(ItemConfig.tag_Wings[_id].JobLimit.ToString().Substring(0, 1)) == _Job) { WingDic.Add(index, backpack_dic[index]); } } } } }