From 27e508f58e143c1972c221578b5c9952fa018f54 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期二, 12 五月 2026 19:17:59 +0800
Subject: [PATCH] 492 武将登场和武将返场 增加元宝招募选项

---
 Main/System/HeroDebut/HeroDebutCallButton.cs   |   39 +++++++++++--
 Main/System/HeroReturn/HeroReturnCallWin.cs    |   35 +++++++++++
 Main/System/HeroDebut/HeroDebutCallWin.cs      |   37 ++++++++++++
 Main/System/HeroDebut/HeroDebutManager.cs      |   15 +++++
 Main/System/HeroReturn/HeroReturnCallButton.cs |   39 +++++++++++--
 Main/System/HeroReturn/HeroReturnManager.cs    |   15 +++++
 6 files changed, 167 insertions(+), 13 deletions(-)

diff --git a/Main/System/HeroDebut/HeroDebutCallButton.cs b/Main/System/HeroDebut/HeroDebutCallButton.cs
index 36c203b..e30c548 100644
--- a/Main/System/HeroDebut/HeroDebutCallButton.cs
+++ b/Main/System/HeroDebut/HeroDebutCallButton.cs
@@ -40,14 +40,41 @@
         needCostItemCnt = treasureSetConfig.CostItemCountList[index];
         hasItemCnt = PackManager.Instance.GetItemCountByID(PackType.Item, treasureSetConfig.CostItemID);
 
-        // 鐗╁搧涓嶈冻 && 娌¤秴璐у竵鎷涘嫙娆℃暟涓婇檺 
-        if (hasItemCnt < needCostItemCnt &&
-            nowMoneyCnt + treasureCnt <= dailyMaxCountMoney)
+        // 鍐呴儴璇诲彇璐у竵鎷涘嫙寮�鍏崇姸鎬�
+        bool isMoneyToggleOn = false;
+        var act = manager.GetOperationHeroAppearInfo();
+        if (act != null)
         {
-            DisplayByMoney(treasureSetConfig.CostMoneyType, needCostMoneyCnt, moneyCount);
-            return;
+            var config = ActHeroAppearConfig.Get(act.CfgID);
+            if (config != null)
+            {
+                isMoneyToggleOn = manager.LoadCallMoneyToggleData(config.CfgID, act.startDate, act.endDate);
+            }
         }
-        DisplayByItem(treasureSetConfig.CostItemID, treasureCnt);
+
+        if (isMoneyToggleOn)
+        {
+            // 鍕鹃�夛細璐у竵浼樺厛锛屾病瓒呮鏁板氨鐢ㄨ揣甯�
+            if (nowMoneyCnt + treasureCnt <= dailyMaxCountMoney)
+            {
+                DisplayByMoney(treasureSetConfig.CostMoneyType, needCostMoneyCnt, moneyCount);
+            }
+            else
+            {
+                DisplayByItem(treasureSetConfig.CostItemID, treasureCnt);
+            }
+        }
+        else
+        {
+            // 娌″嬀閫夛細淇濇寔鍘熼�昏緫
+            if (hasItemCnt < needCostItemCnt &&
+                nowMoneyCnt + treasureCnt <= dailyMaxCountMoney)
+            {
+                DisplayByMoney(treasureSetConfig.CostMoneyType, needCostMoneyCnt, moneyCount);
+                return;
+            }
+            DisplayByItem(treasureSetConfig.CostItemID, treasureCnt);
+        }
     }
 
     void DisplayByMoney(int moneyType, long needCostMoneyCnt, long moneyCount)
diff --git a/Main/System/HeroDebut/HeroDebutCallWin.cs b/Main/System/HeroDebut/HeroDebutCallWin.cs
index 637b9f3..fc551a0 100644
--- a/Main/System/HeroDebut/HeroDebutCallWin.cs
+++ b/Main/System/HeroDebut/HeroDebutCallWin.cs
@@ -12,8 +12,10 @@
     [SerializeField] UIEffectPlayer changeUIEffect;
 
     [SerializeField] OwnItemCell ownItemCell;
