using System; using KKSG; using XMainClient.UI; using XMainClient.UI.UICommon; using XUtliPoolLib; namespace XMainClient { internal class ArtifactFuseDocument : XDocComponent { public override uint ID { get { return ArtifactFuseDocument.uuID; } } public static ArtifactFuseDocument Doc { get { return XSingleton.singleton.Doc.GetXComponent(ArtifactFuseDocument.uuID) as ArtifactFuseDocument; } } public ulong FuseUid { get { return this.m_fuseUid; } } public ulong FusedUid { get { return this.m_fusedUid; } } public int FuseStoneItemId { get { bool flag = this.m_fuseStoneItemId == -1; if (flag) { this.m_fuseStoneItemId = XSingleton.singleton.GetInt("FuseStoneItemId"); } return this.m_fuseStoneItemId; } } public ulong LastSelectUid { get { return this.m_lastSelectUid; } } public new static readonly uint uuID = XSingleton.singleton.XHash("ArtifactFuseDocument"); public static XTableAsyncLoader AsyncLoader = new XTableAsyncLoader(); private ulong m_fuseUid = 0UL; private ulong m_fusedUid = 0UL; private int m_fuseStoneItemId = -1; private ulong m_lastSelectUid = 0UL; public bool UseFuseStone = true; public ArtifactFuseHandler Handler; public static void Execute(OnLoadedCallback callback = null) { ArtifactFuseDocument.AsyncLoader.Execute(callback); } public override void OnAttachToHost(XObject host) { base.OnAttachToHost(host); } protected override void EventSubscribe() { base.EventSubscribe(); } public override void OnDetachFromHost() { base.OnDetachFromHost(); } protected override void OnReconnected(XReconnectedEventArgs arg) { bool flag = this.m_fuseUid > 0UL; if (flag) { XItem itemByUID = XBagDocument.BagDoc.GetItemByUID(this.m_fuseUid); bool flag2 = itemByUID == null; if (flag2) { this.m_fuseUid = 0UL; } } bool flag3 = this.m_fusedUid > 0UL; if (flag3) { XItem itemByUID2 = XBagDocument.BagDoc.GetItemByUID(this.m_fusedUid); bool flag4 = itemByUID2 == null; if (flag4) { this.m_fusedUid = 0UL; } } this.RefreshUi(FuseEffectType.None); } public override void OnEnterSceneFinally() { base.OnEnterSceneFinally(); } public void RefreshUi(FuseEffectType type = FuseEffectType.None) { bool flag = this.Handler != null && this.Handler.IsVisible(); if (flag) { this.Handler.RefreshUi(type); } ArtifactDeityStoveDocument.Doc.RefreshUi(); } public bool IsSelectUid(ulong uid) { return this.m_fusedUid == uid || this.m_fuseUid == uid; } public void ResetSelectUid(bool isRefeshUi, FuseEffectType type = FuseEffectType.None) { this.m_fuseUid = 0UL; this.m_fusedUid = 0UL; if (isRefeshUi) { this.RefreshUi(type); } } public void AddItem(ulong uid) { bool flag = this.m_fuseUid == 0UL; if (flag) { this.m_fuseUid = uid; } else { XItem itemByUID = XBagDocument.BagDoc.GetItemByUID(this.m_fuseUid); bool flag2 = itemByUID == null; if (flag2) { this.m_fuseUid = uid; } else { bool flag3 = XBagDocument.BagDoc.ArtifactBag.HasItem(uid); if (flag3) { XSingleton.singleton.ShowSystemTip(XStringDefineProxy.GetString("EquipedArtifactCannotFuse"), "fece00"); return; } XItem itemByUID2 = XBagDocument.BagDoc.GetItemByUID(uid); bool flag4 = itemByUID2 == null; if (flag4) { XSingleton.singleton.AddErrorLog(string.Format("not find this uid = {0}", uid), null, null, null, null, null); return; } bool flag5 = itemByUID.itemConf == null || itemByUID2.itemConf == null; if (flag5) { return; } bool flag6 = itemByUID.itemConf.ItemQuality != itemByUID2.itemConf.ItemQuality; if (flag6) { XSingleton.singleton.ShowSystemTip(XStringDefineProxy.GetString("FuseNotTips"), "fece00"); return; } ArtifactListTable.RowData artifactListRowData = ArtifactDocument.GetArtifactListRowData((uint)itemByUID.itemID); bool flag7 = artifactListRowData == null; if (flag7) { XSingleton.singleton.AddErrorLog(string.Format("artifactlist not find this itemId = {0}", itemByUID.itemID), null, null, null, null, null); return; } ArtifactListTable.RowData artifactListRowData2 = ArtifactDocument.GetArtifactListRowData((uint)itemByUID2.itemID); bool flag8 = artifactListRowData2 == null; if (flag8) { XSingleton.singleton.AddErrorLog(string.Format("artifactlist not find this itemId = {0}", itemByUID2.itemID), null, null, null, null, null); return; } bool flag9 = artifactListRowData.ArtifactPos != artifactListRowData2.ArtifactPos; if (flag9) { XSingleton.singleton.ShowSystemTip(XStringDefineProxy.GetString("FuseNotTips"), "fece00"); return; } bool flag10 = this.m_fusedUid > 0UL; if (flag10) { XSingleton.singleton.ShowSystemTip(XStringDefineProxy.GetString("FuseRepleaseSuc"), "fece00"); } this.m_fusedUid = uid; } } this.RefreshUi(FuseEffectType.None); } public void TakeOut(ulong uid) { bool flag = uid == this.m_fuseUid; if (flag) { this.m_fuseUid = 0UL; } else { bool flag2 = uid == this.m_fusedUid; if (!flag2) { XSingleton.singleton.AddGreenLog("this item not put in uid = " + uid.ToString(), null, null, null, null, null); return; } this.m_fusedUid = 0UL; } this.RefreshUi(FuseEffectType.None); } public void ReqFuse() { this.m_lastSelectUid = this.m_fuseUid; RpcC2G_ArtifactDeityStoveOp rpcC2G_ArtifactDeityStoveOp = new RpcC2G_ArtifactDeityStoveOp(); rpcC2G_ArtifactDeityStoveOp.oArg.type = ArtifactDeityStoveOpType.ArtifactDeityStove_Fuse; rpcC2G_ArtifactDeityStoveOp.oArg.uid1 = this.m_fuseUid; rpcC2G_ArtifactDeityStoveOp.oArg.uid2 = this.m_fusedUid; rpcC2G_ArtifactDeityStoveOp.oArg.isUsedStone = this.UseFuseStone; XSingleton.singleton.Send(rpcC2G_ArtifactDeityStoveOp); } public void OnReqFuseBack(ArtifactDeityStoveOpRes oRes) { bool flag = oRes.errorcode > ErrorCode.ERR_SUCCESS; if (flag) { bool flag2 = oRes.errorcode == ErrorCode.ERR_ARTIFACT_FUSEFAILED; if (flag2) { this.m_fusedUid = 0UL; this.RefreshUi(FuseEffectType.Fail); } else { XSingleton.singleton.ShowSystemTip(oRes.errorcode, "fece00"); } } else { this.ResetSelectUid(true, FuseEffectType.Sucess); } } public void ResetSetting() { DlgBase.singleton.ForceSetTipsValue(XTempTipDefine.OD_FUSE_CONFIRM, false); XOptionsDocument specificDocument = XDocuments.GetSpecificDocument(XOptionsDocument.uuID); specificDocument.SetValue(XOptionsDefine.OD_NO_FUSE_CONFIRM, 0, true); } } }