diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs index 6610106b..545d5a04 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs @@ -103,15 +103,15 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag private void resetComponentPosition() { //遍历范围预览池消除影响色 - for (int i = 0; i < MapUnityManager.Instance.castPool.Count; i++) + foreach (MapUnity mapUnity in MapUnityManager.Instance.castPool) { - MapUnityManager.Instance.castPool[i].influenced = false; + mapUnity.influenced = false; } MapUnityManager.Instance.castPool.Clear(); //遍历影响池变色 - for (int i = 0; i < cardEntity.influencePreviewPool.Count; i++) + foreach (MapUnity mapUnity in cardEntity.influencePreviewPool) { - cardEntity.influencePreviewPool[i].influenced = false; + mapUnity.influenced = false; } cardEntity.influencePreviewPool.Clear(); @@ -183,9 +183,9 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag //检测到跟上次瞄准地方不同,更新 if (currentNode == null || raycastHit.collider.transform.gameObject != currentNode.gameObject) { - for (int i = 0; i < cardEntity.influencePreviewPool.Count; i++) + foreach (MapUnity mapUnity in cardEntity.influencePreviewPool) { - cardEntity.influencePreviewPool[i].influenced = false; + mapUnity.influenced = false; } cardEntity.influencePreviewPool.Clear(); currentNode = raycastHit.collider.transform.GetComponent(); @@ -214,9 +214,9 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag private void setCastingRangePreview(string effectRange) { - for (int i = 0; i < MapUnityManager.Instance.castPool.Count; i++) + foreach (MapUnity mapUnity in MapUnityManager.Instance.castPool) { - MapUnityManager.Instance.castPool[i].influenced = false; + mapUnity.influenced = false; } MapUnityManager.Instance.castPool.Clear(); if (effectRange == EffectRange.range1) @@ -271,7 +271,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag { cardEntity.influencePreviewPool = handler.HandleAngleWithResult(euler); } - cardEntity.influencePreviewPool=MathTool.RemoveDuplicates(cardEntity.influencePreviewPool); + //cardEntity.influencePreviewPool=MathTool.RemoveDuplicates(cardEntity.influencePreviewPool); if (effectRange.Equals(EffectRange.range8_2)|| effectRange.Equals(EffectRange.range6_3)) { getNodeTools.checkListPass(cardEntity.influencePreviewPool, playerOnNode); @@ -332,10 +332,10 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag private void dyeing() { //遍历影响池变色 - for (int i = 0; i < cardEntity.influencePreviewPool.Count; i++) + foreach (MapUnity mapUnity in cardEntity.influencePreviewPool) { - cardEntity.influencePreviewPool[i].influenced = true; - cardEntity.influencePreviewPool[i].choossedMark.GetComponent().material = cardEntity.influencePreviewPool[i].yellow; + mapUnity.influenced = true; + mapUnity.choossedMark.GetComponent().material =mapUnity.yellow; } } @@ -366,12 +366,12 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag eventData.pointerCurrentRaycast.gameObject.transform.SetParent(originalParent); GetComponent().blocksRaycasts = true; - - ainPanle.SetActive(false);//关闭贝塞尔曲线 - //遍历范围预览池消除影响色 - for (int i = 0; i < GameManager.Instance.player.influencePreviewPool.Count; i++) + //关闭贝塞尔曲线 + ainPanle.SetActive(false); + //遍历范围预览池消除影响色 + foreach (MapUnity mapUnity in GameManager.Instance.player.influencePreviewPool) { - GameManager.Instance.player.influencePreviewPool[i].influenced = false; + mapUnity.influenced = false; } //GameManager.Instance.player.influencePreviewPool.Clear(); @@ -382,17 +382,17 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag transform.SetParent(eventData.pointerCurrentRaycast.gameObject.transform); transform.position = eventData.pointerCurrentRaycast.gameObject.transform.position; GetComponent().blocksRaycasts = true; - - ainPanle.SetActive(false);//关闭贝塞尔曲线 - //遍历范围预览池消除影响色 - for (int i = 0; i < MapUnityManager.Instance.castPool.Count; i++) + //关闭贝塞尔曲线 + ainPanle.SetActive(false); + //遍历范围预览池消除影响色 + foreach (MapUnity mapUnity in MapUnityManager.Instance.castPool) { - MapUnityManager.Instance.castPool[i].influenced = false; + mapUnity.influenced = false; } MapUnityManager.Instance.castPool.Clear(); - for (int i = 0; i < cardEntity.influencePreviewPool.Count; i++) + foreach (MapUnity mapUnity in cardEntity.influencePreviewPool) { - cardEntity.influencePreviewPool[i].influenced = false; + mapUnity.influenced = false; } cardEntity.influencePreviewPool.Clear(); //GameManager.Instance.player.influencePreviewPool.Clear(); @@ -412,9 +412,9 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag if (currentNode == null || currentNode.influenced == false) { //遍历范围预览池消除影响色(红色,卡牌的释放范围) - for (int i = 0; i < MapUnityManager.Instance.castPool.Count; i++) + foreach (MapUnity mapUnity in MapUnityManager.Instance.castPool) { - MapUnityManager.Instance.castPool[i].influenced = false; + mapUnity.influenced = false; } MapUnityManager.Instance.castPool.Clear(); } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs index 038b38e0..6009551a 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs @@ -12,7 +12,7 @@ public class CardEntity : MonoBehaviour { public CardOriginalData cardOriginalData; //public CardOriginalData cardData; - public List influencePreviewPool=new List();//卡牌的影响范围 + public HashSet influencePreviewPool = new HashSet();//卡牌的影响范围 public int cardId; diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs index d49577ba..d7cb624f 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs @@ -211,8 +211,17 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver { MapUnity currentNode = GameManager.Instance.X[positionX].Y[positionY]; pasth.Clear(); + pasth = AStarManager.Instance.FindPath(currentNode, GameManager.Instance.playerOn); } + + public void FindPathForRemoteAttacker() + { + MapUnity currentNode = GameManager.Instance.X[positionX].Y[positionY]; + pasth.Clear(); + + pasth = AStarManager.Instance.FindPath(currentNode, GameManager.Instance.playerOn); + } public void Move(MapUnity currentNode , int step) { //currentnode移动 diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkeletonArcher.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkeletonArcher.cs index 3dc0728f..f6e4ae4b 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkeletonArcher.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkeletonArcher.cs @@ -99,10 +99,11 @@ public class SkeletonArcher : MonoBehaviour for (int i = 0; i < enemyNode.EnemyState.stepRange * enemyNode.EnemyState.stepRangeMultiplier; i++) { - enemyNode.FindPath(); + Debug.Log(enemyNode.pasth.Count); if (enemyNode.pasth.Count > enemyNode.EnemyState .attackRange ) { + enemyNode.FindPath(); MapUnity currentNode = enemyNode.pasth[0]; MapUnity disNode = enemyNode.pasth[1]; currentNode.blocked = false; diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler.cs index 9aa0842c..6531d96a 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler.cs @@ -4,5 +4,5 @@ using UnityEngine; interface EffectRangeHandler { - public List HandleAngleWithResult(float angle) { return new List(); } + public HashSet HandleAngleWithResult(float angle) { return new HashSet(); } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler1.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler1.cs index c2cc3f17..ff62cef0 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler1.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler1.cs @@ -9,7 +9,7 @@ public class EffectRangeHandler1 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler2.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler2.cs index dd437cfd..80066ce5 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler2.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler2.cs @@ -9,7 +9,7 @@ public class EffectRangeHandler2 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_1.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_1.cs index 1d3bf56d..f33210f8 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_1.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_1.cs @@ -9,7 +9,7 @@ public class EffectRangeHandler3_1 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_2.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_2.cs index 9c531538..32d00a7b 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_2.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_2.cs @@ -9,7 +9,7 @@ public class EffectRangeHandler3_2 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_3.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_3.cs index 32cf6cd8..203a32b8 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_3.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_3.cs @@ -9,7 +9,7 @@ public class EffectRangeHandler3_3 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_1.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_1.cs index 91c7c258..fbd0f990 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_1.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_1.cs @@ -9,7 +9,7 @@ public class EffectRangeHandler4_1 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_2.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_2.cs index 9e29f93b..11da23a0 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_2.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_2.cs @@ -10,7 +10,7 @@ public class EffectRangeHandler4_2 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_3.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_3.cs index 00269a6b..5fee48b4 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_3.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_3.cs @@ -9,7 +9,7 @@ public class EffectRangeHandler4_3 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_1.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_1.cs index b708ed84..e6f54068 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_1.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_1.cs @@ -9,7 +9,7 @@ public class EffectRangeHandler5_1 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_2.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_2.cs index f2eaab6b..39f8f315 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_2.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_2.cs @@ -10,7 +10,7 @@ public class EffectRangeHandler5_2 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_3.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_3.cs index 04e0a785..c361fdb0 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_3.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_3.cs @@ -9,7 +9,7 @@ public class EffectRangeHandler5_3 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_1.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_1.cs index a5498e2a..b3493b63 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_1.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_1.cs @@ -10,7 +10,7 @@ public class EffectRangeHandler6_1 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_2.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_2.cs index 9c64f463..eceaa3f5 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_2.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_2.cs @@ -11,7 +11,7 @@ public class EffectRangeHandler6_2 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_3.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_3.cs index 2967be6a..42a58f8e 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_3.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_3.cs @@ -8,7 +8,7 @@ public class EffectRangeHandler6_3 : EffectRangeHandlerBase public EffectRangeHandler6_3(MapUnity currentNode, float euler) { influencePreviewPool.Clear(); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler7_1.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler7_1.cs index 05b9d399..7e0b1104 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler7_1.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler7_1.cs @@ -9,7 +9,7 @@ public class EffectRangeHandler7_1 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler7_2.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler7_2.cs index 2b3832c9..25677126 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler7_2.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler7_2.cs @@ -11,7 +11,7 @@ public class EffectRangeHandler7_2 : EffectRangeHandlerBase { influencePreviewPool.Clear(); influencePreviewPool.Add(currentNode); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler8_2.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler8_2.cs index 3172b4c0..b9c0a423 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler8_2.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler8_2.cs @@ -11,7 +11,7 @@ public class EffectRangeHandler8_2 : EffectRangeHandlerBase public EffectRangeHandler8_2(MapUnity currentNode, float euler) { influencePreviewPool.Clear(); - angleActions = new Dictionary>> + angleActions = new Dictionary>> { { 30.0f, () => { @@ -55,7 +55,7 @@ public class EffectRangeHandler8_2 : EffectRangeHandlerBase - private void get8_2Node(MapUnity node, List influencePreviewPool) + private void get8_2Node(MapUnity node, HashSet influencePreviewPool) { Debug.Log("进入8_2"); influencePreviewPool.Add(node); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandlerBase.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandlerBase.cs index 53042a8d..90925e5a 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandlerBase.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandlerBase.cs @@ -5,9 +5,9 @@ using UnityEngine; public class EffectRangeHandlerBase : EffectRangeHandler { - public List influencePreviewPool = new List();//卡牌的影响范围 + public HashSet influencePreviewPool = new HashSet();//卡牌的影响范围 - public Dictionary>> angleActions; + public Dictionary>> angleActions; public float Epsilon { get; } = 1.00f; public bool tryGetNodeInfluencedable(MapUnity currentNode) @@ -35,7 +35,7 @@ public class EffectRangeHandlerBase : EffectRangeHandler return canPass; } - public List HandleAngleWithResult(float angle) + public HashSet HandleAngleWithResult(float angle) { foreach (var kvp in angleActions) { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Player.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Player.cs index ba25ac9d..3ed4e4ca 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Player.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Player.cs @@ -6,7 +6,7 @@ public class Player : MonoBehaviour { public int step; public int startPositionX, startPositionY; - public List influencePreviewPool;//记录预览影响的对象池 + public HashSet influencePreviewPool=new HashSet();//记录预览影响的对象池 [Header("层级检测")] public LayerMask chooseNodeLayerMask;//移动射线选择的层级 @@ -34,12 +34,12 @@ public class Player : MonoBehaviour if (Physics.Raycast(ray, out RaycastHit raycastHit, 500, playerLayerMask.value) && raycastHit.collider.gameObject.tag == "Player") { Debug.Log(raycastHit.collider.gameObject.name); - influencePreviewPool.AddRange(MapUnityManager.Instance.findReachableTiles(GameManager.Instance.playerOn, GameManager.Instance.playerState.currentStepRange)); + influencePreviewPool.UnionWith(MapUnityManager.Instance.findReachableTiles(GameManager.Instance.playerOn, GameManager.Instance.playerState.currentStepRange)); //遍历影响池变色 - for (int i = 0; i < influencePreviewPool.Count; i++) + foreach (MapUnity mapUnity in influencePreviewPool) { - influencePreviewPool[i].influenced = true; - influencePreviewPool[i].choossedMark.GetComponent().material = influencePreviewPool[i].red; + mapUnity.influenced = true; + mapUnity.choossedMark.GetComponent().material = mapUnity.red; } //StepPreviewInfluencedNode(GameManager.Instance.playerState.currentStepRange); } @@ -120,9 +120,9 @@ public class Player : MonoBehaviour this.gameObject.transform.position =new Vector3 ( mapNode.transform.position.x ,0.5f, mapNode.transform.position.z); //遍历影响池变色 - for (int i = 0; i < influencePreviewPool.Count; i++) + foreach (MapUnity mapUnity in influencePreviewPool) { - influencePreviewPool[i].influenced = false; + mapUnity.influenced = false; } influencePreviewPool.Clear(); @@ -138,9 +138,9 @@ public class Player : MonoBehaviour public void CloseStepPreviewInfluencedNode() { //遍历影响池变色 - for (int i = 0; i < influencePreviewPool.Count; i++) + foreach (MapUnity mapUnity in influencePreviewPool) { - influencePreviewPool[i].influenced = false; + mapUnity.influenced = false; } influencePreviewPool.Clear(); } @@ -512,10 +512,10 @@ public class Player : MonoBehaviour } } //遍历影响池变色 - for (int i= 0;i().material = influencePreviewPool[i].red; + mapUnity.influenced = true; + mapUnity.choossedMark.GetComponent().material = mapUnity.red; } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs index 1156ee9e..fa56d882 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs @@ -29,9 +29,9 @@ public class getNodeTools return canPass; } - public static void getLongNodes(MapUnity currentNode, int angle, int range,List results) + public static void getLongNodes(MapUnity currentNode, int angle, int range, HashSet results) { - List result = new List(); + HashSet result = new HashSet(); MapUnity currentCheckNode = currentNode; for (int i = 0; i < range; i++) { @@ -46,7 +46,7 @@ public class getNodeTools } } - public static bool tryGetNode(MapUnity currentNode, List results) + public static bool tryGetNode(MapUnity currentNode, HashSet results) { bool canPass = true; if (currentNode == null) @@ -71,18 +71,18 @@ public class getNodeTools return canPass; } - public static void getCircleNode(List nodeList,int range) + public static void getCircleNode(HashSet nodeList,int range) { for (int i = 0;i < range;i++) { getNearbyNode(nodeList); } } - public static void getNearbyNode(List nodeList) + public static void getNearbyNode(HashSet nodeList) { // 创建一个副本以避免遍历时修改原集合 - List nodesCopy = new List(nodeList); - List nodesToAdd = new List(); // 临时列表存储要添加的节点 + HashSet nodesCopy = new HashSet(nodeList); + HashSet nodesToAdd = new HashSet(); // 临时列表存储要添加的节点 foreach (var node in nodesCopy) { @@ -97,8 +97,9 @@ public class getNodeTools } - public static void checkListPass(List mapUnityList, MapUnity mapUnity) + public static void checkListPass(HashSet mapUnitySet, MapUnity mapUnity) { + List mapUnityList=new List(mapUnitySet); for (int i = mapUnityList.Count - 1; i >= 0; i--) { @@ -107,7 +108,8 @@ public class getNodeTools mapUnityList.RemoveAt(i); } } - + mapUnitySet.Clear(); + mapUnitySet.UnionWith(mapUnityList); } public static bool checkNodePass(MapUnity mapUnity, MapUnity centerMapUnity) diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs index a7404cf0..eef06f52 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs @@ -5,7 +5,7 @@ using UnityEngine; public class DestructionManager : Singleton { // Start is called before the first frame update - public IEnumerator destoryAndUseCard(GameObject target, CardOriginalData cardOriginalData, List influencePreviewPool, int cardIndex) + public IEnumerator destoryAndUseCard(GameObject target, CardOriginalData cardOriginalData, HashSet influencePreviewPool, int cardIndex) { if (!cardOriginalData.IsDisposable) { @@ -19,9 +19,9 @@ public class DestructionManager : Singleton yield return null; yield return StartCoroutine(TurnMaster.Instance.MoveCards()); //遍历影响池变色 - for (int i = 0; i < influencePreviewPool.Count; i++) + foreach (MapUnity mapUnity in influencePreviewPool) { - influencePreviewPool[i].influenced = false; + mapUnity.influenced = false; } GameManager.Instance.SyncColourCountUI(); //遍历范围预览池消除影响色 @@ -32,9 +32,9 @@ public class DestructionManager : Singleton } GameManager.Instance.player.influencePreviewPool.Clear();*/ - for (int i = 0; i < MapUnityManager.Instance.castPool.Count; i++) + foreach (MapUnity mapUnity in MapUnityManager.Instance.castPool) { - MapUnityManager.Instance.castPool[i].influenced = false; + mapUnity.influenced = false; } MapUnityManager.Instance.castPool.Clear(); @@ -48,7 +48,7 @@ public class DestructionManager : Singleton } - public IEnumerator startDestoryAndUseCard(GameObject target, CardOriginalData cardOriginalData, List influencePreviewPool, int cardIndex) + public IEnumerator startDestoryAndUseCard(GameObject target, CardOriginalData cardOriginalData, HashSet influencePreviewPool, int cardIndex) { yield return StartCoroutine(destoryAndUseCard(target, cardOriginalData, influencePreviewPool, cardIndex)); Debug.Log("执行结束2"); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs index cec46f42..f89641cb 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs @@ -7,16 +7,15 @@ using UnityEngine; public class MapUnityManager : Singleton { - public List castPool=new List();//记录预览影响的对象池 - public List findReachableTiles(MapUnity startNode, int movePoints) + public HashSet castPool=new HashSet();//记录预览影响的对象池 + public HashSet findReachableTiles(MapUnity startNode, int movePoints) { - List reachableNodes = new List(); + HashSet reachableNodes = new HashSet(); Queue queue = new Queue(); Dictionary remainingMovePoints = new Dictionary(); queue.Enqueue(startNode); remainingMovePoints[startNode] = movePoints; - while (queue.Count > 0) { MapUnity currentNode = queue.Dequeue(); @@ -37,9 +36,6 @@ public class MapUnityManager : Singleton } } } - - //遍历影响池变色 - return reachableNodes; } @@ -62,7 +58,7 @@ public class MapUnityManager : Singleton castPool.Remove(playerOn); } } - castPool=MathTool.RemoveDuplicates(castPool); + //castPool=MathTool.RemoveDuplicates(castPool); Debug.Log("去除前数量是" + castPool.Count); MapUnity playerOnNode = GameManager.Instance.playerOn.transform.GetComponent(); getNodeTools.checkListPass(castPool,playerOnNode); @@ -70,10 +66,10 @@ public class MapUnityManager : Singleton //getNodeTools.checkListPass(castPool); //遍历影响池变色 Debug.Log("数量是" + castPool.Count); - for (int i = 0; i < castPool.Count; i++) + foreach (MapUnity mapUnity in castPool) { - castPool[i].influenced = true; - castPool[i].choossedMark.GetComponent().material = castPool[i].red; + mapUnity.influenced = true; + mapUnity.choossedMark.GetComponent().material = mapUnity.red; } } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs index 3fe3438e..705e9976 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs @@ -43,8 +43,9 @@ public class SettlementManager : Singleton } } - public IEnumerator settle(CardOriginalData cardOriginalData, List influencePreviewPool, int cardIndex) + public IEnumerator settle(CardOriginalData cardOriginalData, HashSet influencePreviewPoolSet, int cardIndex) { + List influencePreviewPool=new List(influencePreviewPoolSet); Dictionary trueFunctionVal = new Dictionary(); bool canAdv = GameManager.Instance.SyncColourCountUI(); GameManager.Instance.playerState.currentCost -= cardOriginalData.Cost;