-    [SerializeField] ButtonEx closeBtn;
     [SerializeField] Toggle skipToggle;
+    [SerializeField] Toggle moneyToggle;
+    [SerializeField] ButtonEx moneyToggleTipButton;
+
     [SerializeField] HeroDebutCallButton xbButton1;
     [SerializeField] HeroDebutCallButton xbButton10;
     [SerializeField] TextEx resMoneyCallCntText;
@@ -62,6 +64,30 @@
         skipToggle.AddListener((value) =>
         {
             manager.SaveCallSkipData(config.CfgID, act.startDate, act.endDate, value);
+        });
+        moneyToggle.AddListener((value) =>
+        {
+            if (value)
+            {
+                int treasureType = config.ActTreasureType;
+                var info = HappyXBModel.Instance.GetXBInfoByType(treasureType);
+                var treasureSetConfig = TreasureSetConfig.Get(treasureType);
+                if (info != null && treasureSetConfig != null &&
+                    info.treasureCountTodayGold >= treasureSetConfig.DailyMaxCountMoney)
+                {
+                    SysNotifyMgr.Instance.ShowTip("CallToggleErr1");
+                    moneyToggle.SetIsOnWithoutNotify(false);
+                    return;
+                }
+            }
+            manager.SaveCallMoneyToggleData(config.CfgID, act.startDate, act.endDate, value);
+            Display();
+        });
+        moneyToggleTipButton.AddListener(() =>
+        {
+            SmallTipWin.showText = Language.Get("CallTip01");
+            SmallTipWin.worldPos = moneyToggleTipButton.transform.position;
+            UIManager.Instance.OpenWindow<SmallTipWin>();
         });
     }
 
@@ -260,6 +286,15 @@
         ownItemCell.itemID = treasureSetConfig.CostItemID;
         skipToggle.isOn = manager.LoadCallSkipData(config.CfgID, act.startDate, act.endDate);
 
+        // moneyToggle锛氬姞杞藉瓨妗o紙涓嶈Е鍙戠洃鍚櫒锛夛紝娆℃暟婊℃椂寮哄埗鍙栨秷
+        bool savedToggle = manager.LoadCallMoneyToggleData(config.CfgID, act.startDate, act.endDate);
+        if (xbTypeInfo.treasureCountTodayGold >= treasureSetConfig.DailyMaxCountMoney)
+        {
+            savedToggle = false;
+            manager.SaveCallMoneyToggleData(config.CfgID, act.startDate, act.endDate, false);
+        }
+        moneyToggle.SetIsOnWithoutNotify(savedToggle);
+
         xbButton1.Display(config.ActTreasureType, 0);
         xbButton10.Display(config.ActTreasureType, 1);
         resMoneyCallCntText.text = Language.Get("HeroDebut24", Mathf.Max(treasureSetConfig.DailyMaxCountMoney - xbTypeInfo.treasureCountTodayGold, 0));
diff --git a/Main/System/HeroDebut/HeroDebutManager.cs b/Main/System/HeroDebut/HeroDebutManager.cs
index 5f4c475..0b7f6b9 100644
--- a/Main/System/HeroDebut/HeroDebutManager.cs
+++ b/Main/System/HeroDebut/HeroDebutManager.cs
@@ -756,6 +756,21 @@
         LocalSave.SetBool(GetCallSkipKey(cfgID, startDate, endDate), value);
     }
 
+    private string GetCallMoneyToggleKey(int cfgID, OperationDate startDate, OperationDate endDate)
+    {
+        return string.Concat("HeroDebutManager_CallMoneyToggle_", cfgID, "_", ToInt(startDate), "_", ToInt(endDate), "_", PlayerDatas.Instance.PlayerId);
+    }
+
+    public bool LoadCallMoneyToggleData(int cfgID, OperationDate startDate, OperationDate endDate)
+    {
+        return LocalSave.GetBool(GetCallMoneyToggleKey(cfgID, startDate, endDate));
+    }
+
+    public void SaveCallMoneyToggleData(int cfgID, OperationDate startDate, OperationDate endDate, bool value)
+    {
+        LocalSave.SetBool(GetCallMoneyToggleKey(cfgID, startDate, endDate), value);
+    }
+
     /// <summary>
     /// 褰撳墠鎷涘嫙閫変腑鐨勬灏咺D
     /// </summary>
