Browse Source

[代码重构]把所有的list<mapunity>换成hashset

pull/12/head
yjm484 2 years ago
parent
commit
539eb5ac33
  1. 52
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs
  2. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs
  3. 9
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs
  4. 3
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkeletonArcher.cs
  5. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler.cs
  6. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler1.cs
  7. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler2.cs
  8. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_1.cs
  9. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_2.cs
  10. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_3.cs
  11. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_1.cs
  12. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_2.cs
  13. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_3.cs
  14. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_1.cs
  15. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_2.cs
  16. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_3.cs
  17. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_1.cs
  18. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_2.cs
  19. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_3.cs
  20. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler7_1.cs
  21. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler7_2.cs
  22. 4
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler8_2.cs
  23. 6
      ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandlerBase.cs
  24. 24
      ColorlessWorld-2024-4-2/Assets/Scripts/Player.cs
  25. 20
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs
  26. 12
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs
  27. 18
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs
  28. 3
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs

52
ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs

@ -103,15 +103,15 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
private void resetComponentPosition() 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(); 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(); cardEntity.influencePreviewPool.Clear();
@ -183,9 +183,9 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
//检测到跟上次瞄准地方不同,更新 //检测到跟上次瞄准地方不同,更新
if (currentNode == null || raycastHit.collider.transform.gameObject != currentNode.gameObject) 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(); cardEntity.influencePreviewPool.Clear();
currentNode = raycastHit.collider.transform.GetComponent<MapUnity>(); currentNode = raycastHit.collider.transform.GetComponent<MapUnity>();
@ -214,9 +214,9 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
private void setCastingRangePreview(string effectRange) 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(); MapUnityManager.Instance.castPool.Clear();
if (effectRange == EffectRange.range1) if (effectRange == EffectRange.range1)
@ -271,7 +271,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
{ {
cardEntity.influencePreviewPool = handler.HandleAngleWithResult(euler); 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)) if (effectRange.Equals(EffectRange.range8_2)|| effectRange.Equals(EffectRange.range6_3))
{ {
getNodeTools.checkListPass(cardEntity.influencePreviewPool, playerOnNode); getNodeTools.checkListPass(cardEntity.influencePreviewPool, playerOnNode);
@ -332,10 +332,10 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
private void dyeing() private void dyeing()
{ {
//遍历影响池变色 //遍历影响池变色
for (int i = 0; i < cardEntity.influencePreviewPool.Count; i++) foreach (MapUnity mapUnity in cardEntity.influencePreviewPool)
{ {
cardEntity.influencePreviewPool[i].influenced = true; mapUnity.influenced = true;
cardEntity.influencePreviewPool[i].choossedMark.GetComponent<Renderer>().material = cardEntity.influencePreviewPool[i].yellow; mapUnity.choossedMark.GetComponent<Renderer>().material =mapUnity.yellow;
} }
} }
@ -366,12 +366,12 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
eventData.pointerCurrentRaycast.gameObject.transform.SetParent(originalParent); eventData.pointerCurrentRaycast.gameObject.transform.SetParent(originalParent);
GetComponent<CanvasGroup>().blocksRaycasts = true; GetComponent<CanvasGroup>().blocksRaycasts = true;
//关闭贝塞尔曲线
ainPanle.SetActive(false);//关闭贝塞尔曲线 ainPanle.SetActive(false);
//遍历范围预览池消除影响色 //遍历范围预览池消除影响色
for (int i = 0; i < GameManager.Instance.player.influencePreviewPool.Count; i++) foreach (MapUnity mapUnity in GameManager.Instance.player.influencePreviewPool)
{ {
GameManager.Instance.player.influencePreviewPool[i].influenced = false; mapUnity.influenced = false;
} }
//GameManager.Instance.player.influencePreviewPool.Clear(); //GameManager.Instance.player.influencePreviewPool.Clear();
@ -382,17 +382,17 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
transform.SetParent(eventData.pointerCurrentRaycast.gameObject.transform); transform.SetParent(eventData.pointerCurrentRaycast.gameObject.transform);
transform.position = eventData.pointerCurrentRaycast.gameObject.transform.position; transform.position = eventData.pointerCurrentRaycast.gameObject.transform.position;
GetComponent<CanvasGroup>().blocksRaycasts = true; GetComponent<CanvasGroup>().blocksRaycasts = true;
//关闭贝塞尔曲线
ainPanle.SetActive(false);//关闭贝塞尔曲线 ainPanle.SetActive(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(); 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(); cardEntity.influencePreviewPool.Clear();
//GameManager.Instance.player.influencePreviewPool.Clear(); //GameManager.Instance.player.influencePreviewPool.Clear();
@ -412,9 +412,9 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
if (currentNode == null || currentNode.influenced == false) 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(); MapUnityManager.Instance.castPool.Clear();
} }

