From 5c70a5872042e3011b992715f6e1cce367a537ab Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期一, 08 十月 2018 14:44:26 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/Rune/RunePackCell.cs |   67 +++++++++++++++++++++++++++------
 1 files changed, 55 insertions(+), 12 deletions(-)

diff --git a/System/Rune/RunePackCell.cs b/System/Rune/RunePackCell.cs
index 609aaa8..0aec98f 100644
--- a/System/Rune/RunePackCell.cs
+++ b/System/Rune/RunePackCell.cs
@@ -79,12 +79,32 @@
                 MessageWin.Inst.ShowFixedTip(Language.Get("L1061"));
                 return;
             }
-            if (model.IsSameInHoleRune(_rune.id, model.sltRuneHole))
-            {
-                MessageWin.Inst.ShowFixedTip(Language.Get("L1078"));
-                return;
-            }
             var sltHoleRune = model.GetHoleRune(model.sltRuneHole);
+            bool switchOtherSameHole = false;
+            List<int> sameHoles = new List<int>();
+            if (sltHoleRune == null || runeComposeModel.m_RuneBothPropertys.Contains(sltHoleRune.id)
+                || !runeComposeModel.m_RuneBothPropertys.Contains(_rune.id))
+            {
+                if (model.IsSameInHoleRune(_rune.id, model.sltRuneHole))
+                {
+                    MessageWin.Inst.ShowFixedTip(Language.Get("L1078"));
+                    return;
+                }
+            }
+            else
+            {
+                model.IsSameRune(_rune.id, ref sameHoles);
+                if (sameHoles.Count > 0 && !sameHoles.Contains(model.sltRuneHole))
+                {
+                    MessageWin.Inst.ShowFixedTip(Language.Get("L1078"));
+                    return;
+                }
+                if (sameHoles.Count > 1)
+                {
+                    switchOtherSameHole = true;
+                }
+            }
+
             if (runeComposeModel.m_RuneBothPropertys.Contains(_rune.id)
                 && model.GetDoublePropLimitCount() <= model.GetCurrentDoublePropCount()
                 && (sltHoleRune == null || !runeComposeModel.m_RuneBothPropertys.Contains(sltHoleRune.id)))
@@ -93,13 +113,36 @@
                 SysNotifyMgr.Instance.ShowTip("RuneGridUnEnough", _count);
                 return;
             }
-            C073D_tagCPackItemExchange runeInlayPack = new C073D_tagCPackItemExchange();
-            runeInlayPack.SrcBackpack = (byte)_rune.packtype;
-            runeInlayPack.SrcIndex = (ushort)_rune.index;
-            runeInlayPack.DesBackPack = (int)PackType.rptInterimPack;
-            runeInlayPack.DestIndex = (ushort)model.sltRuneHole;
-            GameNetSystem.Instance.SendInfo(runeInlayPack);
-            WindowCenter.Instance.CloseImmediately<RunePackWin>();
+
+            if (switchOtherSameHole)
+            {
+                var otherSameHole = sameHoles[0] == model.sltRuneHole ? sameHoles[1] : sameHoles[0];
+                var otherRune = model.GetHoleRune(otherSameHole);
+                ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("SwitchDoublePropertyRune"), (bool isOk) =>
+                  {
+                      if (isOk)
+                      {
+                          SwitchRune(otherRune.packtype, otherSameHole, _rune.packtype, 0);
+                          SwitchRune(_rune.packtype, _rune.index, (int)PackType.rptInterimPack, model.sltRuneHole);
+                          WindowCenter.Instance.CloseImmediately<RunePackWin>();
+                      }
+                  });
+            }
+            else
+            {
+                SwitchRune(_rune.packtype, _rune.index, (int)PackType.rptInterimPack, model.sltRuneHole);
+                WindowCenter.Instance.CloseImmediately<RunePackWin>();
+            }
+        }
+
+        void SwitchRune(int srcpackType,int scrIndex,int destpackType,int destIndex)
+        {
+            C073D_tagCPackItemExchange pak = new C073D_tagCPackItemExchange();
+            pak.SrcBackpack = (byte)srcpackType;
+            pak.SrcIndex = (ushort)scrIndex;
+            pak.DesBackPack = (byte)destpackType;
+            pak.DestIndex = (ushort)destIndex;
+            GameNetSystem.Instance.SendInfo(pak);
         }
     }
 }

--
Gitblit v1.8.0