//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, November 07, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
|
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<int, OpenHorseSkillClass> _MountSkillDic = new Dictionary<int, OpenHorseSkillClass>();//存储坐骑技能信息
|
private Dictionary<int, int> _GetMountSkills;//坐骑获得的技能(技能的Type值和技能等级)
|
private List<int> _MountList = new List<int>();//坐骑技能列表
|
private Dictionary<int, HorseClass> _dicHorse;//已拥有是我坐骑字典
|
MountModel m_HorseModel;
|
MountModel horsemodel { get { return m_HorseModel ?? (m_HorseModel = ModelCenter.Instance.GetModel<MountModel>()); } }
|
|
ItemTipsModel _itemTipsModel;
|
ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>()); } }
|
PackModel _playerPack;
|
PackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PackModel>()); } }
|
|
|
#region Built-in
|
protected override void BindController()
|
{
|
//-----------废弃的脚本无调用暂存
|
var allHorseKeys = HorseConfig.GetKeys();
|
var _horseUpModel = HorseUpConfig.GetValues();
|
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)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("Z1816"));
|
return;
|
}
|
C0304_tagCAddSkillPoint _C0304 = new C0304_tagCAddSkillPoint();
|
_C0304.SkillID = (ushort)SkillIDNow;
|
GameNetSystem.Instance.SendInfo(_C0304);
|
}
|
else
|
{
|
if (Quantity <= 0)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("Z1817"));
|
}
|
else if (Quantity > 0)
|
{
|
ServerTipDetails.DisplayNormalTip(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<MountSkill>();
|
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 = HorseConfig.Get(_MountSkillDic[(_MountList[Index])].HorseID).Name;
|
_MountSkill.SkillTex.material = MaterialUtility.GetUIDefaultGraphicMaterial();//亮
|
}
|
else//未解锁
|
{
|
// _MountSkill.MountNameTxt1.text = HorseConfig.Get(_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 config = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1);
|
string _skillIcon = config.IconName;
|
_mountSkill.SkillTex.SetSprite(_skillIcon);
|
_mountSkill.SkillTex.material = MaterialUtility.GetDefaultSpriteGrayMaterial();//灰
|
_mountSkill.Lock.SetActive(true);
|
_mountSkill.SkillNameTxt.text = config.SkillName;
|
}
|
|
void Consumables(int SkillID)
|
{
|
var config = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1);
|
int ItemID = config != null ? config.ExAttr4 : 0;
|
ItemConfig _Item = ItemConfig.Get(ItemID);
|
_ConsumptionGoods.SetSprite(_Item.IconKey);
|
_ConsumptionGoodButton.RemoveAllListeners();
|
_ConsumptionGoodButton.AddListener(() =>
|
{
|
ItemAttrData attrData = new ItemAttrData(_Item.ID);
|
itemTipsModel.SetItemTipsModel(attrData);
|
});
|
|
int Number = playerPack.GetItemCountByID(PackType.Item, ItemID);
|
Quantity = Number;//获取所需消耗品数量
|
if (Number != 0)
|
{
|
var StrNum = StringUtility.Contact(Number, "/", config != null ? config.ExAttr5 : 0);
|
_StageTxt.text = UIHelper.AppendStringColor(0, StrNum);
|
}
|
else
|
{
|
string StrNum = " <color=#ff2828>" + Number + "</color>" + UIHelper.AppendStringColor(0, "/" + (config != null ? config.ExAttr5 : 0));
|
_StageTxt.text = StrNum;
|
}
|
}
|
|
void UnlockingPanel(int SkillID)//未解锁面板
|
{
|
var config = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1);
|
if (config != null)
|
{
|
_SkillImg.SetSprite(config.IconName);
|
_skillName.text = config.SkillName;
|
_UnlockDescribeBG.SetActive(false);
|
_LockedDescribeBG.SetActive(true);
|
_Impact1TxtA.text = config.Description;
|
_LevelNumber.text = "0/3";
|
}
|
}
|
|
void SkillsToUnlock(int SkillID)//获得技能解锁技能
|
{
|
var configLevel1 = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1);
|
if (configLevel1 != null)
|
{
|
_SkillImg.SetSprite(configLevel1.IconName);
|
_skillName.text = configLevel1.SkillName;
|
}
|
|
_UnlockDescribeBG.SetActive(true);
|
_LockedDescribeBG.SetActive(false);
|
int SkillLV = _GetMountSkills[SkillID];//获取技能等级
|
|
if (SkillLV >= 3)
|
{
|
var configLevel3 = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 3);
|
_Impact1Txt.text = configLevel3 != null ? configLevel3.Description : "";
|
_ImpactsTxt.SetActive(false);
|
}
|
else
|
{
|
_ImpactsTxt.SetActive(true);
|
var configNow = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, SkillLV);
|
var configNext = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, SkillLV + 1);
|
_Impact1Txt.text = configNow != null ? configNow.Description : "";
|
_Impact2Txt.text = configNext != null ? configNext.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<RedpointBehaviour>().redpointId = horsemodel.MountSkillRedPoint[MountSkillId].id;
|
//}
|
|
}
|
}
|
|
}
|