using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
///
/// 坐骑
///
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();});
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();
}
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);
for (int i = 0; i < attrNameTexts.Length; i++)
{
if (i < keys.Count)
{
attrNameTexts[i].text = PlayerPropertyConfig.Get(keys[i]).Name;
var curValue = HorseManager.Instance.attrDic[keys[i]];
attrValueTexts[i].text = PlayerPropertyConfig.GetValueDescription(keys[i], curValue, 2);
var addValue = 0;
if (state == 0)
{
addValue = config.PerLVAttrValueList[i];
}
else if (state == 1)
{
addValue = nextConfig.ClassAttrValueList[i] + nextConfig.PerLVAttrValueList[i];
}
nextAttrValueTexts[i].text = PlayerPropertyConfig.GetValueDescription(keys[i], curValue + addValue, 2);
}
}
}
string GetSpecialAttr()
{
if (HorseManager.Instance.specialAttrDic.Count == 0)
return "";
List attrList = new List();
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);
}
}
}