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()
{
//遍历范围预览池消除影响色
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<MapUnity>();
@ -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<Renderer>().material = cardEntity.influencePreviewPool[i].yellow;
mapUnity.influenced = true;
mapUnity.choossedMark.GetComponent<Renderer>().material =mapUnity.yellow;
}
}
@ -366,12 +366,12 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
eventData.pointerCurrentRaycast.gameObject.transform.SetParent(originalParent);
GetComponent<CanvasGroup>().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<CanvasGroup>().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();
}

2
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<MapUnity> influencePreviewPool=new List<MapUnity>();//卡牌的影响范围
public HashSet<MapUnity> influencePreviewPool = new HashSet<MapUnity>();//卡牌的影响范围
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];
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ÒÆ¶¯

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++)
{
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;

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

@ -4,5 +4,5 @@ using UnityEngine;
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.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 30.0f, () =>
{

2
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<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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)
{
influencePreviewPool.Clear();
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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.Add(currentNode);
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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)
{
influencePreviewPool.Clear();
angleActions = new Dictionary<float, Func<List<MapUnity>>>
angleActions = new Dictionary<float, Func<HashSet<MapUnity>>>
{
{ 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");
influencePreviewPool.Add(node);

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

@ -5,9 +5,9 @@ using UnityEngine;
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 bool tryGetNodeInfluencedable(MapUnity currentNode)
@ -35,7 +35,7 @@ public class EffectRangeHandlerBase : EffectRangeHandler
return canPass;
}
public List<MapUnity> HandleAngleWithResult(float angle)
public HashSet<MapUnity> HandleAngleWithResult(float angle)
{
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 startPositionX, startPositionY;
public List<MapUnity> influencePreviewPool;//¼Ç¼ԤÀÀÓ°ÏìµÄ¶ÔÏó³Ø
public HashSet<MapUnity> influencePreviewPool=new HashSet<MapUnity>();//¼Ç¼ԤÀÀÓ°ÏìµÄ¶ÔÏó³Ø
[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<Renderer>().material = influencePreviewPool[i].red;
mapUnity.influenced = true;
mapUnity.choossedMark.GetComponent<Renderer>().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<influencePreviewPool.Count;i++)
foreach (MapUnity mapUnity in influencePreviewPool)
{
influencePreviewPool[i].influenced = true;
influencePreviewPool[i].choossedMark.GetComponent<Renderer>().material = influencePreviewPool[i].red;
mapUnity.influenced = true;
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;
}
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;
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;
if (currentNode == null)
@ -71,18 +71,18 @@ public class getNodeTools
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++)
{
getNearbyNode(nodeList);
}
}
public static void getNearbyNode(List<MapUnity> nodeList)
public static void getNearbyNode(HashSet<MapUnity> nodeList)
{
// 创建一个副本以避免遍历时修改原集合
List<MapUnity> nodesCopy = new List<MapUnity>(nodeList);
List<MapUnity> nodesToAdd = new List<MapUnity>(); // 临时列表存储要添加的节点
HashSet<MapUnity> nodesCopy = new HashSet<MapUnity>(nodeList);
HashSet<MapUnity> nodesToAdd = new HashSet<MapUnity>(); // 临时列表存储要添加的节点
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--)
{
@ -107,7 +108,8 @@ public class getNodeTools
mapUnityList.RemoveAt(i);
}
}
mapUnitySet.Clear();
mapUnitySet.UnionWith(mapUnityList);
}
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>
{
// 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)
{
@ -19,9 +19,9 @@ public class DestructionManager : Singleton<DestructionManager>
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<DestructionManager>
}
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<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));
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 List<MapUnity> castPool=new List<MapUnity>();//记录预览影响的对象池
public List<MapUnity> findReachableTiles(MapUnity startNode, int movePoints)
public HashSet<MapUnity> castPool=new HashSet<MapUnity>();//记录预览影响的对象池
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>();
Dictionary<MapUnity, int> remainingMovePoints = new Dictionary<MapUnity, int>();
queue.Enqueue(startNode);
remainingMovePoints[startNode] = movePoints;
while (queue.Count > 0)
{
MapUnity currentNode = queue.Dequeue();
@ -37,9 +36,6 @@ public class MapUnityManager : Singleton<MapUnityManager>
}
}
}
//遍历影响池变色
return reachableNodes;
}
@ -62,7 +58,7 @@ public class MapUnityManager : Singleton<MapUnityManager>
castPool.Remove(playerOn);
}
}
castPool=MathTool.RemoveDuplicates(castPool);
//castPool=MathTool.RemoveDuplicates(castPool);
Debug.Log("去除前数量是" + castPool.Count);
MapUnity playerOnNode = GameManager.Instance.playerOn.transform.GetComponent<MapUnity>();
getNodeTools.checkListPass(castPool,playerOnNode);
@ -70,10 +66,10 @@ public class MapUnityManager : Singleton<MapUnityManager>
//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<Renderer>().material = castPool[i].red;
mapUnity.influenced = true;
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>();
bool canAdv = GameManager.Instance.SyncColourCountUI();
GameManager.Instance.playerState.currentCost -= cardOriginalData.Cost;

Loading…
Cancel
Save