namespace BaseGames.Core
{
// =====================================================================
// GameIds —— 全局字符串 ID 常量(架构 02_CoreModule §IDs)
// =====================================================================
// 目的:消除散落在配置 SO 和代码中的 magic string,
// 提供编译期校验 + IDE 自动补全 + 全局唯一检索点。
//
// 使用方式:
// ① Inspector 侧:在 ScriptableObject 的 string 字段输入对应常量值(仅此处可见文本)。
// ② 代码侧:直接引用常量,如 GameIds.Boss.ForestBoss,避免硬编码字符串。
//
// 新增规则:
// - 按域划分嵌套静态类(Boss / Chain / Quest / Ability / Scene / Collectible / Npc)
// - 命名风格:PascalCase,与 Unity 资产命名对齐(如 "Chain_BossForest_Defeated")
// - 不要将常量值改名,只新增;如需废弃请标注 [System.Obsolete]
// =====================================================================
public static class GameIds
{
// ── Boss IDs ───────────────────────────────────────────────────────
/// Boss 唯一标识符,对应 BossDefeatedCondition.bossId 及 BossDataSO.bossId。
public static class Boss
{
public const string ForestBoss = "Boss_Forest";
public const string CaveBoss = "Boss_Cave";
public const string CastleBoss = "Boss_Castle";
public const string FinalBoss = "Boss_Final";
}
// ── Chain IDs ──────────────────────────────────────────────────────
/// 事件链唯一标识符,对应 EventChainSO.chainId 及 ChainCompletedCondition.chainId。
public static class Chain
{
public const string BossForestDefeated = "Chain_BossForest_Defeated";
public const string CaveBossDefeated = "Chain_CaveBoss_Defeated";
public const string CastleBossDefeated = "Chain_CastleBoss_Defeated";
public const string FinalBossDefeated = "Chain_FinalBoss_Defeated";
public const string TutorialComplete = "Chain_Tutorial_Complete";
}
// ── Quest IDs ──────────────────────────────────────────────────────
/// 任务唯一标识符,对应 QuestSO.questId。
public static class Quest
{
public const string MainQuest_Chapter1 = "Quest_Main_Ch1";
public const string MainQuest_Chapter2 = "Quest_Main_Ch2";
public const string SideQuest_Merchant = "Quest_Side_Merchant";
}
// ── Ability IDs ────────────────────────────────────────────────────
/// 能力/技能唯一标识符,对应 AbilityUnlockedCondition.abilityId。
public static class Ability
{
public const string DoubleJump = "Ability_DoubleJump";
public const string Dash = "Ability_Dash";
public const string WallJump = "Ability_WallJump";
public const string Parry = "Ability_Parry";
}
// ── Scene / Room Names ─────────────────────────────────────────────
/// 场景/房间标识符,对应 RoomEnteredCondition.sceneName。与 Unity Build Settings 场景名对齐。
public static class Scene
{
public const string MainMenu = "Scene_MainMenu"; // 与 AddressKeys.SceneMainMenu 对齐
public const string Forest = "Scene_Forest";
public const string Cave = "Scene_Cave";
public const string Castle = "Scene_Castle";
public const string Hub = "Scene_Hub";
public const string Tutorial = "Scene_Tutorial";
}
// ── Collectible IDs ────────────────────────────────────────────────
/// 可收集物唯一标识符,对应 CollectibleCollectedCondition.itemId。
public static class Collectible
{
public const string AncientKey = "Item_AncientKey";
public const string MapFragment = "Item_MapFragment";
}
// ── NPC IDs ────────────────────────────────────────────────────────
/// NPC 唯一标识符,对应 DialogueCompletedCondition.npcId。
public static class Npc
{
public const string OldMerchant = "Npc_OldMerchant";
public const string SageGuard = "Npc_SageGuard";
}
// ── Flag IDs ───────────────────────────────────────────────────────
/// 全局布尔存档标记,对应 FlagSetCondition.flagId 及 SaveManager.SetFlag/GetFlag。
public static class Flag
{
public const string TutorialShown = "Flag_TutorialShown";
public const string FirstDeath = "Flag_FirstDeath";
public const string MerchantIntroduced = "Flag_MerchantIntroduced";
}
}
}