using System.Collections;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
/// <summary>
|
/// 坐骑
|
/// </summary>
|
public class HorseWin : UIBase
|
{
|
[SerializeField] Image modelImg;
|
[SerializeField] UIEffectPlayer lvUPEffect;
|
[SerializeField] Text nameText;
|
[SerializeField] Text specialAttrText;
|
[SerializeField] Button skinBtn;
|
[SerializeField] Text[] attrNameTexts;
|
[SerializeField] Text[] attrValueTexts;
|
[SerializeField] Text[] nextAttrValueTexts;
|
[SerializeField] Text lvText;
|
[SerializeField] Image processImg;
|
[SerializeField] Text processText;
|
[SerializeField] Transform fullRect;
|
[SerializeField] Text costText;
|
[SerializeField] Image costItemImg;
|
[SerializeField] LongPressButton lvupBtn; //升级/升阶按钮
|
[SerializeField] Toggle quickUpToggle;
|
[SerializeField] Text needUPText;
|
[SerializeField] Button rankUpBtn;
|
|
|
|
int beforeLV;
|
|
protected override void InitComponent()
|
{
|
skinBtn.AddListener(()=>{ UIManager.Instance.OpenWindow<HorseSkinWin>();});
|
lvupBtn.AddListener(HorseUpgrade);
|
lvupBtn.onPress.AddListener(HorseUpgrade);
|
quickUpToggle.onValueChanged.AddListener((bool value)=>{ OnToggle(value);});
|
rankUpBtn.AddListener(HorseRankUpgrade);
|
}
|
|
protected override void OnPreOpen()
|
{
|
beforeLV = HorseManager.Instance.horseLV;
|
//默认勾选
|
quickUpToggle.isOn = !LocalSave.GetBool("HorseQuickUp" + PlayerDatas.Instance.baseData.PlayerID);
|
HorseManager.Instance.OnHorseUpdateEvent += OnHorseUpdateEvent;
|
Display();
|
}
|
|
protected override void OnPreClose()
|
{
|
HorseManager.Instance.OnHorseUpdateEvent -= OnHorseUpdateEvent;
|
}
|
|
void OnHorseUpdateEvent()
|
{
|
if (beforeLV != HorseManager.Instance.horseLV)
|
{
|
beforeLV = HorseManager.Instance.horseLV;
|
lvUPEffect.Play();
|
}
|
Display();
|
}
|
//升级
|
private void HorseUpgrade()
|
{
|
bool isQuick = false;
|
if (HorseManager.Instance.classLV >= HorseManager.Instance.quickRankLV && quickUpToggle.isOn)
|
{
|
isQuick = true;
|
}
|
|
if (!ItemLogicUtility.CheckItemCount(PackType.Item, HorseManager.Instance.lvUPItemID, 1, 2))
|
{
|
return;
|
}
|
|
var pack = new CB201_tagCSHorseLVUP();
|
pack.IsQuick = (byte)(isQuick ? 1 : 0);
|
GameNetSystem.Instance.SendInfo(pack);
|
}
|
|
|
//升阶
|
private void HorseRankUpgrade()
|
{
|
// var config = HorseClassConfig.Get(HorseManager.Instance.classLV);
|
// if (!ItemLogicUtility.CheckItemCount(PackType.Item, HorseManager.Instance.rankUPItemID, config.ClassUPItemCnt, 2))
|
// {
|
// return;
|
// }
|
// var pack = new CB202_tagCSHorseClassUP();
|
// GameNetSystem.Instance.SendInfo(pack);
|
UIManager.Instance.OpenWindow<HorseRankUPWin>();
|
}
|
|
void Display()
|
{
|
var skinConfig = HorseSkinConfig.Get(HorseManager.Instance.GetHorseSkinID());
|
modelImg.SetOrgSprite(skinConfig.Icon, "Horse");
|
nameText.text = skinConfig.Name;
|
specialAttrText.text = GetSpecialAttr();
|
|
var config = HorseClassConfig.Get(HorseManager.Instance.classLV);
|
lvText.text = Language.Get("Horse8",HorseManager.Instance.classLV, HorseManager.Instance.horseLV);
|
processImg.fillAmount = HorseManager.Instance.exp / (float)config.LVUPItemCnt;
|
processText.text = HorseManager.Instance.exp + "/" + config.LVUPItemCnt;
|
|
needUPText.text = Language.Get("Horse7", config.MaxLV - HorseManager.Instance.horseLV);
|
var state = HorseManager.Instance.GetHorseState();
|
if (state == 0)
|
{
|
fullRect.SetActive(false);
|
costText.SetActive(true);
|
int useCnt = 1;
|
if (HorseManager.Instance.classLV >= HorseManager.Instance.quickRankLV && quickUpToggle.isOn)
|
{
|
useCnt = config.LVUPItemCnt - HorseManager.Instance.exp;
|
}
|
costText.text = UIHelper.ShowUseItem(PackType.Item, HorseManager.Instance.lvUPItemID, useCnt);
|
costItemImg.SetItemSprite(HorseManager.Instance.lvUPItemID);
|
lvupBtn.SetActive(true);
|
quickUpToggle.SetActive(HorseManager.Instance.classLV >= HorseManager.Instance.quickRankLV);
|
rankUpBtn.SetActive(false);
|
|
processImg.fillAmount = HorseManager.Instance.exp / (float)config.LVUPItemCnt;
|
processText.text = HorseManager.Instance.exp + "/" + config.LVUPItemCnt;
|
}
|
else if (state == 1)
|
{
|
fullRect.SetActive(false);
|
lvupBtn.SetActive(false);
|
rankUpBtn.SetActive(true);
|
costText.SetActive(true);
|
costText.text = UIHelper.ShowUseItem(PackType.Item, HorseManager.Instance.rankUPItemID, config.ClassUPItemCnt);
|
costItemImg.SetItemSprite(HorseManager.Instance.rankUPItemID);
|
quickUpToggle.SetActive(false);
|
processImg.fillAmount = 1;
|
processText.text = "";
|
}
|
else
|
{
|
fullRect.SetActive(true);
|
lvupBtn.SetActive(false);
|
rankUpBtn.SetActive(false);
|
costText.SetActive(false);
|
quickUpToggle.SetActive(false);
|
processImg.fillAmount = 1;
|
processText.text = "";
|
}
|
|
|
var keys = HorseManager.Instance.attrDic.Keys.ToList();
|
keys.Sort();
|
//满级 和下级属性
|
var nextConfig = HorseClassConfig.Get(HorseManager.Instance.classLV + 1);
|
var nextAttr = state == 1 ? nextConfig.ClassAttrValueList : (state == 0 ? config.PerLVAttrValueList : new int[config.AttrIDList.Length]);
|
for (int i = 0; i < attrNameTexts.Length; i++)
|
{
|
if (i < keys.Count)
|
{
|
attrNameTexts[i].text = PlayerPropertyConfig.Get(keys[i]).Name;
|
attrValueTexts[i].text = PlayerPropertyConfig.GetValueDescription(keys[i], HorseManager.Instance.attrDic[keys[i]]);
|
nextAttrValueTexts[i].text = PlayerPropertyConfig.GetValueDescription(keys[i], nextAttr[i]);
|
}
|
}
|
}
|
|
string GetSpecialAttr()
|
{
|
List<string> attrList = new List<string>();
|
foreach(var attrID in HorseManager.Instance.specialAttrDic.Keys)
|
{
|
attrList.Add(UIHelper.AppendColor(TextColType.itemchuanqi, PlayerPropertyConfig.GetFullDescription(attrID, HorseManager.Instance.specialAttrDic[attrID])));
|
}
|
return Language.Get("L1100", Language.Get("herocard55"), string.Join(Language.Get("L1112"), attrList));
|
}
|
|
void OnToggle(bool value)
|
{
|
LocalSave.SetBool("HorseQuickUp" + PlayerDatas.Instance.baseData.PlayerID, !quickUpToggle.isOn);
|
var config = HorseClassConfig.Get(HorseManager.Instance.classLV);
|
var state = HorseManager.Instance.GetHorseState();
|
if (state == 0)
|
{
|
int useCnt = 1;
|
if (HorseManager.Instance.classLV >= HorseManager.Instance.quickRankLV && quickUpToggle.isOn)
|
{
|
useCnt = config.LVUPItemCnt - HorseManager.Instance.exp;
|
}
|
costText.text = UIHelper.ShowUseItem(PackType.Item, HorseManager.Instance.lvUPItemID, useCnt);
|
}
|
|
|
}
|
}
|