summaryrefslogtreecommitdiff
path: root/Client/Assets/Scripts/XMainClient/ArtifactFuseDocument.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assets/Scripts/XMainClient/ArtifactFuseDocument.cs')
-rw-r--r--Client/Assets/Scripts/XMainClient/ArtifactFuseDocument.cs287
1 files changed, 287 insertions, 0 deletions
diff --git a/Client/Assets/Scripts/XMainClient/ArtifactFuseDocument.cs b/Client/Assets/Scripts/XMainClient/ArtifactFuseDocument.cs
new file mode 100644
index 00000000..0de1dda5
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/ArtifactFuseDocument.cs
@@ -0,0 +1,287 @@
+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<XGame>.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<XGlobalConfig>.singleton.GetInt("FuseStoneItemId");
+ }
+ return this.m_fuseStoneItemId;
+ }
+ }
+
+ public ulong LastSelectUid
+ {
+ get
+ {
+ return this.m_lastSelectUid;
+ }
+ }
+
+ public new static readonly uint uuID = XSingleton<XCommon>.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<UiUtility>.singleton.ShowSystemTip(XStringDefineProxy.GetString("EquipedArtifactCannotFuse"), "fece00");
+ return;
+ }
+ XItem itemByUID2 = XBagDocument.BagDoc.GetItemByUID(uid);
+ bool flag4 = itemByUID2 == null;
+ if (flag4)
+ {
+ XSingleton<XDebug>.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<UiUtility>.singleton.ShowSystemTip(XStringDefineProxy.GetString("FuseNotTips"), "fece00");
+ return;
+ }
+ ArtifactListTable.RowData artifactListRowData = ArtifactDocument.GetArtifactListRowData((uint)itemByUID.itemID);
+ bool flag7 = artifactListRowData == null;
+ if (flag7)
+ {
+ XSingleton<XDebug>.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<XDebug>.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<UiUtility>.singleton.ShowSystemTip(XStringDefineProxy.GetString("FuseNotTips"), "fece00");
+ return;
+ }
+ bool flag10 = this.m_fusedUid > 0UL;
+ if (flag10)
+ {
+ XSingleton<UiUtility>.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<XDebug>.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<XClientNetwork>.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<UiUtility>.singleton.ShowSystemTip(oRes.errorcode, "fece00");
+ }
+ }
+ else
+ {
+ this.ResetSelectUid(true, FuseEffectType.Sucess);
+ }
+ }
+
+ public void ResetSetting()
+ {
+ DlgBase<ModalDlg, ModalDlgBehaviour>.singleton.ForceSetTipsValue(XTempTipDefine.OD_FUSE_CONFIRM, false);
+ XOptionsDocument specificDocument = XDocuments.GetSpecificDocument<XOptionsDocument>(XOptionsDocument.uuID);
+ specificDocument.SetValue(XOptionsDefine.OD_NO_FUSE_CONFIRM, 0, true);
+ }
+ }
+}