using System; using System.Collections.Generic; using Cielonos.MainGame.Map; using UnityEngine; namespace Cielonos.MainGame { [Serializable] public class RunMapNode { public Vector2Int gridPosition; // 节点在网格中的坐标 public MapNodeType nodeType; public Vector2 position; // UI 定位用 public ZoneData zoneData; // 关联的 ZoneData 资产(战斗节点,非战斗节点为 null) public List connectedPositions; // 双向连接的相邻节点坐标列表 /// /// 该节点的连接数(度数)。度数为 1 的节点为"死胡同"。 /// public int Degree => connectedPositions?.Count ?? 0; } public enum MapNodeType { Start = 0, // 起始节点 NoRewardNormalBattle = 10, // 普通战斗,无奖励 MinorRewardNormalBattle = 11, // 普通战斗,胜利后有次要奖励 MajorRewardNormalBattle = 12, // 普通战斗,胜利后有主要奖励 EliteBattle = 20, // 精英战斗(更强的敌人配置) BossBattle = 30, // Boss 战 MechanicalTable = 100, // 机械台(宝箱房,可获取装备) LogisticsCenter = 101, // 物流中心(商店) MedicalStation = 102, // 医疗站点(恢复HP) Event = 103, // 事件节点 } [Serializable] public class RunMapData { public Dictionary nodes; // 所有节点,按网格坐标索引 public Vector2Int startPosition; // 起始节点坐标 public Vector2Int bossPosition; // Boss 节点坐标 public int totalNodes; // 节点总数 } }