diff --git a/Main/System/HeroReturn/HeroReturnCallButton.cs b/Main/System/HeroReturn/HeroReturnCallButton.cs
index fdd1419..637f29d 100644
--- a/Main/System/HeroReturn/HeroReturnCallButton.cs
+++ b/Main/System/HeroReturn/HeroReturnCallButton.cs
@@ -40,14 +40,41 @@
         needCostItemCnt = treasureSetConfig.CostItemCountList[index];
         hasItemCnt = PackManager.Instance.GetItemCountByID(PackType.Item, treasureSetConfig.CostItemID);
 
-        // 鐗╁搧涓嶈冻 && 娌¤秴璐у竵鎷涘嫙娆℃暟涓婇檺 
-        if (hasItemCnt < needCostItemCnt &&
-            nowMoneyCnt + treasureCnt <= dailyMaxCountMoney)
+        // 鍐呴儴璇诲彇璐у竵鎷涘嫙寮�鍏崇姸鎬�
+        bool isMoneyToggleOn = false;
+        var act = manager.GetOperationHeroAppearInfo();
+        if (act != null)
         {
-            DisplayByMoney(treasureSetConfig.CostMoneyType, needCostMoneyCnt, moneyCount);
-            return;
+            var config = ActHeroAppearConfig.Get(act.CfgID);
+            if (config != null)
+            {
+                isMoneyToggleOn = manager.LoadCallMoneyToggleData(config.CfgID, act.startDate, act.endDate);
+            }
         }
-        DisplayByItem(treasureSetConfig.CostItemID, treasureCnt);
+
+        if (isMoneyToggleOn)
+        {
+            // 鍕鹃�夛細璐у竵浼樺厛锛屾病瓒呮鏁板氨鐢ㄨ揣甯�
+            if (nowMoneyCnt + treasureCnt <= dailyMaxCountMoney)
+            {
+                DisplayByMoney(treasureSetConfig.CostMoneyType, needCostMoneyCnt, moneyCount);
+            }
+            else
+            {
+                DisplayByItem(treasureSetConfig.CostItemID, treasureCnt);
+            }
+        }
+        else
+        {
+            // 娌″嬀閫夛細淇濇寔鍘熼�昏緫
+            if (hasItemCnt < needCostItemCnt &&
+                nowMoneyCnt + treasureCnt <= dailyMaxCountMoney)
+            {
+                DisplayByMoney(treasureSetConfig.CostMoneyType, needCostMoneyCnt, moneyCount);
+                return;
+            }
+            DisplayByItem(treasureSetConfig.CostItemID, treasureCnt);
+        }
     }
 
     void DisplayByMoney(int moneyType, long needCostMoneyCnt, long moneyCount)
diff --git a/Main/System/HeroReturn/HeroReturnCallWin.cs b/Main/System/HeroReturn/HeroReturnCallWin.cs
index 84d2be5..4be450f 100644
--- a/Main/System/HeroReturn/HeroReturnCallWin.cs
+++ b/Main/System/HeroReturn/HeroReturnCallWin.cs
@@ -24,6 +24,8 @@
     [SerializeField] OwnItemCell ownItemCell;
     [SerializeField] ButtonEx closeBtn;
     [SerializeField] Toggle skipToggle;
+    [SerializeField] Toggle moneyToggle;
+    [SerializeField] ButtonEx moneyToggleTipButton;
     [SerializeField] HeroReturnCallButton xbButton1;
     [SerializeField] HeroReturnCallButton xbButton10;
     [SerializeField] TextEx resMoneyCallCntText;
