//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, November 01, 2017 //-------------------------------------------------------- using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class SecretPlaceXBActWin : Window { [SerializeField] Text scoreValue; [SerializeField] Text timeValue; [SerializeField] Text level; [SerializeField] Text itemCountText; [SerializeField] ItemCell itemCell; [SerializeField] Button selectButton; [SerializeField] List cellList; [SerializeField] Text serverList; [SerializeField] RichText showMoreServerText; [SerializeField] Button showMoreServerBtn; int totalCardCnt = 35; //总卡片数 int curLevel = 0; // 从第一层开始 SecretPlaceXBModel model { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { selectButton.SetListener(() => { WindowCenter.Instance.Open(); }); showMoreServerBtn.SetListener(() => { FuncRules.OpenFuncTip(Language.Get("L2015"), model.operationCrossAct.m_ServerListStr); }); } protected override void OnPreOpen() { ILOperationTimeHepler.Instance.operationTimeUpdateEvent += operationTimeUpdateEvent; WindowCenter.Instance.windowAfterCloseEvent += OnWindowAfterCloseEvent; model.OnXBResult += OnAwardItemResult; packModel.refreshItemCountEvent += RefreshItemCountEvent; model.showResultPos.Clear(); model.onceRedpointTip = false; model.UpdateRedpoint(); Display(); } protected override void OnAfterOpen() { WashCard(); } protected override void OnPreClose() { ILOperationTimeHepler.Instance.operationTimeUpdateEvent -= operationTimeUpdateEvent; WindowCenter.Instance.windowAfterCloseEvent -= OnWindowAfterCloseEvent; model.OnXBResult -= OnAwardItemResult; packModel.refreshItemCountEvent -= RefreshItemCountEvent; } protected override void OnAfterClose() { } protected override void LateUpdate() { if (model.IsResultShowTime) { timeValue.text = StringUtility.Contact(Language.Get("L2013", Language.Get("L2014"), model.operationCrossAct.ShowResultTime()), " (", Language.Get("XMZZ110") + ")"); } if (model.showResultPos.Count != 0) { var keys = model.showResultPos.Keys.ToList(); for (int i = 0; i < keys.Count; i++) { var pos = keys[i]; if ((Time.time - model.showResultPos[pos]) > 1f) { var cell = cellList[pos - 1].GetComponent(); cell.itemCell.SetActiveIL(false); if (model.operationAct.awardItems.ContainsKey(pos) && model.operationAct.awardItems[pos].ItemLibType == OperationXianXiaMJLottery.bigAwardType) { cell.effHole.Play(); model.PopNextLevel(); } model.showResultPos.Remove(pos); } } } } #endregion private void RefreshItemCountEvent(PackType packType, int index, int itemId) { if (itemId != model.subItemID) return; itemCountText.text = packModel.GetItemCountByID(PackType.Item, model.subItemID).ToString(); } public void OnAwardItemResult(int pos) { if (pos == 0) return; var cell = cellList[pos - 1].GetComponent(); cell.DisplaySingle(pos); scoreValue.text = model.lotteryScore.ToString(); itemCountText.text = packModel.GetItemCountByID(PackType.Item, model.subItemID).ToString(); } void Display() { curLevel = model.operationAct.layerNum; scoreValue.text = model.lotteryScore.ToString(); itemCountText.text = packModel.GetItemCountByID(PackType.Item, model.subItemID).ToString(); ShowTime(); level.text = Language.Get("SecretPlaceAct4", model.operationAct.layerNum); ShowSelectBigAward(); if (model.operationCrossAct != null) { serverList.text = Language.Get("L2013", Language.Get("L2015"), model.operationCrossAct.m_ServerListStr).Replace(" ", UIHelper.no_breaking_space); showMoreServerText.text = Language.Get("L2018", Language.Get("L2016")); } else { serverList.text = ""; showMoreServerText.text = ""; } } void ShowTime() { //分上榜时间 和 最后展示时间 if (model.IsResultShowTime) { timeValue.text = StringUtility.Contact(Language.Get("L2013", Language.Get("L2014"), model.operationCrossAct.ShowResultTime()), " (", Language.Get("XMZZ110") + ")"); } else if (model.operationCrossAct != null) { timeValue.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), UIHelper.AppendColor(TextColType.Green, model.operationCrossAct.ToDisplayJoinTime(), true)); } else { timeValue.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), UIHelper.AppendColor(TextColType.Green, model.operationAct.ToDisplayTime(), true)); } } void ShowSelectBigAward() { if (model.operationAct.selectBigAward == null) { itemCell.SetActiveIL(false); } else { itemCell.SetActiveIL(true); itemCell.Init(new ItemCellModel((int)model.operationAct.selectBigAward.ItemID, false, model.operationAct.selectBigAward.ItemCount)); itemCell.button.SetListener(() => { ItemTipUtility.Show((int)model.operationAct.selectBigAward.ItemID); }); } } //洗牌 void WashCard() { for (int i = 0; i < totalCardCnt; i++) { if (i < model.operationAct.cardShowCount) { cellList[i].SetActiveIL(true); var cell = cellList[i].GetComponent(); cell.Display(i + 1); } else { cellList[i].SetActiveIL(false); } } } private void operationTimeUpdateEvent(Operation type) { if (type == SecretPlaceXBModel.operaType) { if (curLevel != model.operationAct.layerNum) { WashCard(); curLevel = model.operationAct.layerNum; WindowCenter.Instance.Open(); } level.text = Language.Get("SecretPlaceAct4", model.operationAct.layerNum); scoreValue.text = model.lotteryScore.ToString(); ShowSelectBigAward(); } } void OnWindowAfterCloseEvent(Window win) { if (win.name != "SecretPlaceSuperItemWin") return; if (model.HasTurnCard()) return; WashCard(); } } }