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; // 是否通关
}
}