From 1b4a3a8f377e66ee562246a969419fc6cc658285 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 29 九月 2025 12:49:03 +0800
Subject: [PATCH] 197 子 【内政】淘金系统 / 【内政】淘金系统-客户端 - 预分配监工皮肤

---
 Main/System/InternalAffairs/GoldRushAutoCell.cs |    6 ++
 Main/System/InternalAffairs/GoldRushWorkCell.cs |    2 
 Main/System/InternalAffairs/GoldRushLeader.cs   |    2 
 Main/System/InternalAffairs/GoldRushManager.cs  |   60 ++++++++++++++++++++++--------
 4 files changed, 51 insertions(+), 19 deletions(-)

diff --git a/Main/System/InternalAffairs/GoldRushAutoCell.cs b/Main/System/InternalAffairs/GoldRushAutoCell.cs
index 2f2ca18..f585c51 100644
--- a/Main/System/InternalAffairs/GoldRushAutoCell.cs
+++ b/Main/System/InternalAffairs/GoldRushAutoCell.cs
@@ -17,10 +17,11 @@
 
     int arrIndex;
     int itemLV;
+    int itemID;
     public void Display(int _index)
     {
         arrIndex = _index;
-        int itemID = GoldRushManager.Instance.autoRefreshItemIDs[arrIndex];
+        itemID = GoldRushManager.Instance.autoRefreshItemIDs[arrIndex];
         itemLV = GoldRushManager.Instance.GetAutoItemLV(arrIndex);
         bool isOn = itemLV > 0;
         itemLV = itemLV > 0 ? itemLV : 1;
@@ -68,6 +69,9 @@
     void ChangeWorkerCount(int lv)
     {
         itemLV = lv;
+        var config = GoldRushItemConfig.GetConfig(itemID, itemLV);
+        itemCell.Init(new ItemCellModel(itemID, false, config.ItemCount));
+        nameText.text = GoldRushManager.Instance.GetCampItemName(config);
         if (!autoToggle.isOn)
         {
             return;
diff --git a/Main/System/InternalAffairs/GoldRushLeader.cs b/Main/System/InternalAffairs/GoldRushLeader.cs
index 75d359e..59cfcba 100644
--- a/Main/System/InternalAffairs/GoldRushLeader.cs
+++ b/Main/System/InternalAffairs/GoldRushLeader.cs
@@ -36,7 +36,7 @@
                                 leaderPathPointArr[leaderPathPointArr.Length - 1].transform.localPosition;
         OnComplete = _OnComplete;
         this.SetActive(true);
-        leader.Create(GoldRushManager.Instance.GetRandommSkinID(GoldRushManager.Instance.GetCampLastGoldID(tendID), index), leaderScale);
+        leader.Create(GoldRushManager.Instance.GetWorkerSkinID(tendID, index), leaderScale);
         Go(waitTime, isBack).Forget();
     }
 
diff --git a/Main/System/InternalAffairs/GoldRushManager.cs b/Main/System/InternalAffairs/GoldRushManager.cs
index ac7e5ff..5c02418 100644
--- a/Main/System/InternalAffairs/GoldRushManager.cs
+++ b/Main/System/InternalAffairs/GoldRushManager.cs
@@ -15,7 +15,7 @@
     public int housekeeperEndTime;   // 鑷姩绠″鍒版湡鏃堕棿鎴筹紝鏈夊�煎悓鏃朵篃浠h〃鍏嶈垂璇曠敤宸蹭娇鐢�
     public byte[] warehouseIDList;  //瀹屾垚鐨勶紝鍖呭惈0绌猴紝涓昏鐢ㄤ簬棰嗗彇鐨勭储寮�
     public Dictionary<int, HB037_tagSCGoldRushCampInfo.tagSCGoldRushCamp> campInfoDict = new Dictionary<int, HB037_tagSCGoldRushCampInfo.tagSCGoldRushCamp>();
-    public Dictionary<int, int> tmpCampIDToGoldID = new Dictionary<int, int>(); //鏈�鍚庝竴娆¤惀鍦版窐閲戝搴旂殑鐗╁搧锛岀函绮圭敤浜庢樉绀烘ā鍨�
+    public Dictionary<int, Dictionary<int, int[]>> tmpCampWorkerSkinIDDict = new Dictionary<int, Dictionary<int, int[]>>(); //鏈�鍚庝竴娆¤惀鍦版窐閲戝搴旂殑鐨偆锛堥鍒嗛厤锛夛紝绾补鐢ㄤ簬鏄剧ず妯″瀷
 
     public event Action<int> OnGoldRushCampEvent;    //鏈嶅姟绔�氱煡钀ュ湴淇℃伅
     public event Action OnGoldRushInfoEvent;
@@ -219,11 +219,50 @@
     }
 
 
-    public int GetRandommSkinID(int goldID, int index)
+    public int GetRandommSkinID()
     {
-        return skinIDs[(goldID % skinIDs.Count + index) % skinIDs.Count]; ;
         //浠庡凡瑙i攣涓殢鏈�
-        // return skinIDs[UnityEngine.Random.Range(0, skinIDs.Count)];
+        return skinIDs[UnityEngine.Random.Range(0, skinIDs.Count)];
+    }
+
+    //棰勫垎閰嶇洃宸ョ毊鑲�
+    void InitWorkerSkinID(HB037_tagSCGoldRushCampInfo.tagSCGoldRushCamp campInfo)
+    {
+        if (campInfo.GoldID != 0 && campInfo.EndTime != 0)
+        {
+            //棰勯槻閲嶅闅忔満
+            if (tmpCampWorkerSkinIDDict.ContainsKey(campInfo.CampID) && tmpCampWorkerSkinIDDict[campInfo.CampID].ContainsKey((int)campInfo.EndTime))
+            {
+                return;
+            }
+            if (!tmpCampWorkerSkinIDDict.ContainsKey(campInfo.CampID))
+            {
+                tmpCampWorkerSkinIDDict[campInfo.CampID] = new Dictionary<int, int[]>();
+            }
+            tmpCampWorkerSkinIDDict[campInfo.CampID].Clear();
+
+            //棰勫垎閰嶉殢鏈�3涓�
+            tmpCampWorkerSkinIDDict[campInfo.CampID][(int)campInfo.EndTime] = new int[] { GetRandommSkinID(), GetRandommSkinID(), GetRandommSkinID() };
+
+        }
+    }
+
+    public int GetWorkerSkinID(int campID, int index)
+    {
+        if (tmpCampWorkerSkinIDDict.ContainsKey(campID))
+        { 
+            var keys = tmpCampWorkerSkinIDDict[campID].Keys.ToList();
+            if (keys.Count > 0)
+            {
+                var skinIDs = tmpCampWorkerSkinIDDict[campID][keys[0]];
+                if (index < skinIDs.Length)
+                {
+                    return skinIDs[index];
+                }
+            }
+        }
+        
+        return skinIDs[UnityEngine.Random.Range(0, skinIDs.Count)];
     }
 
     void RefreshUnLockSkinID()
@@ -261,10 +300,7 @@
         for (int i = 0; i < netPack.CampCnt; i++)
         {
             campInfoDict[netPack.CampList[i].CampID] = netPack.CampList[i];
-            if (netPack.CampList[i].GoldID != 0)
-            { 
-                tmpCampIDToGoldID[netPack.CampList[i].CampID] = netPack.CampList[i].GoldID;
-            }
+            InitWorkerSkinID(netPack.CampList[i]);
             OnGoldRushCampEvent?.Invoke(netPack.CampList[i].CampID);
 
         }
@@ -304,14 +340,6 @@
         return 0;
     }
 
-    public int GetCampLastGoldID(int campID)
-    {
-        if (tmpCampIDToGoldID.ContainsKey(campID))
-        {
-            return tmpCampIDToGoldID[campID];
-        }
-        return 0;
-    }
 
     //鑾峰彇钀ュ湴宸ヤ汉
     public int GetCampWorkerCnt(int campID)
diff --git a/Main/System/InternalAffairs/GoldRushWorkCell.cs b/Main/System/InternalAffairs/GoldRushWorkCell.cs
index a5be79f..d3f16ed 100644
--- a/Main/System/InternalAffairs/GoldRushWorkCell.cs
+++ b/Main/System/InternalAffairs/GoldRushWorkCell.cs
@@ -76,7 +76,7 @@
                 if (i < workCnt)
                 {
                     heroModels[i].SetActive(true);
-                    var skinID = GoldRushManager.Instance.GetRandommSkinID(goldID, i);
+                    var skinID = GoldRushManager.Instance.GetWorkerSkinID(campID, i);
                     heroModels[i].Create(skinID, 0.5f);
                 }
                 else

--
Gitblit v1.8.0