2
ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs

@ -12,7 +12,7 @@ public class CardEntity : MonoBehaviour
{ {
public CardOriginalData cardOriginalData; public CardOriginalData cardOriginalData;
//public CardOriginalData cardData; //public CardOriginalData cardData;
public List<MapUnity> influencePreviewPool=new List<MapUnity>();//卡牌的影响范围 public HashSet<MapUnity> influencePreviewPool = new HashSet<MapUnity>();//卡牌的影响范围
public int cardId; public int cardId;

9
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]; MapUnity currentNode = GameManager.Instance.X[positionX].Y[positionY];
pasth.Clear(); pasth.Clear();
pasth = AStarManager.Instance.FindPath(currentNode, GameManager.Instance.playerOn); 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) public void Move(MapUnity currentNode , int step)
{ {
//currentnodeÒÆ¶¯ //currentnodeÒÆ¶¯

3
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++) for (int i = 0; i < enemyNode.EnemyState.stepRange * enemyNode.EnemyState.stepRangeMultiplier; i++)
{ {
enemyNode.FindPath();
Debug.Log(enemyNode.pasth.Count); Debug.Log(enemyNode.pasth.Count);
if (enemyNode.pasth.Count > enemyNode.EnemyState .attackRange ) if (enemyNode.pasth.Count > enemyNode.EnemyState .attackRange )
{ {
enemyNode.FindPath();
MapUnity currentNode = enemyNode.pasth[0]; MapUnity currentNode = enemyNode.pasth[0];
MapUnity disNode = enemyNode.pasth[1]; MapUnity disNode = enemyNode.pasth[1];
currentNode.blocked = false; currentNode.blocked = false;

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler.cs

@ -4,5 +4,5 @@ using UnityEngine;
interface EffectRangeHandler interface EffectRangeHandler
{ {
public List<MapUnity> HandleAngleWithResult(float angle) { return new List<MapUnity>(); } public HashSet<MapUnity> HandleAngleWithResult(float angle) { return new HashSet<MapUnity>(); }
} }

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler1.cs

@ -9,7 +9,7 @@ public class EffectRangeHandler1 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler2.cs

@ -9,7 +9,7 @@ public class EffectRangeHandler2 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_1.cs

@ -9,7 +9,7 @@ public class EffectRangeHandler3_1 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_2.cs

@ -9,7 +9,7 @@ public class EffectRangeHandler3_2 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler3_3.cs

@ -9,7 +9,7 @@ public class EffectRangeHandler3_3 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_1.cs

@ -9,7 +9,7 @@ public class EffectRangeHandler4_1 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_2.cs

@ -10,7 +10,7 @@ public class EffectRangeHandler4_2 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler4_3.cs

@ -9,7 +9,7 @@ public class EffectRangeHandler4_3 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_1.cs

@ -9,7 +9,7 @@ public class EffectRangeHandler5_1 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_2.cs

@ -10,7 +10,7 @@ public class EffectRangeHandler5_2 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler5_3.cs

@ -9,7 +9,7 @@ public class EffectRangeHandler5_3 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_1.cs

@ -10,7 +10,7 @@ public class EffectRangeHandler6_1 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_2.cs

@ -11,7 +11,7 @@ public class EffectRangeHandler6_2 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
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) public EffectRangeHandler6_3(MapUnity currentNode, float euler)
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler7_1.cs

@ -9,7 +9,7 @@ public class EffectRangeHandler7_1 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

2
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler7_2.cs

@ -11,7 +11,7 @@ public class EffectRangeHandler7_2 : EffectRangeHandlerBase
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
influencePreviewPool.Add(currentNode); influencePreviewPool.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {

4
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) public EffectRangeHandler8_2(MapUnity currentNode, float euler)
{ {
influencePreviewPool.Clear(); influencePreviewPool.Clear();
angleActions = new Dictionary<float, Func<List<MapUnity>>> angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{ {
{ 30.0f, () => { 30.0f, () =>
{ {
@ -55,7 +55,7 @@ public class EffectRangeHandler8_2 : EffectRangeHandlerBase
private void get8_2Node(MapUnity node, List<MapUnity> influencePreviewPool) private void get8_2Node(MapUnity node, HashSet<MapUnity> influencePreviewPool)
{ {
Debug.Log("½øÈë8_2"); Debug.Log("½øÈë8_2");
influencePreviewPool.Add(node); influencePreviewPool.Add(node);

6
ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandlerBase.cs

@ -5,9 +5,9 @@ using UnityEngine;
public class EffectRangeHandlerBase : EffectRangeHandler public class EffectRangeHandlerBase : EffectRangeHandler
{ {
public List<MapUnity> influencePreviewPool = new List<MapUnity>();//卡牌的影响范围 public HashSet<MapUnity> influencePreviewPool = new HashSet<MapUnity>();//卡牌的影响范围
public Dictionary<float, Func<List<MapUnity>>> angleActions; public Dictionary<float, Func<HashSet<MapUnity>>> angleActions;
public float Epsilon { get; } = 1.00f; public float Epsilon { get; } = 1.00f;
public bool tryGetNodeInfluencedable(MapUnity currentNode) public bool tryGetNodeInfluencedable(MapUnity currentNode)
@ -35,7 +35,7 @@ public class EffectRangeHandlerBase : EffectRangeHandler
return canPass; return canPass;
} }
public List<MapUnity> HandleAngleWithResult(float angle) public HashSet<MapUnity> HandleAngleWithResult(float angle)
{ {
foreach (var kvp in angleActions) foreach (var kvp in angleActions)
{ {

24
ColorlessWorld-2024-4-2/Assets/Scripts/Player.cs

@ -6,7 +6,7 @@ public class Player : MonoBehaviour
{ {
public int step; public int step;
public int startPositionX, startPositionY; public int startPositionX, startPositionY;
public List<MapUnity> influencePreviewPool;//¼Ç¼ԤÀÀÓ°ÏìµÄ¶ÔÏó³Ø public HashSet<MapUnity> influencePreviewPool=new HashSet<MapUnity>();//¼Ç¼ԤÀÀÓ°ÏìµÄ¶ÔÏó³Ø
[Header("层级检测")] [Header("层级检测")]
public LayerMask chooseNodeLayerMask;//移动射线选择的层级 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") if (Physics.Raycast(ray, out RaycastHit raycastHit, 500, playerLayerMask.value) && raycastHit.collider.gameObject.tag == "Player")
{ {
Debug.Log(raycastHit.collider.gameObject.name); 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; mapUnity.influenced = true;
influencePreviewPool[i].choossedMark.GetComponent<Renderer>().material = influencePreviewPool[i].red; mapUnity.choossedMark.GetComponent<Renderer>().material = mapUnity.red;
} }
//StepPreviewInfluencedNode(GameManager.Instance.playerState.currentStepRange); //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); 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(); influencePreviewPool.Clear();
@ -138,9 +138,9 @@ public class Player : MonoBehaviour
public void CloseStepPreviewInfluencedNode() 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(); influencePreviewPool.Clear();
} }
@ -512,10 +512,10 @@ public class Player : MonoBehaviour
} }
} }
//遍历影响池变色 //遍历影响池变色
for (int i= 0;i<influencePreviewPool.Count;i++) foreach (MapUnity mapUnity in influencePreviewPool)
{ {
influencePreviewPool[i].influenced = true; mapUnity.influenced = true;
influencePreviewPool[i].choossedMark.GetComponent<Renderer>().material = influencePreviewPool[i].red; mapUnity.choossedMark.GetComponent<Renderer>().material = mapUnity.red;
} }
} }

20
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs

@ -29,9 +29,9 @@ public class getNodeTools
return canPass; return canPass;
} }
public static void getLongNodes(MapUnity currentNode, int angle, int range,List<MapUnity> results) public static void getLongNodes(MapUnity currentNode, int angle, int range, HashSet<MapUnity> results)
{ {
List<MapUnity> result = new List<MapUnity>(); HashSet<MapUnity> result = new HashSet<MapUnity>();
MapUnity currentCheckNode = currentNode; MapUnity currentCheckNode = currentNode;
for (int i = 0; i < range; i++) for (int i = 0; i < range; i++)
{ {
@ -46,7 +46,7 @@ public class getNodeTools
} }
} }
public static bool tryGetNode(MapUnity currentNode, List<MapUnity> results) public static bool tryGetNode(MapUnity currentNode, HashSet<MapUnity> results)
{ {
bool canPass = true; bool canPass = true;
if (currentNode == null) if (currentNode == null)
@ -71,18 +71,18 @@ public class getNodeTools
return canPass; return canPass;
} }
public static void getCircleNode(List<MapUnity> nodeList,int range) public static void getCircleNode(HashSet<MapUnity> nodeList,int range)
{ {
for (int i = 0;i < range;i++) for (int i = 0;i < range;i++)
{ {
getNearbyNode(nodeList); getNearbyNode(nodeList);
} }
} }
public static void getNearbyNode(List<MapUnity> nodeList) public static void getNearbyNode(HashSet<MapUnity> nodeList)
{ {
// 创建一个副本以避免遍历时修改原集合 // 创建一个副本以避免遍历时修改原集合
List<MapUnity> nodesCopy = new List<MapUnity>(nodeList); HashSet<MapUnity> nodesCopy = new HashSet<MapUnity>(nodeList);
List<MapUnity> nodesToAdd = new List<MapUnity>(); // 临时列表存储要添加的节点 HashSet<MapUnity> nodesToAdd = new HashSet<MapUnity>(); // 临时列表存储要添加的节点
foreach (var node in nodesCopy) foreach (var node in nodesCopy)
{ {
@ -97,8 +97,9 @@ public class getNodeTools
} }
public static void checkListPass(List<MapUnity> mapUnityList, MapUnity mapUnity) public static void checkListPass(HashSet<MapUnity> mapUnitySet, MapUnity mapUnity)
{ {
List<MapUnity> mapUnityList=new List<MapUnity>(mapUnitySet);
for (int i = mapUnityList.Count - 1; i >= 0; i--) for (int i = mapUnityList.Count - 1; i >= 0; i--)
{ {
@ -107,7 +108,8 @@ public class getNodeTools
mapUnityList.RemoveAt(i); mapUnityList.RemoveAt(i);
} }
} }
mapUnitySet.Clear();
mapUnitySet.UnionWith(mapUnityList);
} }
public static bool checkNodePass(MapUnity mapUnity, MapUnity centerMapUnity) public static bool checkNodePass(MapUnity mapUnity, MapUnity centerMapUnity)

12
ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs

@ -5,7 +5,7 @@ using UnityEngine;
public class DestructionManager : Singleton<DestructionManager> public class DestructionManager : Singleton<DestructionManager>
{ {
// Start is called before the first frame update // Start is called before the first frame update
public IEnumerator destoryAndUseCard(GameObject target, CardOriginalData cardOriginalData, List<MapUnity> influencePreviewPool, int cardIndex) public IEnumerator destoryAndUseCard(GameObject target, CardOriginalData cardOriginalData, HashSet<MapUnity> influencePreviewPool, int cardIndex)
{ {
if (!cardOriginalData.IsDisposable) if (!cardOriginalData.IsDisposable)
{ {
@ -19,9 +19,9 @@ public class DestructionManager : Singleton<DestructionManager>
yield return null; yield return null;
yield return StartCoroutine(TurnMaster.Instance.MoveCards()); 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(); GameManager.Instance.SyncColourCountUI();
//遍历范围预览池消除影响色 //遍历范围预览池消除影响色
@ -32,9 +32,9 @@ public class DestructionManager : Singleton<DestructionManager>
} }
GameManager.Instance.player.influencePreviewPool.Clear();*/ 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(); MapUnityManager.Instance.castPool.Clear();
@ -48,7 +48,7 @@ public class DestructionManager : Singleton<DestructionManager>
} }
public IEnumerator startDestoryAndUseCard(GameObject target, CardOriginalData cardOriginalData, List<MapUnity> influencePreviewPool, int cardIndex) public IEnumerator startDestoryAndUseCard(GameObject target, CardOriginalData cardOriginalData, HashSet<MapUnity> influencePreviewPool, int cardIndex)
{ {
yield return StartCoroutine(destoryAndUseCard(target, cardOriginalData, influencePreviewPool, cardIndex)); yield return StartCoroutine(destoryAndUseCard(target, cardOriginalData, influencePreviewPool, cardIndex));
Debug.Log("执行结束2"); Debug.Log("执行结束2");

18
ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs

@ -7,16 +7,15 @@ using UnityEngine;
public class MapUnityManager : Singleton<MapUnityManager> public class MapUnityManager : Singleton<MapUnityManager>
{ {
public List<MapUnity> castPool=new List<MapUnity>();//记录预览影响的对象池 public HashSet<MapUnity> castPool=new HashSet<MapUnity>();//记录预览影响的对象池
public List<MapUnity> findReachableTiles(MapUnity startNode, int movePoints) public HashSet<MapUnity> findReachableTiles(MapUnity startNode, int movePoints)
{ {
List<MapUnity> reachableNodes = new List<MapUnity>(); HashSet<MapUnity> reachableNodes = new HashSet<MapUnity>();
Queue<MapUnity> queue = new Queue<MapUnity>(); Queue<MapUnity> queue = new Queue<MapUnity>();
Dictionary<MapUnity, int> remainingMovePoints = new Dictionary<MapUnity, int>(); Dictionary<MapUnity, int> remainingMovePoints = new Dictionary<MapUnity, int>();
queue.Enqueue(startNode); queue.Enqueue(startNode);
remainingMovePoints[startNode] = movePoints; remainingMovePoints[startNode] = movePoints;
while (queue.Count > 0) while (queue.Count > 0)
{ {
MapUnity currentNode = queue.Dequeue(); MapUnity currentNode = queue.Dequeue();
@ -37,9 +36,6 @@ public class MapUnityManager : Singleton<MapUnityManager>
} }
} }
} }
//遍历影响池变色
return reachableNodes; return reachableNodes;
} }
@ -62,7 +58,7 @@ public class MapUnityManager : Singleton<MapUnityManager>
castPool.Remove(playerOn); castPool.Remove(playerOn);
} }
} }
castPool=MathTool.RemoveDuplicates(castPool); //castPool=MathTool.RemoveDuplicates(castPool);
Debug.Log("去除前数量是" + castPool.Count); Debug.Log("去除前数量是" + castPool.Count);
MapUnity playerOnNode = GameManager.Instance.playerOn.transform.GetComponent<MapUnity>(); MapUnity playerOnNode = GameManager.Instance.playerOn.transform.GetComponent<MapUnity>();
getNodeTools.checkListPass(castPool,playerOnNode); getNodeTools.checkListPass(castPool,playerOnNode);
@ -70,10 +66,10 @@ public class MapUnityManager : Singleton<MapUnityManager>
//getNodeTools.checkListPass(castPool); //getNodeTools.checkListPass(castPool);
//遍历影响池变色 //遍历影响池变色
Debug.Log("数量是" + castPool.Count); Debug.Log("数量是" + castPool.Count);
for (int i = 0; i < castPool.Count; i++) foreach (MapUnity mapUnity in castPool)
{ {
castPool[i].influenced = true; mapUnity.influenced = true;
castPool[i].choossedMark.GetComponent<Renderer>().material = castPool[i].red; mapUnity.choossedMark.GetComponent<Renderer>().material = mapUnity.red;
} }
} }
} }

3
ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs

@ -43,8 +43,9 @@ public class SettlementManager : Singleton<SettlementManager>
} }
} }
public IEnumerator settle(CardOriginalData cardOriginalData, List<MapUnity> influencePreviewPool, int cardIndex) public IEnumerator settle(CardOriginalData cardOriginalData, HashSet<MapUnity> influencePreviewPoolSet, int cardIndex)
{ {
List<MapUnity> influencePreviewPool=new List<MapUnity>(influencePreviewPoolSet);
Dictionary<string, string> trueFunctionVal = new Dictionary<string, string>(); Dictionary<string, string> trueFunctionVal = new Dictionary<string, string>();
bool canAdv = GameManager.Instance.SyncColourCountUI(); bool canAdv = GameManager.Instance.SyncColourCountUI();
GameManager.Instance.playerState.currentCost -= cardOriginalData.Cost; GameManager.Instance.playerState.currentCost -= cardOriginalData.Cost;

Loading…
Cancel
Save