213 lines
6.9 KiB
C#
213 lines
6.9 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using GCGame.Table;
|
|
|
|
|
|
public class BanQuetInvatePanel : MonoBehaviour {
|
|
|
|
public static BanQuetInvatePanel Instance;
|
|
private void OnEnable()
|
|
{
|
|
Instance = this;
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
Instance = null;
|
|
}
|
|
|
|
public List<Toggle> _totalToggleList;
|
|
public Button _WorldBtn;
|
|
public Text _WorldEndTimeText;
|
|
public Button _GuildBtn;
|
|
public Text _GuildEndTimeText;
|
|
public Button _FriendBtn;
|
|
public Text _FriendEndTimeText;
|
|
|
|
private long _WorldEndTime;
|
|
private long _GuildEndTime;
|
|
private long _FriendEndTime;
|
|
|
|
private bool _IsInitSetting = false;
|
|
public void Init(List<int> permissionList, long worldEndTime, long guildEndTime, long friendEndTime)
|
|
{
|
|
_IsInitSetting = false;
|
|
for (int index = 0; index < _totalToggleList.Count; index++)
|
|
{
|
|
_totalToggleList[index].isOn = permissionList[index] == 1;
|
|
}
|
|
_IsInitSetting = true;
|
|
RefeshBtnState(worldEndTime, guildEndTime, friendEndTime);
|
|
StopAllCoroutines();
|
|
StartCoroutine(CountRemainTime());
|
|
}
|
|
|
|
public void RefeshBtnState(long worldEndTime, long guildEndTime, long friendEndTime)
|
|
{
|
|
_WorldEndTime = worldEndTime;
|
|
_WorldBtn.interactable = _WorldEndTime <= GlobalData.ServerAnsiTime;
|
|
_GuildEndTime = guildEndTime;
|
|
_GuildBtn.interactable = _GuildEndTime <= GlobalData.ServerAnsiTime;
|
|
_FriendEndTime = friendEndTime;
|
|
_FriendBtn.interactable = _FriendEndTime <= GlobalData.ServerAnsiTime;
|
|
|
|
if(IsNeedCounTime())
|
|
{
|
|
StopAllCoroutines();
|
|
StartCoroutine(CountRemainTime());
|
|
}
|
|
}
|
|
|
|
public bool IsNeedCounTime()
|
|
{
|
|
if (_WorldEndTime <= GlobalData.ServerAnsiTime
|
|
&& _GuildEndTime <= GlobalData.ServerAnsiTime
|
|
&& _FriendEndTime <= GlobalData.ServerAnsiTime)
|
|
{
|
|
SetOriginBtnDesc();
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public void SetOriginBtnDesc()
|
|
{
|
|
_WorldEndTimeText.text = StrDictionary.GetClientDictionaryString("#{82200}");
|
|
_GuildEndTimeText.text = StrDictionary.GetClientDictionaryString("#{82201}");
|
|
_FriendEndTimeText.text = StrDictionary.GetClientDictionaryString("#{82202}");
|
|
|
|
if (!_WorldBtn.interactable)
|
|
_WorldBtn.interactable = true;
|
|
|
|
if (!_GuildBtn.interactable)
|
|
_GuildBtn.interactable = true;
|
|
|
|
if (!_FriendBtn.interactable)
|
|
_FriendBtn.interactable = true;
|
|
}
|
|
|
|
IEnumerator CountRemainTime()
|
|
{
|
|
while(true)
|
|
{
|
|
yield return new WaitForSeconds(1.0f);
|
|
|
|
if(!IsNeedCounTime())
|
|
{
|
|
yield break;
|
|
}
|
|
|
|
if(_WorldEndTime > GlobalData.ServerAnsiTime)
|
|
{
|
|
if (_WorldBtn.interactable)
|
|
_WorldBtn.interactable = false;
|
|
|
|
var remainTime = _WorldEndTime - GlobalData.ServerAnsiTime;
|
|
var remainTimeStr = remainTime > 60 ? "(" + (remainTime / 60).ToString().PadLeft(2, '0') + "m" + (remainTime % 60).ToString().PadLeft(2, '0') + "s" + ")"
|
|
: "(" + (remainTime % 60).ToString().PadLeft(2, '0') + "s" + ")";
|
|
_WorldEndTimeText.text = StrDictionary.GetClientDictionaryString("#{82203}", remainTimeStr);
|
|
}else
|
|
{
|
|
if (!_WorldBtn.interactable)
|
|
_WorldBtn.interactable = true;
|
|
_WorldEndTimeText.text = StrDictionary.GetClientDictionaryString("#{82200}");
|
|
}
|
|
|
|
if (_GuildEndTime > GlobalData.ServerAnsiTime)
|
|
{
|
|
|
|
if (_GuildBtn.interactable)
|
|
_GuildBtn.interactable = false;
|
|
|
|
var remainTime = _GuildEndTime - GlobalData.ServerAnsiTime;
|
|
var remainTimeStr = remainTime > 60 ? "(" + (remainTime / 60).ToString().PadLeft(2, '0') + "m" + (remainTime % 60).ToString().PadLeft(2, '0') + "s" + ")"
|
|
: "(" + (remainTime % 60).ToString().PadLeft(2, '0') + "s" + ")";
|
|
_GuildEndTimeText.text = StrDictionary.GetClientDictionaryString("#{82204}", remainTimeStr);
|
|
}
|
|
else
|
|
{
|
|
if (!_GuildBtn.interactable)
|
|
_GuildBtn.interactable = true;
|
|
_GuildEndTimeText.text = StrDictionary.GetClientDictionaryString("#{82201}");
|
|
}
|
|
|
|
if (_FriendEndTime > GlobalData.ServerAnsiTime)
|
|
{
|
|
if (_FriendBtn.interactable)
|
|
_FriendBtn.interactable = false;
|
|
|
|
var remainTime = _FriendEndTime - GlobalData.ServerAnsiTime;
|
|
var remainTimeStr = remainTime > 60 ? "(" + (remainTime / 60).ToString().PadLeft(2, '0') + "m" + (remainTime % 60).ToString().PadLeft(2, '0') + "s" + ")"
|
|
: "(" + (remainTime % 60).ToString().PadLeft(2, '0') + "s" + ")";
|
|
_FriendEndTimeText.text = StrDictionary.GetClientDictionaryString("#{82205}", remainTimeStr);
|
|
}
|
|
else
|
|
{
|
|
if (!_FriendBtn.interactable)
|
|
_FriendBtn.interactable = true;
|
|
_FriendEndTimeText.text = StrDictionary.GetClientDictionaryString("#{82202}");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public void OnToggle(int _Index)
|
|
{
|
|
if (!_IsInitSetting)
|
|
return;
|
|
|
|
if (!_totalToggleList[_Index].isOn)
|
|
{
|
|
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{82206}"), "", delegate ()
|
|
{
|
|
_totalToggleList[_Index].isOn = false;
|
|
|
|
OnToggleOnStateChange();
|
|
UIManager.CloseUI(UIInfo.MessageBox);
|
|
}, delegate ()
|
|
{
|
|
_totalToggleList[_Index].isOn = true;
|
|
UIManager.CloseUI(UIInfo.MessageBox);
|
|
});
|
|
}else
|
|
{
|
|
OnToggleOnStateChange();
|
|
}
|
|
}
|
|
|
|
public void OnToggleOnStateChange()
|
|
{
|
|
List<int> toggleOnList = new List<int>();
|
|
for (int index = 0; index < _totalToggleList.Count; index++)
|
|
{
|
|
//Debug.LogError("_totalToggleList : " + _totalToggleList[index].isOn);
|
|
toggleOnList.Add( _totalToggleList[index].isOn ? 1 : 0);
|
|
}
|
|
|
|
ReqPermissionChange req = new ReqPermissionChange();
|
|
req.nType = toggleOnList;
|
|
req.SendMsg();
|
|
}
|
|
|
|
public void OnCloseBtn()
|
|
{
|
|
this.gameObject.SetActive(false);
|
|
}
|
|
|
|
public void OnInvateBtn(int type)
|
|
{
|
|
if(type == 2 && !GameManager.gameManager.PlayerDataPool.IsHaveGuild())
|
|
{
|
|
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{24986}"));
|
|
return;
|
|
}
|
|
|
|
ReqBanQuetInvate req = new ReqBanQuetInvate();
|
|
req.nInvateType = type;
|
|
req.SendMsg();
|
|
}
|
|
}
|