using System; using UnityEngine; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { [XLua.Hotfix] public class CrossServerWin : Window { [SerializeField] Button leftBtn; [SerializeField] Button rightBtn; [SerializeField] Button closeBtn; [SerializeField] FunctionButton arenaFunc; [SerializeField] FunctionButton bossFunc; [SerializeField] FunctionButtonGroup funcGroup; [SerializeField] Image headImg; [SerializeField] Text nameText; [SerializeField] Text lvText; [SerializeField] Text rankText; [SerializeField] Text curScoreText; [SerializeField] Text honorText; [SerializeField] Slider scoreSlider; [SerializeField] Text scorePerText; [SerializeField] GameObject danLvUpObj; [SerializeField] Button scoreRankBtn; [SerializeField] Button rankAwardBtn; [SerializeField] Button arenaBtn; [SerializeField] Button seasonAwardBtn; [SerializeField] Button honorStoreBtn; CrossServerRewardModel m_CrossServerRewardModel; CrossServerRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel()); } } CrossServerModel crossServerModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { closeBtn.AddListener(ClickClose); leftBtn.AddListener(ClickLeft); rightBtn.AddListener(ClickRight); arenaFunc.AddListener(ClickArenaFunc); bossFunc.AddListener(ClickBossFunc); scoreRankBtn.AddListener(ClickScoreRank); rankAwardBtn.AddListener(ClickRankAward); arenaBtn.AddListener(ClickArena); seasonAwardBtn.AddListener(ClickSeasonAward); honorStoreBtn.AddListener(ClickHonorStore); } protected override void OnPreOpen() { SetDisplay(); } protected override void OnActived() { base.OnActived(); funcGroup.TriggerByOrder(functionOrder); } protected override void OnAfterOpen() { } protected override void OnPreClose() { WindowCenter.Instance.Open(); } protected override void OnAfterClose() { } #endregion private void SetDisplay() { var playerData = PlayerDatas.Instance.baseData; headImg.SetSprite(GeneralDefine.GetOtherJobHeadPortrait(playerData.Job, 0)); nameText.text = playerData.PlayerName; lvText.text = StringUtility.Contact("Lv.", playerData.LV); scoreSlider.minValue = 0; scoreSlider.maxValue = 1; UpdateScore(); var arenaConfig = Config.Instance.Get(crossServerModel.pkResultInfo.DanLV); rankText.text = arenaConfig.Name; } private void UpdateScore() { curScoreText.text = crossServerModel.pkResultInfo.CurScore.ToString(); int maxScore = 0; bool isMaxRank = crossServerModel.TryGetMaxRank(out maxScore); danLvUpObj.SetActive(!isMaxRank); if (!isMaxRank) { scorePerText.text = StringUtility.Contact(crossServerModel.pkResultInfo.CurScore, "/", maxScore); scoreSlider.value = (float)crossServerModel.pkResultInfo.CurScore / maxScore; } } #region 点击事件 private void ClickBossFunc() { CloseSubWindows(); } private void ClickArenaFunc() { CloseSubWindows(); } private void ClickRight() { funcGroup.TriggerNext(); } private void ClickLeft() { funcGroup.TriggerLast(); } private void ClickHonorStore() { CloseSubWindows(); WindowCenter.Instance.Open(); } private void ClickSeasonAward() { CloseSubWindows(); WindowCenter.Instance.Open(); } private void ClickArena() { CloseSubWindows(); if (crossServerRewardModel.IsOpenMatch) { WindowCenter.Instance.Open(); } else { WindowCenter.Instance.Open(); } } private void ClickRankAward() { CloseSubWindows(); WindowCenter.Instance.Open(); } private void ClickScoreRank() { CloseSubWindows(); WindowCenter.Instance.Open(); } private void ClickClose() { CloseSubWindows(); CloseImmediately(); } private void CloseSubWindows() { //var children = WindowConfig.Get().FindChildWindows("CrossServerWin"); //foreach (var window in children) //{ // WindowCenter.Instance.Close(window); //} WindowCenter.Instance.CloseImmediately(); WindowCenter.Instance.CloseImmediately(); WindowCenter.Instance.CloseImmediately(); WindowCenter.Instance.CloseImmediately(); WindowCenter.Instance.CloseImmediately(); WindowCenter.Instance.CloseImmediately(); } #endregion } }