using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class CrossServerOneVsOneWin : Window { [SerializeField] AvatarCell avatarCell; [SerializeField] Text nameText; [SerializeField] Text lvText; [SerializeField] Text rankText; [SerializeField] Text curScoreText; [SerializeField] Text honorText; [SerializeField] Image rankImg; [SerializeField] Slider scoreSlider; [SerializeField] Text scorePerText; [SerializeField] GameObject danLvUpObj; [SerializeField] Button rankAwardBtn; [SerializeField] GameObject rankAward_SelectImg; [SerializeField] Button arenaBtn; [SerializeField] GameObject arena_SelectImg; [SerializeField] Button seasonAwardBtn; [SerializeField] GameObject seasonAward_SelectImg; [SerializeField] Button honorStoreBtn; [SerializeField] GameObject honorStore_SelectImg; [SerializeField] Button lookDanLvBtn; public static int funcId = 0; CrossServerOneVsOnePlayerInfo playerInfo; CrossServerWin crossServerWin; CrossServerOneVsOneRewardModel m_CrossServerRewardModel; PhantasmPavilionModel phantasmPavilionModel { get { return ModelCenter.Instance.GetModel(); } } CrossServerOneVsOneRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel()); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { rankAwardBtn.AddListener(ClickRankAward); arenaBtn.AddListener(ClickArena); seasonAwardBtn.AddListener(ClickSeasonAward); honorStoreBtn.AddListener(ClickHonorStore); lookDanLvBtn.AddListener(ClickDanLv); } protected override void OnPreOpen() { SetDisplay(); PlayerDatas.Instance.playerDataRefreshEvent += UpdatePlayerData; CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdatePlayerInfo; } protected override void OnActived() { } protected override void OnAfterOpen() { } protected override void OnPreClose() { CloseSubWindows(); PlayerDatas.Instance.playerDataRefreshEvent -= UpdatePlayerData; CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdatePlayerInfo; funcId = 0; } protected override void OnAfterClose() { } #endregion private void UpdatePlayerInfo() { UpdateScore(); UpdateRank(); } private void UpdatePlayerData(PlayerDataType type) { if (type != PlayerDataType.CDBPlayerRefresh_Honor) return; UpdateHonor(); } private void SetDisplay() { crossServerWin = WindowCenter.Instance.Get(); playerInfo = CrossServerOneVsOnePlayerInfo.Instance; var playerData = PlayerDatas.Instance.baseData; avatarCell.InitUI(AvatarHelper.GetMyAvatarModel()); nameText.text = playerData.PlayerName; lvText.text = StringUtility.Contact("Lv.", playerData.LV); scoreSlider.minValue = 0; scoreSlider.maxValue = 1; UpdateScore(); UpdateRank(); UpdateHonor(); switch (funcId) { case 0: case 1: ClickArena(); break; case 2: ClickRankAward(); break; case 3: ClickSeasonAward(); break; case 4: ClickHonorStore(); break; } } private void UpdateRank() { var arenaConfig = CrossServerArenaConfig.Get(playerInfo.DanLV); rankText.text = arenaConfig.Name; rankText.color = UIHelper.GetDanLVColor(playerInfo.DanLV); rankImg.SetSprite(arenaConfig.IconKey); } private void UpdateHonor() { honorText.text = UIHelper.GetMoneyCnt(18).ToString(); } private void UpdateScore() { curScoreText.text = playerInfo.Score.ToString(); int maxScore = 0; bool isMaxRank = playerInfo.TryGetMaxRank(out maxScore); danLvUpObj.SetActive(!isMaxRank); if (!isMaxRank) { var preUpScore = CrossServerArenaConfig.Get(playerInfo.DanLV - 1); int curScore = playerInfo.Score; if(preUpScore != null) { curScore -= preUpScore.LVUpScore; } scorePerText.text = StringUtility.Contact(curScore, "/", maxScore); scoreSlider.value = (float)curScore / maxScore; } } private void ClickHonorStore() { if (honorStore_SelectImg.activeInHierarchy) return; CloseSubWindows(); WindowCenter.Instance.Open(); honorStore_SelectImg.SetActive(true); } private void ClickSeasonAward() { if (seasonAward_SelectImg.activeInHierarchy) return; CloseSubWindows(); WindowCenter.Instance.Open(); seasonAward_SelectImg.SetActive(true); } private void ClickDanLv() { WindowCenter.Instance.Open(); } private void ClickArena() { if (arena_SelectImg.activeInHierarchy) return; CloseSubWindows(); WindowCenter.Instance.Open(); arena_SelectImg.SetActive(true); } private void ClickRankAward() { if (rankAward_SelectImg.activeInHierarchy) return; CloseSubWindows(); WindowCenter.Instance.Open(); rankAward_SelectImg.SetActive(true); } private void CloseSubWindows() { WindowCenter.Instance.Close(); WindowCenter.Instance.Close(); WindowCenter.Instance.Close(); WindowCenter.Instance.Close(); arena_SelectImg.SetActive(false); rankAward_SelectImg.SetActive(false); seasonAward_SelectImg.SetActive(false); honorStore_SelectImg.SetActive(false); } } }