| | |
| | | //-------------------------------------------------------- |
| | | // [Author]: 第二世界 |
| | | // [ Date ]: Tuesday, April 24, 2018 |
| | | //-------------------------------------------------------- |
| | | |
| | | using System; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | | using TableConfig; |
| | | namespace Snxxz.UI { |
| | | |
| | | public class OpenServerRedEnvelopeWin : Window |
| | | { |
| | | [SerializeField] Text m_OSRedTitle; |
| | | [SerializeField] Text m_AchieveCoolDown; |
| | | [SerializeField] RectTransform m_ContainerAchievement; |
| | | [SerializeField] RectTransform m_ContainerEnvelope; |
| | | [SerializeField] RectTransform m_ContainerNoEnvelope; |
| | | [SerializeField] Text m_AllGetJade; |
| | | [SerializeField] Text m_EnvelopeCount; |
| | | [SerializeField] Text m_EnvelopeTime; |
| | | [SerializeField] ScrollerController m_RedAchieveControl; |
| | | [SerializeField] ScrollerController m_RedEnvelopeControl; |
| | | |
| | | OSRedEnvelopeModel m_Model; |
| | | OSRedEnvelopeModel model |
| | | { |
| | | get |
| | | { |
| | | return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<OSRedEnvelopeModel>()); |
| | | } |
| | | } |
| | | |
| | | RedEnvelopeModel envelopeModel { get { return ModelCenter.Instance.GetModel<RedEnvelopeModel>(); } } |
| | | |
| | | AchievementModel m_AchievementModel; |
| | | AchievementModel achieveModel |
| | | { |
| | | get |
| | | { |
| | | return m_AchievementModel ?? (m_AchievementModel = ModelCenter.Instance.GetModel<AchievementModel>()); |
| | | } |
| | | } |
| | | |
| | | private int m_SelectType = 1; |
| | | |
| | | #region Built-in |
| | | protected override void BindController() |
| | | { |
| | | } |
| | | |
| | | protected override void AddListeners() |
| | | { |
| | | m_RedEnvelopeControl.OnRefreshCell += OnRefreshCell; |
| | | } |
| | | |
| | | protected override void OnPreOpen() |
| | | { |
| | | model.FuncChangeEvent += FuncChangeEvent; |
| | | model.OSRedAchieveUpdateEvent += OSRedAchieveUpdateEvent; |
| | | FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; |
| | | model.OSRedEnvelopeUpdateEvent += OSRedEnvelopeUpdateEvent; |
| | | model.OSRedEnvelopeInfoEnvent += OSRedEnvelopeInfoEnvent; |
| | | TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh; |
| | | UpdateOSRed(); |
| | | } |
| | | |
| | | protected override void OnAfterOpen() |
| | | { |
| | | if (model.autoOpen && m_SelectType == 2) |
| | | { |
| | | for (int i = 0; i < model.m_OSRedEnvelopes.Count; i++) |
| | | { |
| | | RedEnvelopeModel.RedEnvelope envelope; |
| | | if (envelopeModel.TryGetEnvelope(model.m_OSRedEnvelopes[i], out envelope) |
| | | && envelope.state == 1) |
| | | { |
| | | if (PlayerDatas.Instance.PlayerId == envelope.player |
| | | || model.getEnvelopeTimes > 0) |
| | | { |
| | | ModelCenter.Instance.GetModel<PlayerRedPacketDatas>().RedBagId = envelope.id; |
| | | WindowCenter.Instance.Open<RedOPenBGMWin>(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | model.autoOpen = false; |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | | { |
| | | model.FuncChangeEvent -= FuncChangeEvent; |
| | | model.OSRedAchieveUpdateEvent -= OSRedAchieveUpdateEvent; |
| | | FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; |
| | | model.OSRedEnvelopeUpdateEvent -= OSRedEnvelopeUpdateEvent; |
| | | model.OSRedEnvelopeInfoEnvent -= OSRedEnvelopeInfoEnvent; |
| | | TimeUtility.OnServerOpenDayRefresh -= OnServerOpenDayRefresh; |
| | | } |
| | | |
| | | protected override void OnAfterClose() |
| | | { |
| | | } |
| | | |
| | | private float m_Time = 0.0f; |
| | | private float m_DelayTime = 0.5f; |
| | | |
| | | bool IsOutOffTime = false; |
| | | protected override void LateUpdate() |
| | | { |
| | | base.LateUpdate(); |
| | | |
| | | m_Time += Time.deltaTime; |
| | | if (m_Time > m_DelayTime) |
| | | { |
| | | if (TimeUtility.OpenDay < model.openDays) |
| | | { |
| | | UpdateCoolDown(); |
| | | } |
| | | if (!IsOutOffTime) |
| | | { |
| | | if (m_SelectType == 2) |
| | | { |
| | | UpdateAddTime(); |
| | | } |
| | | } |
| | | m_Time = 0; |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | private void OnServerOpenDayRefresh() |
| | | { |
| | | UpdateCoolDown(); |
| | | UpdateAddTime(); |
| | | } |
| | | |
| | | private void UpdateCoolDown() |
| | | { |
| | | var t = model.overTime - TimeUtility.ServerNow; |
| | | m_AchieveCoolDown.text = StringUtility.Contact(Language.Get("OSActivityCoolDown"), |
| | | TimeUtility.SecondsToDHMSCHS((int)t.TotalSeconds)); |
| | | if (TimeUtility.OpenDay >= model.openDays) |
| | | { |
| | | m_AchieveCoolDown.color = UIHelper.GetUIColor(TextColType.NavyYellow); |
| | | m_AchieveCoolDown.text = Language.Get("ActivityEnd"); |
| | | } |
| | | else |
| | | { |
| | | m_AchieveCoolDown.color = UIHelper.GetUIColor(TextColType.LightGreen); |
| | | } |
| | | } |
| | | |
| | | private void FuncChangeEvent() |
| | | { |
| | | if (m_SelectType != model.selectType) |
| | | { |
| | | UpdateOSRed(); |
| | | } |
| | | } |
| | | |
| | | private void OSRedAchieveUpdateEvent(int _achieve) |
| | | { |
| | | if (model.selectType != 1) |
| | | { |
| | | return; |
| | | } |
| | | Achievement achievement; |
| | | if(achieveModel.TryGetAchievement(model.m_OSRedAchieveDict[_achieve].CurrentAchieve, out achievement)) |
| | | { |
| | | if (Achievement.IsReach(achievement.id, achievement.progress)) |
| | | { |
| | | UpdateOSRed(); |
| | | return; |
| | | } |
| | | } |
| | | m_RedAchieveControl.m_Scorller.RefreshActiveCellViews(); |
| | | } |
| | | |
| | | private void OnFuncStateChangeEvent(int _func) |
| | | { |
| | | if (model.selectType == 1 && model.m_AllFuncs.Contains(_func)) |
| | | { |
| | | UpdateOSRed(); |
| | | } |
| | | } |
| | | |
| | | private void OSRedEnvelopeUpdateEvent() |
| | | { |
| | | if (model.selectType != 2) |
| | | { |
| | | return; |
| | | } |
| | | UpdateOSRed(); |
| | | } |
| | | |
| | | private void UpdateOSRed() |
| | | { |
| | | m_SelectType = model.selectType; |
| | | m_OSRedTitle.text = m_SelectType == 1 ? Language.Get("OSAchievementTitle") : Language.Get("OSRedEnvelopeTitle"); |
| | | m_ContainerAchievement.gameObject.SetActive(m_SelectType == 1); |
| | | m_ContainerEnvelope.gameObject.SetActive(m_SelectType == 2); |
| | | IsOutOffTime = false; |
| | | UpdateCoolDown(); |
| | | if (m_SelectType == 1) |
| | | { |
| | | m_RedAchieveControl.Refresh(); |
| | | model.m_OSRedAchieves.Sort(model.CompareAchievement); |
| | | for (int i = 0; i < model.m_OSRedAchieves.Count; i++) |
| | | { |
| | | var _cfg = ConfigManager.Instance.GetTemplate<OSRedAchieveConfig>(model.m_OSRedAchieves[i]); |
| | | if (_cfg.func == 0 || FuncOpen.Instance.IsFuncOpen(_cfg.func)) |
| | | { |
| | | m_RedAchieveControl.AddCell(ScrollerDataType.Header, i); |
| | | } |
| | | } |
| | | m_RedAchieveControl.Restart(); |
| | | } |
| | | else |
| | | { |
| | | m_RedEnvelopeControl.Refresh(); |
| | | var _line = Mathf.CeilToInt((float)model.m_OSRedEnvelopes.Count / 5); |
| | | for (int i = 0; i < _line; i++) |
| | | { |
| | | m_RedEnvelopeControl.AddCell(ScrollerDataType.Header, i); |
| | | } |
| | | m_RedEnvelopeControl.Restart(); |
| | | OSRedEnvelopeInfoEnvent(); |
| | | m_ContainerNoEnvelope.gameObject.SetActive(model.m_OSRedEnvelopes.Count == 0); |
| | | } |
| | | } |
| | | |
| | | private void OnRefreshCell(ScrollerDataType type, CellView _cell) |
| | | { |
| | | OSRedEnvelopeCell cell = _cell as OSRedEnvelopeCell; |
| | | cell.Init(_cell.index); |
| | | } |
| | | |
| | | private void OSRedEnvelopeInfoEnvent() |
| | | { |
| | | if (m_SelectType == 2) |
| | | { |
| | | m_AllGetJade.text = model.totalJadeGet.ToString(); |
| | | UpdateCounts(); |
| | | UpdateAddTime(); |
| | | } |
| | | } |
| | | |
| | | private void UpdateAddTime() |
| | | { |
| | | var t = TimeUtility.ServerNow - model.coolDownTime; |
| | | int _seconds = model.addSeconds - (int)t.TotalSeconds % model.addSeconds; |
| | | if (TimeUtility.OpenDay >= model.openDays) |
| | | { |
| | | m_EnvelopeTime.color = UIHelper.GetUIColor(TextColType.NavyYellow); |
| | | m_EnvelopeTime.text = StringUtility.Contact("(", Language.Get("ActivityEnd"), ")"); |
| | | IsOutOffTime = true; |
| | | } |
| | | else if (model.getEnvelopeTimes >= model.limitCount) |
| | | { |
| | | m_EnvelopeTime.color = UIHelper.GetUIColor(TextColType.LightGreen); |
| | | m_EnvelopeTime.text = Language.Get("NumberOfArrivals_Z"); |
| | | IsOutOffTime = true; |
| | | } |
| | | else |
| | | { |
| | | m_EnvelopeTime.color = UIHelper.GetUIColor(TextColType.LightGreen); |
| | | m_EnvelopeTime.text = StringUtility.Contact("(", TimeUtility.SecondsToHMS(_seconds), Language.Get("OSRedEnvelopeAddTimes"), ")"); |
| | | } |
| | | } |
| | | |
| | | private void UpdateCounts() |
| | | { |
| | | if (model.getEnvelopeTimes < model.limitCount) |
| | | { |
| | | IsOutOffTime = false; |
| | | } |
| | | m_EnvelopeCount.text = Mathf.Min(model.limitCount, model.getEnvelopeTimes).ToString(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //--------------------------------------------------------
|
| | | // [Author]: 第二世界
|
| | | // [ Date ]: Tuesday, April 24, 2018
|
| | | //--------------------------------------------------------
|
| | |
|
| | | using System;
|
| | | using System.Collections;
|
| | | using System.Collections.Generic;
|
| | | using UnityEngine;
|
| | | using UnityEngine.UI;
|
| | | using TableConfig;
|
| | | namespace Snxxz.UI {
|
| | |
|
| | | public class OpenServerRedEnvelopeWin : Window
|
| | | {
|
| | | [SerializeField] Text m_OSRedTitle;
|
| | | [SerializeField] Text m_AchieveCoolDown;
|
| | | [SerializeField] RectTransform m_ContainerAchievement;
|
| | | [SerializeField] RectTransform m_ContainerEnvelope;
|
| | | [SerializeField] RectTransform m_ContainerNoEnvelope;
|
| | | [SerializeField] Text m_AllGetJade;
|
| | | [SerializeField] Text m_EnvelopeCount;
|
| | | [SerializeField] Text m_EnvelopeTime;
|
| | | [SerializeField] ScrollerController m_RedAchieveControl;
|
| | | [SerializeField] ScrollerController m_RedEnvelopeControl;
|
| | |
|
| | | OSRedEnvelopeModel m_Model;
|
| | | OSRedEnvelopeModel model
|
| | | {
|
| | | get
|
| | | {
|
| | | return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<OSRedEnvelopeModel>());
|
| | | }
|
| | | }
|
| | |
|
| | | RedEnvelopeModel envelopeModel { get { return ModelCenter.Instance.GetModel<RedEnvelopeModel>(); } }
|
| | |
|
| | | AchievementModel m_AchievementModel;
|
| | | AchievementModel achieveModel
|
| | | {
|
| | | get
|
| | | {
|
| | | return m_AchievementModel ?? (m_AchievementModel = ModelCenter.Instance.GetModel<AchievementModel>());
|
| | | }
|
| | | }
|
| | |
|
| | | private int m_SelectType = 1;
|
| | |
|
| | | #region Built-in
|
| | | protected override void BindController()
|
| | | {
|
| | | }
|
| | |
|
| | | protected override void AddListeners()
|
| | | {
|
| | | m_RedEnvelopeControl.OnRefreshCell += OnRefreshCell;
|
| | | }
|
| | |
|
| | | protected override void OnPreOpen()
|
| | | {
|
| | | model.FuncChangeEvent += FuncChangeEvent;
|
| | | model.OSRedAchieveUpdateEvent += OSRedAchieveUpdateEvent;
|
| | | FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
|
| | | model.OSRedEnvelopeUpdateEvent += OSRedEnvelopeUpdateEvent;
|
| | | model.OSRedEnvelopeInfoEnvent += OSRedEnvelopeInfoEnvent;
|
| | | TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh;
|
| | | WindowCenter.Instance.windowAfterOpenEvent += WindowAfterOpenEvent;
|
| | | UpdateOSRed();
|
| | | }
|
| | |
|
| | | protected override void OnAfterOpen()
|
| | | {
|
| | | |
| | | }
|
| | |
|
| | | protected override void OnPreClose()
|
| | | {
|
| | | model.FuncChangeEvent -= FuncChangeEvent;
|
| | | model.OSRedAchieveUpdateEvent -= OSRedAchieveUpdateEvent;
|
| | | FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
|
| | | model.OSRedEnvelopeUpdateEvent -= OSRedEnvelopeUpdateEvent;
|
| | | model.OSRedEnvelopeInfoEnvent -= OSRedEnvelopeInfoEnvent;
|
| | | TimeUtility.OnServerOpenDayRefresh -= OnServerOpenDayRefresh;
|
| | | WindowCenter.Instance.windowAfterOpenEvent -= WindowAfterOpenEvent;
|
| | | }
|
| | |
|
| | | protected override void OnAfterClose()
|
| | | {
|
| | | }
|
| | |
|
| | | private float m_Time = 0.0f;
|
| | | private float m_DelayTime = 0.5f;
|
| | |
|
| | | protected override void LateUpdate()
|
| | | {
|
| | | base.LateUpdate();
|
| | | |
| | | m_Time += Time.deltaTime;
|
| | | if (m_Time > m_DelayTime)
|
| | | {
|
| | | if (TimeUtility.OpenDay < model.openDays)
|
| | | {
|
| | | UpdateCoolDown();
|
| | | }
|
| | | m_Time = 0;
|
| | | }
|
| | | }
|
| | | #endregion
|
| | |
|
| | | private void WindowAfterOpenEvent(Window win)
|
| | | {
|
| | | if (win is OpenServerActivityWin)
|
| | | {
|
| | | AutoOpenRedpack();
|
| | | }
|
| | | }
|
| | |
|
| | | void AutoOpenRedpack()
|
| | | {
|
| | | if (model.autoOpen && m_SelectType == 2)
|
| | | {
|
| | | for (int i = 0; i < model.m_OSRedEnvelopes.Count; i++)
|
| | | {
|
| | | RedEnvelopeModel.RedEnvelope envelope;
|
| | | if (envelopeModel.TryGetEnvelope(model.m_OSRedEnvelopes[i], out envelope)
|
| | | && envelope.state == 1)
|
| | | {
|
| | | if (PlayerDatas.Instance.PlayerId == envelope.player
|
| | | || model.getEnvelopeTimes > 0)
|
| | | {
|
| | | ModelCenter.Instance.GetModel<PlayerRedPacketDatas>().RedBagId = envelope.id;
|
| | | WindowCenter.Instance.Open<RedOPenBGMWin>();
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | model.autoOpen = false;
|
| | | }
|
| | |
|
| | | private void OnServerOpenDayRefresh()
|
| | | {
|
| | | UpdateCoolDown();
|
| | | }
|
| | |
|
| | | private void UpdateCoolDown()
|
| | | {
|
| | | var t = model.overTime - TimeUtility.ServerNow;
|
| | | m_AchieveCoolDown.text = StringUtility.Contact(Language.Get("OSActivityCoolDown"),
|
| | | TimeUtility.SecondsToDHMSCHS((int)t.TotalSeconds));
|
| | | if (TimeUtility.OpenDay >= model.openDays)
|
| | | {
|
| | | m_AchieveCoolDown.color = UIHelper.GetUIColor(TextColType.NavyYellow);
|
| | | m_AchieveCoolDown.text = Language.Get("ActivityEnd");
|
| | | }
|
| | | else
|
| | | {
|
| | | m_AchieveCoolDown.color = UIHelper.GetUIColor(TextColType.LightGreen);
|
| | | }
|
| | | }
|
| | |
|
| | | private void FuncChangeEvent()
|
| | | {
|
| | | if (m_SelectType != model.selectType)
|
| | | {
|
| | | UpdateOSRed();
|
| | | }
|
| | | }
|
| | |
|
| | | private void OSRedAchieveUpdateEvent(int _achieve)
|
| | | {
|
| | | if (model.selectType != 1)
|
| | | {
|
| | | return;
|
| | | }
|
| | | Achievement achievement;
|
| | | if(achieveModel.TryGetAchievement(model.m_OSRedAchieveDict[_achieve].CurrentAchieve, out achievement))
|
| | | {
|
| | | if (Achievement.IsReach(achievement.id, achievement.progress))
|
| | | {
|
| | | UpdateOSRed();
|
| | | return;
|
| | | }
|
| | | }
|
| | | m_RedAchieveControl.m_Scorller.RefreshActiveCellViews();
|
| | | }
|
| | |
|
| | | private void OnFuncStateChangeEvent(int _func)
|
| | | {
|
| | | if (model.selectType == 1 && model.m_AllFuncs.Contains(_func))
|
| | | {
|
| | | UpdateOSRed();
|
| | | }
|
| | | }
|
| | |
|
| | | private void OSRedEnvelopeUpdateEvent()
|
| | | {
|
| | | if (model.selectType != 2)
|
| | | {
|
| | | return;
|
| | | }
|
| | | UpdateOSRed();
|
| | | }
|
| | |
|
| | | private void UpdateOSRed()
|
| | | {
|
| | | m_SelectType = model.selectType;
|
| | | m_OSRedTitle.text = m_SelectType == 1 ? Language.Get("OSAchievementTitle") : Language.Get("OSRedEnvelopeTitle");
|
| | | m_ContainerAchievement.gameObject.SetActive(m_SelectType == 1);
|
| | | m_ContainerEnvelope.gameObject.SetActive(m_SelectType == 2);
|
| | | UpdateCoolDown();
|
| | | if (m_SelectType == 1)
|
| | | {
|
| | | m_RedAchieveControl.Refresh();
|
| | | model.m_OSRedAchieves.Sort(model.CompareAchievement);
|
| | | for (int i = 0; i < model.m_OSRedAchieves.Count; i++)
|
| | | {
|
| | | var _cfg = Config.Instance.Get<OSRedAchieveConfig>(model.m_OSRedAchieves[i]);
|
| | | if (_cfg.func == 0 || FuncOpen.Instance.IsFuncOpen(_cfg.func))
|
| | | {
|
| | | m_RedAchieveControl.AddCell(ScrollerDataType.Header, i);
|
| | | }
|
| | | }
|
| | | m_RedAchieveControl.Restart();
|
| | | }
|
| | | else
|
| | | {
|
| | | m_RedEnvelopeControl.Refresh();
|
| | | var _line = Mathf.CeilToInt((float)model.m_OSRedEnvelopes.Count / 5);
|
| | | for (int i = 0; i < _line; i++)
|
| | | {
|
| | | m_RedEnvelopeControl.AddCell(ScrollerDataType.Header, i);
|
| | | }
|
| | | m_RedEnvelopeControl.Restart();
|
| | | OSRedEnvelopeInfoEnvent();
|
| | | m_ContainerNoEnvelope.gameObject.SetActive(model.m_OSRedEnvelopes.Count == 0);
|
| | | }
|
| | | }
|
| | |
|
| | | private void OnRefreshCell(ScrollerDataType type, CellView _cell)
|
| | | {
|
| | | OSRedEnvelopeCell cell = _cell as OSRedEnvelopeCell;
|
| | | cell.Init(_cell.index);
|
| | | }
|
| | |
|
| | | private void OSRedEnvelopeInfoEnvent()
|
| | | {
|
| | | if (m_SelectType == 2)
|
| | | {
|
| | | m_AllGetJade.text = model.totalJadeGet.ToString();
|
| | | UpdateCounts();
|
| | | UpdateAddTime();
|
| | | }
|
| | | }
|
| | |
|
| | | private void UpdateAddTime()
|
| | | {
|
| | | m_EnvelopeTime.text = Language.Get("OSRedEnvelopeAddTimes", model.addCounts);
|
| | | }
|
| | |
|
| | | private void UpdateCounts()
|
| | | {
|
| | | m_EnvelopeCount.text = model.getEnvelopeTimes.ToString();
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | |
|