using System; using System.Collections.Generic; using SLSUtilities.General; using UnityEngine; namespace Cielonos.MainGame { [Serializable] public class RunState { // ---------------------------------------------------------------- // 随机数 // ---------------------------------------------------------------- /// 本局的随机数管理器,所有子系统从此派生 RNG。 [NonSerialized] public Randomizer randomizer; // ---------------------------------------------------------------- // 地图与位置 // ---------------------------------------------------------------- public RunMapData mapData; // 本局生成的地图 public Vector2Int currentPosition; // 当前所在节点的网格坐标 public HashSet visitedNodes; // 已访问节点坐标集合 public HashSet exhaustedNodes; // 已用完的单次使用节点(MedicalStation、MechanicalTable) public HashSet completedNodes; // 已完成的节点(战斗已清空、事件已完成等),防止重复结算 // ---------------------------------------------------------------- // 迷雾探测 // ---------------------------------------------------------------- /// /// 探测半径(BFS 步数)。默认 1,表示只显示已访问节点周围1格的邻居。 /// 可通过装备/道具增加,扩大可视范围。 /// public int scoutRange = 1; /// /// 被永久揭示的节点坐标集合。 /// 用于道具效果(如"揭示某个特定节点")。 /// public HashSet permanentlyRevealedNodes; /// /// 被永久揭示的节点类型集合。 /// 用于道具效果(如"揭示地图上所有商店"、"揭示地图上所有医疗站")。 /// public HashSet permanentlyRevealedTypes; // ---------------------------------------------------------------- // 统计数据 // ---------------------------------------------------------------- public float elapsedTime; // 本局已用时间 public int roomsCleared; // 已清理房间数 public int enemiesDefeated; // 已击杀敌人数 public int hurtCount; // 实际扣除生命值的受伤次数(受击但被盾完全抵挡不计) public bool isCompleted; // 是否通关 } }