//-------------------------------------------------------- // [Author]: 玩个游戏 // [ Date ]: Tuesday, July 24, 2018 //-------------------------------------------------------- using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; ////开服盛典 public class OSGalaBaseWin : FunctionsBaseWin { [SerializeField] Image processImg; [SerializeField] Text timeText; [SerializeField] Text totalScoreText; [SerializeField] ItemCell[] itemCells; [SerializeField] Image[] gotImgs; [SerializeField] Text[] scoreTexts; [SerializeField] UIEffectPlayer[] effectPlayers; protected override void OnPreOpen() { base.OnPreOpen(); OSActivityManager.Instance.OnOSGalaDataChangeEvent += OnOSGalaDataChangeEvent; GlobalTimeEvent.Instance.secondEvent += ShowTime; Display(); } protected override void OnPreClose() { base.OnPreClose(); OSActivityManager.Instance.OnOSGalaDataChangeEvent -= OnOSGalaDataChangeEvent; GlobalTimeEvent.Instance.secondEvent -= ShowTime; } protected override void OpenSubUIByTabIndex() { switch (functionOrder) { case 0: currentSubUI = UIManager.Instance.OpenWindow(); break; case 1: currentSubUI = UIManager.Instance.OpenWindow(); break; case 2: currentSubUI = UIManager.Instance.OpenWindow(); break; } } private void OnOSGalaDataChangeEvent() { Display(); } void Display() { var keys = OSActivityManager.Instance.osGalaScoreAwards.Keys.ToList(); keys.Sort(); // value 分段,按keys中的达标获取 var addValue = 1.0f / keys.Count; var value = 0f; for (int i = 0; i < keys.Count; i++) { var score = keys[i]; var award = OSActivityManager.Instance.osGalaScoreAwards[score]; if (OSActivityManager.Instance.osGalaScore >= score) { value += addValue; } else { break; } } processImg.fillAmount = value; ShowTime(); totalScoreText.text = Language.Get("OSActivity11") + OSActivityManager.Instance.osGalaScore.ToString(); for (int i = 0; i < itemCells.Length; i++) { if (i < keys.Count) { itemCells[i].SetActive(true); int score = keys[i]; int index = i; int itemID = OSActivityManager.Instance.osGalaScoreAwards[score][0][0]; itemCells[i].Init(new ItemCellModel(itemID, false, OSActivityManager.Instance.osGalaScoreAwards[score][0][1])); itemCells[i].button.AddListener(() => { if (!OSActivityManager.Instance.CanGetAward(index, score)) { ItemTipUtility.Show(itemID); return; } var pack = new CA504_tagCMPlayerGetReward(); pack.RewardType = 9; pack.DataEx = (uint)score; GameNetSystem.Instance.SendInfo(pack); }); gotImgs[i].SetActive(OSActivityManager.Instance.IsGotAward(i)); scoreTexts[i].text = keys[i].ToString(); if (OSActivityManager.Instance.CanGetAward(index, score)) { effectPlayers[i].Play(); } else { effectPlayers[i].Stop(); } } else { itemCells[i].SetActive(false); } } } void ShowTime() { if (TimeUtility.OpenDay >= OSActivityManager.Instance.osGalaOpenDays) { timeText.text = Language.Get("OSActivity6"); } else { timeText.text = Language.Get("OSActivity10") + TimeUtility.SecondsToShortDHMS(TimeUtility.GetRemindTimeByOpenDay(OSActivityManager.Instance.osGalaOpenDays)); } } }