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); } } }