@@ -73,6 +75,30 @@
         skipToggle.AddListener((value) =>
         {
             manager.SaveCallSkipData(config.CfgID, act.startDate, act.endDate, value);
+        });
+        moneyToggle.AddListener((value) =>
+        {
+            if (value)
+            {
+                int treasureType = config.ActTreasureType;
+                var info = HappyXBModel.Instance.GetXBInfoByType(treasureType);
+                var treasureSetConfig = TreasureSetConfig.Get(treasureType);
+                if (info != null && treasureSetConfig != null &&
+                    info.treasureCountTodayGold >= treasureSetConfig.DailyMaxCountMoney)
+                {
+                    SysNotifyMgr.Instance.ShowTip("CallToggleErr1");
+                    moneyToggle.SetIsOnWithoutNotify(false);
+                    return;
+                }
+            }
+            manager.SaveCallMoneyToggleData(config.CfgID, act.startDate, act.endDate, value);
+            Display();
+        });
+        moneyToggleTipButton.AddListener(() =>
+        {
+            SmallTipWin.showText = Language.Get("CallTip01");
+            SmallTipWin.worldPos = moneyToggleTipButton.transform.position;
+            UIManager.Instance.OpenWindow<SmallTipWin>();
         });
     }
 
@@ -272,6 +298,15 @@
         ownItemCell.itemID = treasureSetConfig.CostItemID;
         skipToggle.isOn = manager.LoadCallSkipData(config.CfgID, act.startDate, act.endDate);
 
+        // moneyToggle锛氬姞杞藉瓨妗o紙涓嶈Е鍙戠洃鍚櫒锛夛紝娆℃暟婊℃椂寮哄埗鍙栨秷
+        bool savedToggle = manager.LoadCallMoneyToggleData(config.CfgID, act.startDate, act.endDate);
+        if (xbTypeInfo.treasureCountTodayGold >= treasureSetConfig.DailyMaxCountMoney)
+        {
+            savedToggle = false;
+            manager.SaveCallMoneyToggleData(config.CfgID, act.startDate, act.endDate, false);
+        }
+        moneyToggle.SetIsOnWithoutNotify(savedToggle);
+
         xbButton1.Display(config.ActTreasureType, 0);
         xbButton10.Display(config.ActTreasureType, 1);
         resMoneyCallCntText.text = Language.Get("HeroDebut24", Mathf.Max(treasureSetConfig.DailyMaxCountMoney - xbTypeInfo.treasureCountTodayGold, 0));
diff --git a/Main/System/HeroReturn/HeroReturnManager.cs b/Main/System/HeroReturn/HeroReturnManager.cs
index 1578f94..2fc1775 100644
--- a/Main/System/HeroReturn/HeroReturnManager.cs
+++ b/Main/System/HeroReturn/HeroReturnManager.cs
@@ -848,6 +848,21 @@
         LocalSave.SetBool(GetCallSkipKey(cfgID, startDate, endDate), value);
     }
 
+    private string GetCallMoneyToggleKey(int cfgID, OperationDate startDate, OperationDate endDate)
+    {
+        return string.Concat("HeroReturnManager_CallMoneyToggle_", cfgID, "_", ToInt(startDate), "_", ToInt(endDate), "_", PlayerDatas.Instance.PlayerId);
+    }
+
+    public bool LoadCallMoneyToggleData(int cfgID, OperationDate startDate, OperationDate endDate)
+    {
+        return LocalSave.GetBool(GetCallMoneyToggleKey(cfgID, startDate, endDate));
+    }
+
+    public void SaveCallMoneyToggleData(int cfgID, OperationDate startDate, OperationDate endDate, bool value)
+    {
+        LocalSave.SetBool(GetCallMoneyToggleKey(cfgID, startDate, endDate), value);
+    }
+
     /// <summary>
     /// 褰撳墠鎷涘嫙閫変腑鐨勬灏咺D
     /// </summary>

--
Gitblit v1.8.0