From 2c15cd1ba3b2bd6ec52b9b835a4c549a9a46287c Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期四, 23 五月 2019 10:59:18 +0800
Subject: [PATCH] 3335 缥缈仙域优化

---
 System/HazyRegion/ClientHazyGrassStage.cs |   33 +++++++++++++++++++++------------
 1 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/System/HazyRegion/ClientHazyGrassStage.cs b/System/HazyRegion/ClientHazyGrassStage.cs
index 7f0bfb8..358b94a 100644
--- a/System/HazyRegion/ClientHazyGrassStage.cs
+++ b/System/HazyRegion/ClientHazyGrassStage.cs
@@ -7,7 +7,7 @@
 {
     static readonly Vector3 PlayerBornPosition1 = new Vector3(19.401f, 4.985f, 5.494f);
 
-    static List<Vector3> s_NpcPositions = new List<Vector3>();
+    static List<int> s_RandomIndexs = new List<int>();
 
     static readonly int s_EnemyNpcId = 40208005;
 
@@ -29,7 +29,7 @@
     {
         base.Initialize();
 
-        s_NpcPositions.Clear();
+        s_RandomIndexs.Clear();
         s_Sid2NpcIds.Clear();
         s_CollectNpcs.Clear();
         s_Sid2NpcIndexs.Clear();
@@ -124,7 +124,13 @@
     void InitializeNpc()
     {
         var config = ScriptableObjectLoader.LoadSoHazyMapNpc(ClientDungeonStageUtility.clientMapId);
-        s_NpcPositions.AddRange(config.GetNpcPositions());
+        var positions = config.GetNpcPositions();
+
+        s_RandomIndexs.Clear();
+        for (int i = 0; i < positions.Count; i++)
+        {
+            s_RandomIndexs.Add(i);
+        }
 
         var mapId = model.GetGrassMapId(hazyRegionModel.processingIncidentId);
         var npcInfos = model.GetGrassNpcInfos(mapId);
@@ -143,8 +149,6 @@
                     continue;
                 }
 
-                hasInitializedNpc = true;
-
                 for (int j = 0; j < count; j++)
                 {
                     var index = -1;
@@ -155,12 +159,15 @@
                     if (jsonInfoIndex != -1)
                     {
                         index = npcJsonDatas[jsonInfoIndex].index;
+                        npcJsonDatas.RemoveAt(jsonInfoIndex);
                     }
                     if (index == -1)
                     {
                         break;
                     }
                     InitializeNpc(npcId, index);
+
+                    s_RandomIndexs.Remove(index);
                 }
             }
         }
@@ -172,16 +179,15 @@
 
             for (int j = 0; j < count; j++)
             {
-                var index = UnityEngine.Random.Range(0, s_NpcPositions.Count);
-                InitializeNpc(npcId, index);
+                var index = UnityEngine.Random.Range(0, s_RandomIndexs.Count);
+                InitializeNpc(npcId, s_RandomIndexs[index]);
 
-                hasInitializedNpc = true;
+                s_RandomIndexs.RemoveAt(index);
             }
         }
 
         if (hasInitializedNpc)
         {
-            var positions = config.GetNpcPositions();
             var enemyPosition = positions[UnityEngine.Random.Range(0, positions.Count)];
 
             if (ClientDungeonStageUtility.clientMapId == HazyGrassModel.FAIRY_CLIENTDATAMAP)
@@ -198,7 +204,12 @@
 
     void InitializeNpc(int npcId, int index)
     {
-        var position = s_NpcPositions[index];
+        hasInitializedNpc = true;
+
+        var config = ScriptableObjectLoader.LoadSoHazyMapNpc(ClientDungeonStageUtility.clientMapId);
+        var positions = config.GetNpcPositions();
+
+        var position = positions[index];
 
         GA_NpcClientCollect _npc = GAMgr.Instance.ReqClntNoFightNpc<GA_NpcClientCollect>((uint)npcId,
                 E_ActorGroup.FuncNpc);
@@ -216,8 +227,6 @@
         {
             s_NpcCounts[npcId] += 1;
         }
-
-        s_NpcPositions.RemoveAt(index);
 
         localNpcJsons.Add(new NpcJsonInfo()
         {

--
Gitblit v1.8.0