From 75da4da96e33133f45253f64261dc4489cf03db4 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 09 一月 2026 18:15:44 +0800
Subject: [PATCH] 266 【内政】古宝系统

---
 Main/System/Gubao/GubaoCallCell.cs |   21 +++++++++-
 Main/System/Gubao/GubaoCallWin.cs  |   64 +++++++++++++------------------
 2 files changed, 45 insertions(+), 40 deletions(-)

diff --git a/Main/System/Gubao/GubaoCallCell.cs b/Main/System/Gubao/GubaoCallCell.cs
index 41c4ccd..2419170 100644
--- a/Main/System/Gubao/GubaoCallCell.cs
+++ b/Main/System/Gubao/GubaoCallCell.cs
@@ -40,6 +40,7 @@
             canImage.SetActive(false);
             rotationTween.Stop();
             openEffect.Stop();
+            showEffect.effectId = GetShowEffectID(result.itemId, result.count);
             showEffect.PlayByArrIndex(Math.Max(itemCfg.ItemColor - 1, 0));
             itemIcon.SetActive(true);
             itemName.SetActive(true);
@@ -50,7 +51,7 @@
             itemName.text = itemCfg.ItemName;
             itemName.color = UIHelper.GetFuncQualityColor(itemCfg.ItemColor);
             cntText.text = "x" + result.count.ToString();
-            
+
             if (gbCfg == null)
             {
                 pieceImg.SetActive(false);
@@ -63,7 +64,7 @@
                 {
                     newImg.SetActive(false);
                 }
-                else if (VirtualPackManager.Instance.GetNoPackItemCount(result.itemId) < gbCfg.UnlockItemCnt)
+                else if (result.count >= gbCfg.UnlockItemCnt && VirtualPackManager.Instance.GetNoPackItemCount(result.itemId) < gbCfg.UnlockItemCnt * 2)
                 {
                     newImg.SetActive(true);
                 }
@@ -103,6 +104,7 @@
         await UniTask.Delay(200);
         canImage.SetActive(false);
         await UniTask.Delay(400);
+        showEffect.effectId = GetShowEffectID(result.itemId, result.count);
         showEffect.PlayByArrIndex(Math.Max(itemCfg.ItemColor - 1, 0));
         itemIcon.SetActive(true);
         itemName.SetActive(true);
@@ -124,7 +126,7 @@
             {
                 newImg.SetActive(false);
             }
-            else if (VirtualPackManager.Instance.GetNoPackItemCount(result.itemId) < gbCfg.UnlockItemCnt)
+            else if (result.count >= gbCfg.UnlockItemCnt && VirtualPackManager.Instance.GetNoPackItemCount(result.itemId) < gbCfg.UnlockItemCnt * 2)
             {
                 newImg.SetActive(true);
             }
@@ -137,4 +139,17 @@
     }
 
 
+    int GetShowEffectID(int itemID, int cnt)
+    {
+        var config = GubaoConfig.Get(itemID);
+        if (config == null)
+        {
+            return 1095;
+        }
+        if (cnt >= config.UnlockItemCnt)
+        {
+            return 1094;
+        }
+        return 1095;
+    }
 }
diff --git a/Main/System/Gubao/GubaoCallWin.cs b/Main/System/Gubao/GubaoCallWin.cs
index 879dd44..864f1cb 100644
--- a/Main/System/Gubao/GubaoCallWin.cs
+++ b/Main/System/Gubao/GubaoCallWin.cs
@@ -64,7 +64,7 @@
             }
             opObj.SetActive(true);
             resultObj.SetActive(false);
-            ShowVenderTalk(0);
+            ShowVenderTalk(0).Forget();
         });
     }
 
