Files
JJBB/Assets/Project/Script/GUI/ImperialExam/ImperialWaitTimePanel.cs
2024-08-23 15:49:34 +08:00

184 lines
5.6 KiB
C#

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
using GCGame.Table;
using Module.Log;
public class ImperialWaitTimePanel : MonoBehaviour {
public Text descText;
public Text timeText;
public GameObject _huishiDescObj;
public GameObject _dianshiDescObj;
public static ImperialWaitTimePanel Instance;
private void Awake()
{
Instance = this;
}
private void OnEnable()
{
remainTime = 0;
}
private void OnDisable()
{
Instance = null;
}
public int remainTime;
public void SetTime()
{
if (_curType == ImpreialExamPanelCtr.Question_Type.QUESTION_HUISHI)
CalculateOpenHuishiRemainTime();
else
CalculateDianshiRemainTime();
GetAndSetRemainTime();
}
public void CalculateOpenHuishiRemainTime()
{
var otherTab = TableManager.GetQuestionOtherByID(1, 0); //获取会试需要进行的时间
if (otherTab == null)
{
LogModule.ErrorLog("OtherTab is null, id : " + 1);
return;
}
DateTime curTime = GCGame.Utils.GetServerDateTime();
DateTime openTime = GetOpenTime().AddSeconds(otherTab.WaitTime); //当天19.01
remainTime = (int)(openTime - curTime).TotalSeconds > 0 ? (int)(openTime - curTime).TotalSeconds : 0;
}
public void CalculateDianshiRemainTime()
{
if (remainTime != 0)
return;
var otherTab = TableManager.GetQuestionOtherByID(1, 0); //获取会试需要进行的时间
if (otherTab == null)
{
LogModule.ErrorLog("OtherTab is null, id : " + 1);
return;
}
var dianshiTab = TableManager.GetQuestionOtherByID(2, 0); //获取会试需要进行的时间
if (dianshiTab == null)
{
LogModule.ErrorLog("dianshiTab is null, id : " + 1);
return;
}
//7.01开始
var _overSeconds = otherTab.DayQuestionCount * otherTab.AutoFlush + otherTab.WaitTime;
DateTime curTime = GCGame.Utils.GetServerDateTime(); //24的时候才开始竞猜
DateTime openTime = GetOpenTime().AddSeconds(_overSeconds + dianshiTab.WaitTime);
remainTime = (int)(openTime - curTime).TotalSeconds > 0 ? (int)(openTime - curTime).TotalSeconds : 0;
}
public void GetAndSetRemainTime()
{
if(remainTime > 0)
{
timeText.text = remainTime.ToString();
}else
{
timeText.text = "0";
}
}
float countTime = 0.0f;
private void Update()
{
if (remainTime > 0)
{
countTime += Time.deltaTime;
if(countTime >= 1.0f)
{
remainTime--;
GetAndSetRemainTime();
countTime = 1.0f - countTime;
}
}
}
private void GetCurQuestionType()
{
//根据当前时间判断
var huishiOtherTab = TableManager.GetQuestionOtherByID(1, 0); //获取会试需要进行的时间
DateTime huishiOpenTime = GetOpenTime().AddSeconds(huishiOtherTab.WaitTime); //当天19.01
if (huishiOtherTab == null)
{
LogModule.ErrorLog("OtherTab is null, id : " + 1);
return;
}
var _huishiTotalTime = huishiOtherTab.DayQuestionCount * huishiOtherTab.AutoFlush;
DateTime huishiOverTime = huishiOpenTime.AddSeconds(_huishiTotalTime);
var dianshiOtherTab = TableManager.GetQuestionOtherByID(2, 0); //获取殿试等待时间
if (dianshiOtherTab == null)
{
LogModule.ErrorLog("OtherTab is null, id : " + 1);
return;
}
DateTime dianshiOpenTime = huishiOverTime.AddSeconds(dianshiOtherTab.WaitTime);
DateTime curTime = GCGame.Utils.GetServerDateTime();
//会试结束之后的竞猜时间是殿试阶段
_curType = curTime <= huishiOverTime ? ImpreialExamPanelCtr.Question_Type.QUESTION_HUISHI : ImpreialExamPanelCtr.Question_Type.QUESTION_DIANSHI;
if (ImpreialExamPanelCtr.Instance)
{
ImpreialExamPanelCtr.Instance.SetMyQuestionType(_curType);
}
}
//会试1 殿试2
private ImpreialExamPanelCtr.Question_Type _curType;
public void SetWaitType()
{
GetCurQuestionType();
_huishiDescObj.SetActive(_curType == ImpreialExamPanelCtr.Question_Type.QUESTION_HUISHI);
_dianshiDescObj.SetActive(_curType == ImpreialExamPanelCtr.Question_Type.QUESTION_DIANSHI);
timeText.gameObject.SetActive(true);
switch (_curType)
{
case ImpreialExamPanelCtr.Question_Type.QUESTION_HUISHI:
descText.text = StrDictionary.GetClientDictionaryString("#{2565}");
break;
case ImpreialExamPanelCtr.Question_Type.QUESTION_DIANSHI:
descText.text = StrDictionary.GetClientDictionaryString("#{2566}");
break;
}
//计算并且设置剩余时间
SetTime();
}
public DateTime GetOpenTime()
{
DateTime curTime = GCGame.Utils.GetServerDateTime();
var sysParamTab = TableManager.GetSystemParamByID(71, 0);
if(sysParamTab == null)
{
Debug.LogError("SystemPatam tab is null, id : " + 71);
return new DateTime(curTime.Year, curTime.Month, curTime.Day, 19, 15, 0);
}
return new DateTime(curTime.Year, curTime.Month, curTime.Day,
int.Parse(sysParamTab.StringValue.Split('|')[0]), int.Parse(sysParamTab.StringValue.Split('|')[1]), int.Parse(sysParamTab.StringValue.Split('|')[2]));
}
}