From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Assets/Scripts/XMainClient/XTitleDocument.cs | 295 +++++++++++++++++++++ 1 file changed, 295 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/XTitleDocument.cs (limited to 'Client/Assets/Scripts/XMainClient/XTitleDocument.cs') diff --git a/Client/Assets/Scripts/XMainClient/XTitleDocument.cs b/Client/Assets/Scripts/XMainClient/XTitleDocument.cs new file mode 100644 index 00000000..66ba5472 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/XTitleDocument.cs @@ -0,0 +1,295 @@ +using System; +using System.Collections.Generic; +using KKSG; +using XMainClient.UI; +using XMainClient.UI.UICommon; +using XUtliPoolLib; + +namespace XMainClient +{ + internal class XTitleDocument : XDocComponent + { + public TitleDlg TitleView { get; set; } + + public static uint TitleMaxLevel { get; private set; } + + public bool bEnableTitleLevelUp + { + get + { + return this.m_enableTitleLevelUp; + } + set + { + this.m_enableTitleLevelUp = value; + XSingleton.singleton.RecalculateRedPointState(XSysDefine.XSys_Title, true); + } + } + + public bool bAvaibleTitleIcon + { + get + { + return XSingleton.singleton.IsSystemOpen(XFastEnumIntEqualityComparer.ToInt(XSysDefine.XSys_Title)); + } + } + + public override uint ID + { + get + { + return XTitleDocument.uuID; + } + } + + public uint CurrentTitleID + { + get + { + return XSingleton.singleton.XPlayerData.TitleID; + } + } + + public TitleTable.RowData CurrentTitle + { + get + { + return XTitleDocument.GetTitle(this.CurrentTitleID); + } + } + + public bool IsMax + { + get + { + return XTitleDocument.TitleMaxLevel <= this.CurrentTitleID; + } + } + + public TitleTable.RowData NextTitle + { + get + { + bool flag = this.CurrentTitleID >= XTitleDocument.TitleMaxLevel; + TitleTable.RowData result; + if (flag) + { + result = null; + } + else + { + result = XTitleDocument.GetTitle(this.CurrentTitleID + 1u); + } + return result; + } + } + + public new static readonly uint uuID = XSingleton.singleton.XHash("XTitleDocument"); + + public static XTableAsyncLoader AsyncLoader = new XTableAsyncLoader(); + + private static TitleTable m_TitleTable = new TitleTable(); + + public static int TITLE_FRAME_RATE = 10; + + private static Dictionary> m_cacheTitles = new Dictionary>(); + + private bool m_enableTitleLevelUp = false; + + public static string GetTitleWithFormat(uint titleID, string name) + { + string text = name; + bool flag = titleID > 0u; + if (flag) + { + TitleTable.RowData title = XTitleDocument.GetTitle(titleID); + bool flag2 = title != null; + if (flag2) + { + text = XSingleton.singleton.StringCombine(XLabelSymbolHelper.FormatAnimation(title.RankAtlas, title.RankIcon, 10), text); + } + } + return text; + } + + public static TitleTable.RowData GetTitle(uint titleID) + { + Dictionary dictionary; + bool flag = XTitleDocument.m_cacheTitles.TryGetValue(XItemDrawerParam.DefaultProfession, out dictionary); + if (flag) + { + TitleTable.RowData result; + bool flag2 = dictionary.TryGetValue(titleID, out result); + if (flag2) + { + return result; + } + } + return null; + } + + public bool TryGetTitle(uint titleID, out TitleTable.RowData rowData) + { + rowData = XTitleDocument.GetTitle(titleID); + return rowData != null; + } + + protected override void OnReconnected(XReconnectedEventArgs arg) + { + } + + public static void Execute(OnLoadedCallback callback = null) + { + XTitleDocument.AsyncLoader.AddTask("Table/TitleTable", XTitleDocument.m_TitleTable, false); + XTitleDocument.AsyncLoader.Execute(callback); + XTitleDocument.m_cacheTitles.Clear(); + } + + public static void OnTableLoaded() + { + int i = 0; + int num = XTitleDocument.m_TitleTable.Table.Length; + while (i < num) + { + Dictionary dictionary; + bool flag = !XTitleDocument.m_cacheTitles.TryGetValue(XTitleDocument.m_TitleTable.Table[i].BasicProfession, out dictionary); + if (flag) + { + dictionary = new Dictionary(); + XTitleDocument.m_cacheTitles.Add(XTitleDocument.m_TitleTable.Table[i].BasicProfession, dictionary); + } + dictionary.Add(XTitleDocument.m_TitleTable.Table[i].RankID, XTitleDocument.m_TitleTable.Table[i]); + XTitleDocument.TitleMaxLevel = Math.Max(XTitleDocument.m_TitleTable.Table[i].RankID, XTitleDocument.TitleMaxLevel); + i++; + } + } + + protected override void EventSubscribe() + { + base.EventSubscribe(); + base.RegisterEvent(XEventDefine.XEvent_VirtualItemChanged, new XComponent.XEventHandler(this.OnVirtualItemChanged)); + base.RegisterEvent(XEventDefine.XEvent_ItemChangeFinished, new XComponent.XEventHandler(this.OnVirtualItemChanged)); + base.RegisterEvent(XEventDefine.XEvent_AttributeChange, new XComponent.XEventHandler(this.OnAttributeChange)); + } + + private bool OnAttributeChange(XEventArgs e) + { + bool flag = !this.bAvaibleTitleIcon; + bool result; + if (flag) + { + result = false; + } + else + { + XAttrChangeEventArgs xattrChangeEventArgs = e as XAttrChangeEventArgs; + bool flag2 = xattrChangeEventArgs.AttrKey == XAttributeDefine.XAttr_POWER_POINT_Basic; + if (flag2) + { + this.RefreshTitleLevelUp(); + } + result = true; + } + return result; + } + + private bool OnVirtualItemChanged(XEventArgs args) + { + bool flag = !this.bAvaibleTitleIcon; + bool result; + if (flag) + { + result = false; + } + else + { + this.RefreshTitleLevelUp(); + result = true; + } + return result; + } + + public void RefreshTitleLevelUp() + { + TitleTable.RowData nextTitle = this.NextTitle; + bool bEnableTitleLevelUp = true; + bool flag = nextTitle == null || nextTitle.NeedPowerPoint > XSingleton.singleton.XPlayerData.GetAttr(XAttributeDefine.XAttr_POWER_POINT_Basic); + if (flag) + { + bEnableTitleLevelUp = false; + } + else + { + int i = 0; + int count = nextTitle.NeedItem.Count; + while (i < count) + { + int num = (int)XBagDocument.BagDoc.GetItemCount((int)nextTitle.NeedItem[i, 0]); + bool flag2 = (long)num < (long)((ulong)nextTitle.NeedItem[i, 1]); + if (flag2) + { + bEnableTitleLevelUp = false; + break; + } + i++; + } + } + this.bEnableTitleLevelUp = bEnableTitleLevelUp; + bool flag3 = this.TitleView != null && this.TitleView.IsVisible(); + if (flag3) + { + this.TitleView.Refresh(); + } + } + + public void GetTitleLevelUp() + { + bool flag = !this.bEnableTitleLevelUp; + if (!flag) + { + RpcC2G_TitleLevelUp rpc = new RpcC2G_TitleLevelUp(); + XSingleton.singleton.Send(rpc); + } + } + + public void OnGetTitleLevelUp(TitleLevelUpRes oRes) + { + bool flag = oRes.errorcode > ErrorCode.ERR_SUCCESS; + if (flag) + { + XSingleton.singleton.ShowSystemTip(oRes.errorcode, "fece00"); + } + else + { + XSingleton.singleton.XPlayerData.TitleID = oRes.titleID; + XTitleInfoChange @event = XEventPool.GetEvent(); + @event.Firer = XSingleton.singleton.Player; + XSingleton.singleton.FireEvent(@event); + this.RefreshTitleLevelUp(); + bool flag2 = oRes.titleID > 0u && !DlgBase.singleton.IsVisible(); + if (flag2) + { + DlgBase.singleton.SetVisibleWithAnimation(true, null); + } + } + } + + public void TitleLevelChange(uint titleID) + { + bool flag = XSingleton.singleton.XPlayerData.TitleID != titleID; + if (flag) + { + XSingleton.singleton.XPlayerData.TitleID = titleID; + XTitleInfoChange @event = XEventPool.GetEvent(); + @event.Firer = XSingleton.singleton.Player; + XSingleton.singleton.FireEvent(@event); + this.RefreshTitleLevelUp(); + bool flag2 = titleID > 0u && !DlgBase.singleton.IsVisible(); + if (flag2) + { + DlgBase.singleton.SetVisibleWithAnimation(true, null); + } + } + } + } +} -- cgit v1.1-26-g67d0