| | |
| | | //-------------------------------------------------------- |
| | | // [Author]: 第二世界 |
| | | // [ Date ]: Saturday, November 11, 2017 |
| | | //-------------------------------------------------------- |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | using UnityEngine.UI; |
| | | using System; |
| | | |
| | | namespace Snxxz.UI |
| | | { |
| | | |
| | | public class TimerBehaviour : MonoBehaviour |
| | | { |
| | | [SerializeField] protected Text m_TimeShow; |
| | | public Text timeShow { get { return m_TimeShow; } } |
| | | |
| | | [SerializeField] Pattern m_Pattern = Pattern.English; |
| | | |
| | | protected DateTime endTime; |
| | | Action onTime; |
| | | |
| | | float secondTimer = 0f; |
| | | |
| | | public void Begin(DateTime _endTime, Action _callBack = null) |
| | | { |
| | | endTime = _endTime; |
| | | onTime = _callBack; |
| | | if (endTime > DateTime.Now) |
| | | { |
| | | this.gameObject.SetActive(true); |
| | | UpdateTimeShow(); |
| | | } |
| | | else |
| | | { |
| | | this.gameObject.SetActive(false); |
| | | } |
| | | } |
| | | |
| | | public void Stop() |
| | | { |
| | | endTime = DateTime.MinValue; |
| | | onTime = null; |
| | | this.gameObject.SetActive(false); |
| | | } |
| | | |
| | | private void LateUpdate() |
| | | { |
| | | if (DateTime.Now > endTime) |
| | | { |
| | | if (onTime != null) |
| | | { |
| | | onTime(); |
| | | onTime = null; |
| | | } |
| | | |
| | | this.gameObject.SetActive(false); |
| | | } |
| | | else |
| | | { |
| | | secondTimer += Time.deltaTime; |
| | | if (secondTimer > 1f) |
| | | { |
| | | secondTimer = 0f; |
| | | UpdateTimeShow(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | protected virtual void UpdateTimeShow() |
| | | { |
| | | var lastSecond = (float)(endTime - DateTime.Now).TotalSeconds; |
| | | |
| | | switch (m_Pattern) |
| | | { |
| | | case Pattern.English: |
| | | m_TimeShow.text = TimeUtility.SecondsToHMS(Mathf.RoundToInt(lastSecond)); |
| | | break; |
| | | case Pattern.Chinese: |
| | | m_TimeShow.text = TimeUtility.SecondsToDHMSCHS(Mathf.RoundToInt(lastSecond)); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | public enum Pattern |
| | | { |
| | | English = 0, |
| | | Chinese = 1, |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | //--------------------------------------------------------
|
| | | // [Author]: 第二世界
|
| | | // [ Date ]: Saturday, November 11, 2017
|
| | | //--------------------------------------------------------
|
| | | using UnityEngine;
|
| | | using System.Collections;
|
| | | using UnityEngine.UI;
|
| | | using System;
|
| | |
|
| | | namespace Snxxz.UI
|
| | | {
|
| | |
|
| | | public class TimerBehaviour : MonoBehaviour
|
| | | {
|
| | | [SerializeField] protected Text m_TimeShow;
|
| | | public Text timeShow { get { return m_TimeShow; } }
|
| | |
|
| | | [SerializeField] Pattern m_Pattern = Pattern.English;
|
| | |
|
| | | protected DateTime endTime;
|
| | | Action onTime;
|
| | |
|
| | | float secondTimer = 0f;
|
| | |
|
| | | public void Begin(int seconds, Action _callBack = null)
|
| | | {
|
| | | endTime = TimeUtility.ServerNow + new TimeSpan(seconds * TimeSpan.TicksPerSecond);
|
| | | onTime = _callBack;
|
| | | if (endTime > TimeUtility.ServerNow)
|
| | | {
|
| | | this.gameObject.SetActive(true);
|
| | | UpdateTimeShow();
|
| | | }
|
| | | else
|
| | | {
|
| | | this.gameObject.SetActive(false);
|
| | | }
|
| | | }
|
| | |
|
| | | public void Stop()
|
| | | {
|
| | | endTime = DateTime.MinValue;
|
| | | onTime = null;
|
| | | this.gameObject.SetActive(false);
|
| | | }
|
| | |
|
| | | private void LateUpdate()
|
| | | {
|
| | | if (TimeUtility.ServerNow > endTime)
|
| | | {
|
| | | if (onTime != null)
|
| | | {
|
| | | onTime();
|
| | | onTime = null;
|
| | | }
|
| | |
|
| | | this.gameObject.SetActive(false);
|
| | | }
|
| | | else
|
| | | {
|
| | | secondTimer += Time.deltaTime;
|
| | | if (secondTimer > 1f)
|
| | | {
|
| | | secondTimer = 0f;
|
| | | UpdateTimeShow();
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | protected virtual void UpdateTimeShow()
|
| | | {
|
| | | var lastSecond = (float)(endTime - TimeUtility.ServerNow).TotalSeconds;
|
| | |
|
| | | switch (m_Pattern)
|
| | | {
|
| | | case Pattern.English:
|
| | | m_TimeShow.text = TimeUtility.SecondsToHMS(Mathf.RoundToInt(lastSecond));
|
| | | break;
|
| | | case Pattern.Chinese:
|
| | | m_TimeShow.text = TimeUtility.SecondsToDHMSCHS(Mathf.RoundToInt(lastSecond));
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | public enum Pattern
|
| | | {
|
| | | English = 0,
|
| | | Chinese = 1,
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | |
|
| | |
|