@@ -73,12 +73,11 @@
     {
         HappyXBModel.Instance.RefreshXBTypeInfoAct += Display;
         HappyXBModel.Instance.RefreshXBResultAct += ShowResult;
-        // GubaoManager.Instance.clickCallEvent += clickCallEvent;
         skipToggle.isOn = LocalSave.GetBool(GubaoManager.skipKey + PlayerDatas.Instance.baseData.PlayerID, false);
         opObj.SetActive(true);
         resultObj.SetActive(false);
 
-        ShowVenderTalk(0);
+        ShowVenderTalk(0).Forget();
         Display();
     }
 
@@ -86,35 +85,40 @@
     {
         HappyXBModel.Instance.RefreshXBTypeInfoAct -= Display;
         HappyXBModel.Instance.RefreshXBResultAct -= ShowResult;
-        // GubaoManager.Instance.clickCallEvent -= clickCallEvent;
     }
 
 
     //浼樺厛鍙ゅ疂琛ㄧ幇
-    void ShowVenderTalk(int quality)
+    async UniTask ShowVenderTalk(int quality, float delay=0)
     {
         if (quality == 0)
         {
             var random = Random.Range(1, GubaoManager.Instance.maxIdleTalk + 1);
             talkText.text = Language.Get("GubaoIdleTalk" + random);
             roleModel.Play(0);
+            return;
+        }
+
+
+        await UniTask.Delay((int)(delay*1000*0.6));
+
+        if (quality >= 10)
+        {
+            //鐗╁搧鍝佽川
+            quality = quality / 10;
+            talkText.text = Language.Get("GubaoResultTalkItem" + quality);
+            roleModel.Play(GubaoManager.Instance.emojiItemDict[quality]);
         }
         else
         {
-            if (quality >= 10)
-            {
-                //鐗╁搧鍝佽川
-                quality = quality / 10;
-                talkText.text = Language.Get( "GubaoResultTalkItem" + quality);
-                roleModel.Play(GubaoManager.Instance.emojiItemDict[quality]);
-            }
-            else
-            {
-                talkText.text = Language.Get( "GubaoResultTalkGB" + quality);
-                roleModel.Play(GubaoManager.Instance.emojiGBDict[quality]);
-            }
+            talkText.text = Language.Get("GubaoResultTalkGB" + quality);
+            roleModel.Play(GubaoManager.Instance.emojiGBDict[quality]);
         }
-
+        await UniTask.Delay((int)(delay*1000*0.4));
+        if (delay != 0)
+        {
+            opObj.SetActive(true);
+        }
     }
 
     public void Display()
@@ -159,17 +163,10 @@
     {
         //姣忕瑙﹀彂涓�娆�
         cdTime += Time.deltaTime;
-        if (cdTime < 0.5) return;
+        if (cdTime < 1) return;
         cdTime = 0;
         RefreshFreeTime();
-        if (resultObj.gameObject.activeSelf && !opObj.gameObject.activeSelf)
-        {
-            if (Time.time - showResultTime > showCD)
-            {
-                opObj.SetActive(true);
-                ShowVenderTalk(GetResultQuality());
-            }
-        }
+
     }
 
     //鍖哄垎鐗╁搧鍝佽川*10 鍜� 鍙ゅ疂鍝佽川
@@ -269,23 +266,16 @@
 
         if (isSkip)
         {
-            ShowVenderTalk(GetResultQuality());
+            ShowVenderTalk(GetResultQuality()).Forget();
         }
         else
         {
             opObj.SetActive(false);
-            ShowVenderTalk(0);
+            ShowVenderTalk(0).Forget();
+            ShowVenderTalk(GetResultQuality(), showCD).Forget();
         }
     }
 
-    // void clickCallEvent()
-    // {
-    //     if (!skipToggle.isOn)
-    //     {
-    //         showResultTime = Time.time + 2; //棰勮寤惰繜2绉掔瓑鏈嶅姟绔�
-    //         opObj.SetActive(false);
-    //     }
-    // }
 
     void ShowRate()
     {

--
Gitblit v1.8.0