using System.Collections.Generic; using System.Threading.Tasks; namespace BaseGames.Core { /// /// 存档服务接口。对外暴露存档系统的全部公开 API,供其他模块通过 ServiceLocator 访问。 /// 实现由 BaseGames.Core.Save 程序集的 SaveManager 经 SaveServiceAdapter 桥接提供。 /// public interface ISaveService { // ── I/O 操作 ────────────────────────────────────────────────────── /// 将当前游戏状态写入指定存档槽。 Task SaveAsync(int slot); /// 从指定存档槽加载游戏状态。成功返回 true,存档损坏/不存在返回 false。 Task LoadAsync(int slot); /// 快速存档(覆盖快速存档槽,fire-and-forget)。 void QuickSave(); /// 快速读档(从快速存档槽加载,fire-and-forget)。 void QuickLoad(); /// 快速读档(awaitable 版本)。 Task QuickLoadAsync(); /// 指定槽是否存在有效存档。 bool HasSave(int slot); /// 当前活跃存档槽(0–2)。 int ActiveSlot { get; } /// 删除指定存档槽数据。 Task DeleteSlotAsync(int slot); // ── 存档点 ──────────────────────────────────────────────────────── /// 上次存档时的场景名(用于死亡复活跳转)。 string LastCheckpointScene { get; } /// 上次存档时的出生点 ID。 string LastCheckpointSpawnId { get; } // ── 世界状态查询 ────────────────────────────────────────────────── /// 指定收藏物 ID 是否已拾取。 bool IsWorldCollected(string id); /// 指定门 / 进程锁 ID 是否已开启。 bool IsDoorOpened(string id); /// 指定 Boss ID 是否已被击败。 bool IsBossDefeated(string bossId); /// 当前存档中玩家最大 HP(存档未加载时返回 0)。 int GetPlayerMaxHP(); /// 是否为指定挑战房间的首次通关(首次调用返回 true 并标记)。 bool IsFirstClear(string challengeId); // ── 世界标志 & 事件链 ───────────────────────────────────────────── /// 读取世界标志位。 bool GetFlag(string flagId); /// 写入世界标志位。 void SetFlag(string flagId, bool value); /// 获取所有已完成的事件链 ID。 IEnumerable GetCompletedChains(); /// 标记某条事件链已完成。 void SetChainCompleted(string chainId); } }