//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, November 07, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using TableConfig; using UnityEngine.UI; using Snxxz.UI; namespace Snxxz.UI { public class OpenHorseSkillClass { public int HorseID; public int HorseLv; } public class MountSkillWin : Window { private int PageNumber = 6; [SerializeField] FlipScroll _FlipScroll; [SerializeField] Button _LeftFlipBtn;//向右 [SerializeField] Button _RightFlipBtn;//向左 [SerializeField] Button _CloseButton;//关闭按钮 //-------------左侧 [SerializeField] Image _SkillImg;//技能图标 [SerializeField] Text _LevelNumber; [SerializeField] Text _skillName; [SerializeField] Text _Type; [SerializeField] GameObject _UnlockDescribeBG;//解锁面板 [SerializeField] Text _Impact1Txt;//效果内容 [SerializeField] GameObject _ImpactsTxt; [SerializeField] Text _Impact2Txt;//下级效果 [SerializeField] GameObject _LockedDescribeBG;//未解锁面板 [SerializeField] Text _Impact1TxtA;//效果内容 [SerializeField] Image _ConsumptionGoods;//消耗品图标 [SerializeField] Button _ConsumptionGoodButton;//消耗按钮 [SerializeField] Button _PromotionBtn;//技能学习按钮 [SerializeField] Text _StageTxt;//消耗品数量 [SerializeField] Text m_NowDeblockingSkill;//当前解锁的技能 private int FlagBit = 0;//默认点亮 private int SkillIDNow = 0;//获取当前技能TypeID private int Quantity = 0;//获取所需消耗品数量 private int HouseID = 0;//获取坐骑ID private Dictionary _MountSkillDic = new Dictionary();//存储坐骑技能信息 private Dictionary _GetMountSkills;//坐骑获得的技能(技能的Type值和技能等级) private List _MountList = new List();//坐骑技能列表 private Dictionary _dicHorse;//已拥有是我坐骑字典 PlayerMountDatas m_HorseModel; PlayerMountDatas horsemodel { get { return m_HorseModel ?? (m_HorseModel = ModelCenter.Instance.GetModel()); } } ItemTipsModel _itemTipsModel; ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel()); } } PlayerPackModel _playerPack; PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel()); } } #region Built-in protected override void BindController() { var allHorseKeys = Config.Instance.GetAllKeys(); var _horseUpModel = Config.Instance.GetAllValues(); foreach (var config in _horseUpModel) { if (config.SkillID[0] != 0) { for (int i = 0; i < config.SkillID.Length; i++) { if (!_MountSkillDic.ContainsKey(config.SkillID[i])) { if (allHorseKeys.Contains(config.HorseID.ToString())) { OpenHorseSkillClass _OpenHorseSkillClass = new OpenHorseSkillClass(); _OpenHorseSkillClass.HorseID = config.HorseID; _OpenHorseSkillClass.HorseLv = config.LV; _MountSkillDic.Add(config.SkillID[i], _OpenHorseSkillClass); } } } } } foreach (var key in _MountSkillDic.Keys) { _MountList.Add(key); } } protected override void AddListeners() { _LeftFlipBtn.AddListener(RightButton); _RightFlipBtn.AddListener(LeftButton); _CloseButton.AddListener(CloseButton); _ConsumptionGoodButton.AddListener(ConsumptionGoodButton); _PromotionBtn.AddListener(PromotionBtn); } protected override void OnPreOpen() { FlagBit = 0; // PlayerMountDatas.Event_MountSkillRefresh += MountSkillRefresh; _FlipScroll.OnRefreshData += OnRefreshActSkill; _FlipScroll.OnTweenCompt += OnTweenCompt; _dicHorse = horsemodel._DicHorse; //_GetMountSkills = horsemodel.GetMountSkills; _FlipScroll.pageCnt = AccessPages(); if (AccessPages() > 1) { _RightFlipBtn.gameObject.SetActive(false); _LeftFlipBtn.gameObject.SetActive(true); } else { _RightFlipBtn.gameObject.SetActive(false); _LeftFlipBtn.gameObject.SetActive(false); } _FlipScroll.RefreshActive(); GetNowDeblockingSkill(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { _FlipScroll.OnRefreshData -= OnRefreshActSkill; _FlipScroll.OnTweenCompt -= OnTweenCompt; // PlayerMountDatas.Event_MountSkillRefresh -= MountSkillRefresh; } protected override void OnAfterClose() { } #endregion void RightButton()//向右按钮 { _FlipScroll.FlipRight(); } void LeftButton()//向左按钮 { _FlipScroll.FlipLeft(); } void GetNowDeblockingSkill()//获取当前所学的技能 { int maxDeblockingCount = _MountSkillDic.Count; int nowDeblocking = 0; foreach (var value in _MountSkillDic.Values) { if (_dicHorse.ContainsKey(value.HorseID) && _dicHorse[value.HorseID].Lv >= value.HorseLv) { nowDeblocking += 1; } } m_NowDeblockingSkill.text = string.Format(Language.Get("Z1815"), nowDeblocking, maxDeblockingCount); } void ConsumptionGoodButton()//消耗品详情按钮 { DebugEx.LogError("获取消耗的品"); } void PromotionBtn()//技能学习安妞 { if (Quantity > 0 && _dicHorse.ContainsKey(_MountSkillDic[SkillIDNow].HorseID) && _dicHorse[(_MountSkillDic[SkillIDNow].HorseID)].Lv >= _MountSkillDic[SkillIDNow].HorseLv) { if (_GetMountSkills.ContainsKey(SkillIDNow) && _GetMountSkills[SkillIDNow] >= 3) { MessageWin.Inst.ShowFixedTip(Language.Get("Z1816")); return; } C0304_tagCAddSkillPoint _C0304 = new C0304_tagCAddSkillPoint(); _C0304.SkillID = (ushort)SkillIDNow; GameNetSystem.Instance.SendInfo(_C0304); } else { if (Quantity <= 0) { MessageWin.Inst.ShowFixedTip(Language.Get("Z1817")); } else if (Quantity > 0) { MessageWin.Inst.ShowFixedTip(Language.Get("Z1818")); } } } void CloseButton() { Close(); } int AccessPages()//获取页数 { int pages = Mathf.CeilToInt((float)_MountSkillDic.Count / PageNumber); return pages; } void OnRefreshActSkill(int page, RectTransform cell) { for (int i = 0; i < cell.childCount; i++) { int Index = page * 6 + i; MountSkill _MountSkill = cell.GetChild(i).GetComponent(); if (Index < _MountList.Count) { _MountSkill.SkillObj.SetActive(true); MountSkillRedPoint(_MountSkill, _MountList[Index]); UnunlockedState(_MountSkill, _MountList[Index]); if (_dicHorse.ContainsKey(_MountSkillDic[(_MountList[Index])].HorseID) && _dicHorse[_MountSkillDic[(_MountList[Index])].HorseID].Lv >= _MountSkillDic[_MountList[Index]].HorseLv) { if (_GetMountSkills.ContainsKey(_MountList[Index]))//解锁 { _MountSkill.Lock.SetActive(false); // _MountSkill.MountNameTxt1.text = ConfigManager.Instance.GetTemplate(_MountSkillDic[(_MountList[Index])].HorseID).Name; _MountSkill.SkillTex.material = MaterialUtility.GetUIDefaultGraphicMaterial();//亮 } else//未解锁 { // _MountSkill.MountNameTxt1.text = ConfigManager.Instance.GetTemplate(_MountSkillDic[(_MountList[Index])].HorseID).Name; _MountSkill.Lock.SetActive(false); } } _MountSkill.SkillButton.RemoveAllListeners(); _MountSkill.SkillButton.AddListener(() => { //if (!_MountSkill.Select.activeSelf) //{ // SkillIDNow = _MountList[Index]; // FlagBit = Index; // _FlipScroll.RefreshActive(); //} }); if (Index == FlagBit) { Consumables(_MountList[Index]); if (_dicHorse.ContainsKey(_MountSkillDic[(_MountList[Index])].HorseID)) HouseID = _MountSkillDic[(_MountList[Index])].HorseID; else HouseID = 0; SkillIDNow = _MountList[Index]; // _MountSkill.Select.SetActive(true); if (_GetMountSkills.ContainsKey(_MountList[Index])) SkillsToUnlock(_MountList[Index]);//获得解锁技能 else UnlockingPanel(_MountList[Index]);//未获得的技能 } else { // _MountSkill.Select.SetActive(false); } } else { _MountSkill.SkillObj.SetActive(false); } } } void OnTweenCompt() { if (_FlipScroll.Page == 0) { _RightFlipBtn.gameObject.SetActive(false); _LeftFlipBtn.gameObject.SetActive(true); } else if (_FlipScroll.Page + 1 >= AccessPages()) { _RightFlipBtn.gameObject.SetActive(true); _LeftFlipBtn.gameObject.SetActive(false); } else { _RightFlipBtn.gameObject.SetActive(true); _LeftFlipBtn.gameObject.SetActive(true); } } void UnunlockedState(MountSkill _mountSkill, int SkillID)// { var skillconfig = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1); string _skillIcon = skillconfig.IconName; _mountSkill.SkillTex.SetSprite(_skillIcon); _mountSkill.SkillTex.material = MaterialUtility.GetDefaultSpriteGrayMaterial();//灰 _mountSkill.Lock.SetActive(true); _mountSkill.SkillNameTxt.text = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).SkillName; // _mountSkill.MountNameTxt1.text = "" + ConfigManager.Instance.GetTemplate(_MountSkillDic[SkillID].HorseID).Name + ""; } void Consumables(int SkillID) { int ItemID = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).ExAttr4; ItemConfig _Item = Config.Instance.Get(ItemID); _ConsumptionGoods.SetSprite(_Item.IconKey); _ConsumptionGoodButton.RemoveAllListeners(); _ConsumptionGoodButton.AddListener(() => { ItemAttrData attrData = new ItemAttrData(_Item.ID); itemTipsModel.SetItemTipsModel(attrData); }); int Number = playerPack.GetItemCountByID(PackType.rptItem, ItemID); Quantity = Number;//获取所需消耗品数量 if (Number != 0) { string StrNum = Number.ToString() + "/" + SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).ExAttr5; _StageTxt.text = UIHelper.GetTextColorByItemColor(0, StrNum); } else { string StrNum = " " + Number.ToString() + "" + UIHelper.GetTextColorByItemColor(0, "/" + (SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).ExAttr5).ToString()); _StageTxt.text = StrNum; } } void UnlockingPanel(int SkillID)//未解锁面板 { string _skillIcon = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).IconName; _SkillImg.SetSprite(_skillIcon); _skillName.text = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).SkillName; _UnlockDescribeBG.SetActive(false); _LockedDescribeBG.SetActive(true); _Impact1TxtA.text = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).Description; _LevelNumber.text = "0/3"; } void SkillsToUnlock(int SkillID)//获得技能解锁技能 { string _skillIcon = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).IconName; _SkillImg.SetSprite(_skillIcon); _skillName.text = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).SkillName; _UnlockDescribeBG.SetActive(true); _LockedDescribeBG.SetActive(false); int SkillLV = _GetMountSkills[SkillID];//获取技能等级 if (SkillLV >= 3) { _Impact1Txt.text = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 3).Description; _ImpactsTxt.SetActive(false); } else { _ImpactsTxt.SetActive(true); _Impact1Txt.text = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, SkillLV).Description; _Impact2Txt.text = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, SkillLV + 1).Description; } _LevelNumber.text = SkillLV.ToString() + "/3"; } void MountSkillRefresh()//技能解锁刷新 { //_GetMountSkills = horsemodel.GetMountSkills; //_FlipScroll.RefreshActive(); } private void MountSkillRedPoint(MountSkill mountSkill, int MountSkillId) { //if (horsemodel.MountSkillRedPoint.ContainsKey(MountSkillId)) //{ // mountSkill.transform.Find("RedPoint").GetComponent().redpointId = horsemodel.MountSkillRedPoint[MountSkillId].id; //} } } }