using System; using System.Collections.Generic; using KKSG; using XMainClient.UI; using XMainClient.UI.UICommon; using XUtliPoolLib; namespace XMainClient { internal class XCampDuelDocument : XDocComponent { public override uint ID { get { return XCampDuelDocument.uuID; } } public static XCampDuelDocument Doc { get { return XSingleton.singleton.Doc.GetXComponent(XCampDuelDocument.uuID) as XCampDuelDocument; } } public uint TaskID { get { return uint.Parse(XSingleton.singleton.GetValue("CampDuelTaskID")); } } public int ConfirmItemID { get { return int.Parse(XSingleton.singleton.GetValue("CampDuelItemId")); } } public SuperActivityTime.RowData ActInfo { get { bool flag = this._actInfo != null; SuperActivityTime.RowData actInfo; if (flag) { actInfo = this._actInfo; } else { this._actInfo = XTempActivityDocument.Doc.GetDataBySystemID((uint)this.systemID); bool flag2 = this._actInfo == null; if (flag2) { XSingleton.singleton.AddErrorLog("SuperActivityTime SystemID:" + this.systemID + "No Find", null, null, null, null, null); } actInfo = this._actInfo; } return actInfo; } } public new static readonly uint uuID = XSingleton.singleton.XHash("XCampDuelDocument"); public static XTableAsyncLoader AsyncLoader = new XTableAsyncLoader(); private static CampDuelPointReward _PointRewardTable = new CampDuelPointReward(); private static CampDuelRankReward _RankRewardTable = new CampDuelRankReward(); public int systemID = XFastEnumIntEqualityComparer.ToInt(XSysDefine.XSys_CampDuel); public XCampDuelMainHandler handler; private bool hasData = false; public int campID; public int aheadCampID; public int point; public int curStage; public int FreeCourageCount; public int DragonCoinCourageCount; public int FreeCourageMAX = int.Parse(XSingleton.singleton.GetValue("CampDuelFreeInspireCount")); public string[] DragonCoinCourageCost = XSingleton.singleton.GetValue("CampDuelMoneyInspireCount").Split(new char[] { '|' }); private SuperActivityTime.RowData _actInfo = null; private List _PointRewardList = new List(); private List _RankRewardList = new List(); public static void Execute(OnLoadedCallback callback = null) { XCampDuelDocument.AsyncLoader.AddTask("Table/CampDuelPointReward", XCampDuelDocument._PointRewardTable, false); XCampDuelDocument.AsyncLoader.AddTask("Table/CampDuelRankReward", XCampDuelDocument._RankRewardTable, false); XCampDuelDocument.AsyncLoader.Execute(callback); } public override void OnEnterSceneFinally() { bool flag = XSingleton.singleton.SceneType == SceneType.SCENE_HALL && !this.hasData && XSingleton.singleton.IsSystemOpened(XSysDefine.XSys_CampDuel); if (flag) { this.ReqCampDuel(1u, 0u); } } protected override void OnReconnected(XReconnectedEventArgs arg) { } protected override void EventSubscribe() { base.EventSubscribe(); base.RegisterEvent(XEventDefine.XEvent_TaskStateChange, new XComponent.XEventHandler(this.OnTaskStateChanged)); } private bool OnTaskStateChanged(XEventArgs e) { XTaskStatusChangeArgs xtaskStatusChangeArgs = e as XTaskStatusChangeArgs; bool flag = xtaskStatusChangeArgs.status == TaskStatus.TaskStatus_Taked; if (flag) { uint id = xtaskStatusChangeArgs.id; TaskTableNew.RowData taskData = XTaskDocument.GetTaskData(id); bool flag2 = taskData != null; if (flag2) { bool flag3 = taskData.TaskID == this.TaskID; if (flag3) { DlgBase.singleton.Show(XSysDefine.XSys_CampDuel, false); } } } return true; } public List GetPointRewardList(int campID) { this._PointRewardList.Clear(); for (int i = 0; i < XCampDuelDocument._PointRewardTable.Table.Length; i++) { bool flag = campID == XCampDuelDocument._PointRewardTable.Table[i].CampID; if (flag) { this._PointRewardList.Add(XCampDuelDocument._PointRewardTable.Table[i]); } } return this._PointRewardList; } public CampDuelPointReward.RowData GetPointReward(int point) { CampDuelPointReward.RowData result = null; for (int i = 0; i < XCampDuelDocument._PointRewardTable.Table.Length; i++) { bool flag = this.campID == XCampDuelDocument._PointRewardTable.Table[i].CampID && point >= XCampDuelDocument._PointRewardTable.Table[i].Point; if (flag) { result = XCampDuelDocument._PointRewardTable.Table[i]; } } return result; } public CampDuelPointReward.RowData GetNextPointReward(int point) { for (int i = 0; i < XCampDuelDocument._PointRewardTable.Table.Length; i++) { bool flag = this.campID == XCampDuelDocument._PointRewardTable.Table[i].CampID && point < XCampDuelDocument._PointRewardTable.Table[i].Point; if (flag) { return XCampDuelDocument._PointRewardTable.Table[i]; } } return null; } public List GetRankRewardList() { this._RankRewardList.Clear(); for (int i = 0; i < XCampDuelDocument._RankRewardTable.Table.Length; i++) { this._RankRewardList.Add(XCampDuelDocument._RankRewardTable.Table[i]); } return this._RankRewardList; } public void ReqCampDuel(uint type, uint arg = 0u) { RpcC2G_CampDuelActivityOperation rpcC2G_CampDuelActivityOperation = new RpcC2G_CampDuelActivityOperation(); rpcC2G_CampDuelActivityOperation.oArg.type = type; rpcC2G_CampDuelActivityOperation.oArg.arg = arg; XSingleton.singleton.Send(rpcC2G_CampDuelActivityOperation); } public void SetCampDuelData(CampDuelActivityOperationArg oArg, CampDuelActivityOperationRes oRes) { bool flag = oRes.data == null; if (!flag) { bool flag2 = oArg.type == 1u; if (flag2) { this.aheadCampID = (int)oRes.precedeCampID; this.hasData = true; } bool flag3 = oArg.type == 3u || oArg.type == 4u || oArg.type == 5u; if (flag3) { CampDuelPointReward.RowData pointReward = this.GetPointReward(this.point); CampDuelPointReward.RowData pointReward2 = this.GetPointReward((int)oRes.data.point); bool flag4 = (pointReward != null && pointReward2 != null && pointReward.Point != pointReward2.Point) || (pointReward == null && pointReward2 != null); if (flag4) { bool flag5 = this.handler != null; if (flag5) { XSingleton.singleton.AddGreenLog("PlayBoxUpFx", null, null, null, null, null); this.handler.PlayBoxUpFx(); } } } bool flag6 = oArg.type == 3u; if (flag6) { bool flag7 = this.handler != null; if (flag7) { XSingleton.singleton.AddGreenLog("PlayNPCFx", null, null, null, null, null); this.handler.PlayNPCFx(); this.handler.ShowBlah(); } } bool flag8 = (long)this.point != (long)((ulong)oRes.data.point); if (flag8) { bool flag9 = this.handler != null; if (flag9) { this.handler.AddNumPlayTween((int)(oRes.data.point - (uint)this.point)); } } this.campID = (int)oRes.data.campid; this.point = (int)oRes.data.point; this.FreeCourageCount = (int)oRes.data.freeInspireCount; this.DragonCoinCourageCount = (int)oRes.data.dragonCoinInspireCount; bool flag10 = this.handler != null; if (flag10) { this.handler.ShowUI(); } } } public bool IsRedPoint() { return this.FreeCourageCount != 0 && this.curStage == 1; } public void RecordActivityPastTime(uint time, SeqListRef timestage) { int num = (int)(time / 3600u); this.curStage = (((long)num < (long)((ulong)timestage[0, 0])) ? 1 : 2); XSingleton.singleton.AddGreenLog("time:" + num, null, null, null, null, null); } } }