using System; using XMainClient.UI; using XMainClient.UI.UICommon; using XUtliPoolLib; namespace XMainClient { internal class XGuildRelaxGameDocument : XDocComponent { public override uint ID { get { return XGuildRelaxGameDocument.uuID; } } public uint GuildVoiceQAState { get { return this._guildVoiceQAState; } } public float GuildVoiceQAWaitTime { get { return this._guildVoiceQAWaitTime; } } public bool RedPoint { get; set; } public new static readonly uint uuID = XSingleton.singleton.XHash("GuildRelaxGameDocument"); public static XTableAsyncLoader AsyncLoader = new XTableAsyncLoader(); public static GuildRelaxGameList GameList = new GuildRelaxGameList(); private uint _guildVoiceQAState = 0u; private float _guildVoiceQAWaitTime = 0f; public static void Execute(OnLoadedCallback callback = null) { XGuildRelaxGameDocument.AsyncLoader.AddTask("Table/GuildRelaxGameList", XGuildRelaxGameDocument.GameList, false); XGuildRelaxGameDocument.AsyncLoader.Execute(callback); } protected override void EventSubscribe() { base.EventSubscribe(); base.RegisterEvent(XEventDefine.XEvent_InGuildStateChanged, new XComponent.XEventHandler(this.GuildStatusChanged)); } public bool GuildStatusChanged(XEventArgs args) { this.RefreshRedPoint(); return true; } public void OpenGuildVoiceQuery() { RpcC2G_OpenGuildQAReq rpc = new RpcC2G_OpenGuildQAReq(); XSingleton.singleton.Send(rpc); } public void GetGuildVoiceInfo() { RpcC2G_GetGuildQADataReq rpc = new RpcC2G_GetGuildQADataReq(); XSingleton.singleton.Send(rpc); } public void JoinGuildVoiceInfo() { XVoiceQADocument specificDocument = XDocuments.GetSpecificDocument(XVoiceQADocument.uuID); bool isVoiceQAIng = specificDocument.IsVoiceQAIng; if (isVoiceQAIng) { DlgBase.singleton.SetVisible(true, true); } else { specificDocument.VoiceQAJoinChoose(true, 3u); } } public void SetGuildVoiceInfo(uint state, float time) { this._guildVoiceQAState = state; XSingleton.singleton.AddLog(string.Format("Get guild voice open state = {0} by server", state), null, null, null, null, null, XDebugColor.XDebug_None); this._guildVoiceQAWaitTime = time; bool flag = DlgBase.singleton.IsVisible(); if (flag) { DlgBase.singleton.Refresh(XSysDefine.XSys_GuildRelax_VoiceQA); DlgBase.singleton.RefreshRedPoint(XSysDefine.XSys_GuildRelax_VoiceQA); } } public void RefreshRedPoint() { XGuildJokerDocument specificDocument = XDocuments.GetSpecificDocument(XGuildJokerDocument.uuID); XGuildDocument specificDocument2 = XDocuments.GetSpecificDocument(XGuildDocument.uuID); this.RedPoint = false; bool flag = !specificDocument2.bInGuild; if (flag) { XSingleton.singleton.RecalculateRedPointState(XSysDefine.XSys_GuildRelax_Joker, true); } else { this.RedPoint = (specificDocument.GameCount > 0); XSingleton.singleton.RecalculateRedPointState(XSysDefine.XSys_GuildRelax_Joker, true); bool flag2 = !DlgBase.singleton.IsVisible(); if (!flag2) { DlgBase.singleton.RefreshRedPoint(XSysDefine.XSys_GuildRelax_VoiceQA); } } } protected override void OnReconnected(XReconnectedEventArgs arg) { } } }