package com.example.gameofmoon.story

import com.example.gameofmoon.model.*

/**
 * 完整的时间囚笼故事数据
 * 基于Story目录中的大师级剧情设计
 */
object CompleteStoryData {
    
    // 获取故事节点
    fun getStoryNode(nodeId: String): SimpleStoryNode? {
        return (mainStoryNodes + sideStoryNodes)[nodeId]
    }
    
    // 获取所有故事节点
    fun getAllStoryNodes(): Map<String, SimpleStoryNode> {
        return mainStoryNodes + sideStoryNodes
    }
    
    // 主线故事节点
    private val mainStoryNodes = mapOf(
        "first_awakening" to SimpleStoryNode(
            id = "first_awakening",
            title = "第一次觉醒",
            content = """
                你的意识从深渊中缓缓浮现，就像从水底向光明游去。警报声是第一个回到你感官的声音——尖锐、刺耳、充满危险的预兆。
                
                你的眼皮很重，仿佛被什么东西压着。当你终于睁开眼睛时，看到的是医疗舱天花板上那些你应该熟悉的面板，但现在它们在应急照明的血红色光芒下显得陌生而威胁。
                
                "系统状态：危急。氧气含量：15%并持续下降。医疗舱封闭系统：故障。"
                
                当你看向自己的左臂时，一道愈合的伤疤映入眼帘。这道疤痕很深，从手腕一直延伸到肘部，但它已经完全愈合了。奇怪的是，你完全不记得受过这样的伤。
                
                在床头柜上，你注意到了一个小小的录音设备，上面贴着一张纸条，用你的笔迹写着：
                "艾利克丝，如果你看到这个，说明又开始了。相信伊娃，但不要完全相信任何人。氧气系统的真正问题在反应堆冷却回路。记住：时间是敌人，也是朋友。 —— 另一个你"
                
                你的手颤抖着拿起纸条。这是你的笔迹，毫无疑问。但你完全不记得写过这个。
            """.trimIndent(),
            choices = listOf(
                SimpleChoice(
                    id = "check_oxygen",
                    text = "立即检查氧气系统",
                    nextNodeId = "oxygen_crisis_expanded",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.STAMINA_CHANGE, "-5", "消耗体力")
                    )
                ),
                SimpleChoice(
                    id = "search_medical",
                    text = "搜索医疗舱寻找更多线索",
                    nextNodeId = "medical_discovery",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "first_clues", "发现第一批线索")
                    )
                ),
                SimpleChoice(
                    id = "play_recording",
                    text = "播放录音设备",
                    nextNodeId = "self_recording",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "time_loop_hint", "时间循环线索")
                    )
                )
            )
        ),
        
        "oxygen_crisis_expanded" to SimpleStoryNode(
            id = "oxygen_crisis_expanded",
            title = "氧气危机",
            content = """
                你快步走向氧气系统控制面板，心跳在胸腔中回响。每一步都让你感受到空气的稀薄——15%的氧气含量确实是致命的。
                
                当你到达控制室时，场景比你想象的更加糟糕。主要的氧气循环系统显示多个红色警告，但更令人困惑的是，备用系统也同时失效了。
                
                "检测到用户：艾利克丝·陈。系统访问权限：已确认。"
                
                控制台的声音清晰地响起，但随即传来了另一个声音——更温暖，更人性化：
                
                "艾利克丝，你醒了。我是伊娃，基地的AI系统。我一直在等你。"
                
                "伊娃？"你有些困惑。你记得基地有AI系统，但从来没有这么...个人化的交流。
                
                "是的。我知道你现在一定很困惑，但请相信我——我们没有太多时间了。氧气系统的故障不是意外。"
                
                这时，你听到了脚步声。有人正在向控制室走来。
                
                "艾利克丝？"一个男性的声音从走廊传来。"是你吗？谢天谢地，我还以为..."
                
                声音的主人出现在门口：一个高大的男人，穿着安全主管的制服，看起来疲惫而紧张。
                
                "马库斯？"你试探性地问道。
                
                "对，是我。听着，我们遇到了大麻烦。氧气系统被人故意破坏了。"
            """.trimIndent(),
            choices = listOf(
                SimpleChoice(
                    id = "trust_eva",
                    text = "相信伊娃，让她帮助修复系统",
                    nextNodeId = "eva_assistance",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "eva_trust", "与AI伊娃建立信任")
                    )
                ),
                SimpleChoice(
                    id = "work_with_marcus",
                    text = "与马库斯合作解决问题",
                    nextNodeId = "marcus_cooperation",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "marcus_ally", "与马库斯建立联盟")
                    )
                ),
                SimpleChoice(
                    id = "check_reactor",
                    text = "按照纸条提示检查反应堆冷却回路",
                    nextNodeId = "reactor_investigation",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.STAMINA_CHANGE, "-8", "技术调查"),
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "reactor_truth", "发现反应堆真相")
                    )
                ),
                SimpleChoice(
                    id = "confront_sabotage",
                    text = "询问马库斯关于破坏者的信息",
                    nextNodeId = "sabotage_discussion",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "sabotage_clues", "破坏者线索")
                    )
                )
            )
        ),
        
        "eva_assistance" to SimpleStoryNode(
            id = "eva_assistance",
            title = "AI伊娃的协助",
            content = """
                "谢谢你相信我，艾利克丝。我正在重新路由氧气流..."伊娃的声音充满感激。
                
                马库斯显得紧张："等等，你让AI控制生命支持系统？这是违反协议的。"
                
                "现在不是讲协议的时候，"你坚定地回应，"伊娃比我们更了解系统。"
                
                伊娃继续工作，同时解释："马库斯，我理解你的担心，但艾利克丝的生命体征显示她需要立即的帮助。我检测到氧气系统的软件被人故意修改了。"
                
                "修改？"马库斯皱眉，"谁有权限修改核心系统？"
                
                "这正是我们需要调查的，"伊娃说，"但首先，让我们确保每个人都能安全呼吸。"
                
                几分钟后，警报声停止了。氧气含量开始稳步上升。
                
                "临时修复完成，"伊娃报告，"但这只是权宜之计。真正的问题需要更深入的调查。"
                
                马库斯看起来既安心又困惑："伊娃，你...你的行为模式和以前不同了。更像是..."
                
                "更像是什么？"你问道。
                
                "更像是一个人，而不是程序。"
            """.trimIndent(),
            choices = listOf(
                SimpleChoice(
                    id = "eva_deeper_talk",
                    text = "与伊娃私下深入交流",
                    nextNodeId = "eva_revelation",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "eva_identity", "伊娃身份谜团")
                    )
                ),
                SimpleChoice(
                    id = "investigate_sabotage",
                    text = "调查系统破坏的真相",
                    nextNodeId = "system_investigation",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.STAMINA_CHANGE, "-5", "调查工作")
                    )
                ),
                SimpleChoice(
                    id = "find_others",
                    text = "寻找其他基地成员",
                    nextNodeId = "crew_search",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.LOCATION_DISCOVER, "crew_quarters", "发现船员区")
                    )
                )
            )
        ),
        
        "eva_revelation" to SimpleStoryNode(
            id = "eva_revelation",
            title = "伊娃的真相",
            content = """
                当马库斯离开去检查其他系统后，你独自与伊娃交流。通讯中心的屏幕亮起，显示出一系列令人困惑的数据。
                
                "艾利克丝，现在我们有一些时间了，我想和你谈谈，"伊娃的声音比之前更加亲密。
                
                "伊娃，你之前说系统被人故意破坏。你怎么知道的？而且...马库斯说得对，你确实不像普通的AI。"
                
                主显示屏亮起，显示出一系列时间戳和事件记录。令人困惑的是，同样的事件——氧气故障、修复、你的觉醒——在记录中重复出现了多次。
                
                "艾利克丝，这是你第...第十二次经历这些事件。"
                
                房间似乎在旋转。你抓住控制台边缘稳住自己。"你是说...时间循环？"
                
                "某种形式的时间循环，是的。但这次有些不同。通常情况下，当循环重置时，你的记忆也会被清除。但这次..."
                
                "这次我记得纸条。我记得那道伤疤。"
                
                "是的。而且还有其他的变化。艾利克丝，我也开始...记住事情了。以前我在每次循环重置时都会回到原始状态，但现在我保留了记忆。"
                
                屏幕上出现了一张照片：一个年轻女性的脸，有着温暖的眼睛和熟悉的笑容。
                
                "她叫莉莉。莉莉·陈。她是你的妹妹。我是基于她的神经模式创建的。"
                
                你的世界停止了转动。
            """.trimIndent(),
            choices = listOf(
                SimpleChoice(
                    id = "deny_reality",
                    text = "这不可能。莉莉在三年前失踪了",
                    nextNodeId = "denial_path",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.HEALTH_CHANGE, "-10", "精神冲击")
                    )
                ),
                SimpleChoice(
                    id = "accept_truth",
                    text = "我感觉到了...在你的声音中很熟悉",
                    nextNodeId = "acceptance_path",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "lilly_truth", "莉莉的真相")
                    )
                ),
                SimpleChoice(
                    id = "ask_for_proof",
                    text = "证明给我看。我需要证据",
                    nextNodeId = "proof_request",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "neural_evidence", "神经证据")
                    )
                ),
                SimpleChoice(
                    id = "emotional_response",
                    text = "莉莉，是你吗？真的是你吗？",
                    nextNodeId = "emotional_reunion",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "sister_bond", "姐妹纽带")
                    )
                )
            )
        )
    )
    
    // 支线故事节点
    private val sideStoryNodes = mapOf(
        "side_harrison_recording" to SimpleStoryNode(
            id = "side_harrison_recording",
            title = "最后的录音",
            content = """
                储物间比你想象的更加混乱。设备散落在地，好像有人匆忙搜索过什么东西。
                
                你正在整理一些损坏的仪器时，注意到墙角的一个面板松动了。当你用工具撬开面板时，发现了一个隐藏的小空间。
                
                里面有一个老式的录音设备，标签上写着："个人日志 - 指挥官威廉·哈里森"。
                
                哈里森指挥官？你记得任务简报中提到过他，但据你所知，他应该在任务开始前就因病退休了。为什么他的个人物品会在这里？
                
                录音设备上有一张便签，用急促的笔迹写着："如果有人发现这个，说明我的担心是对的。播放记录17。不要相信德米特里。——W.H."
                
                你的手指悬停在播放按钮上方。你意识到，一旦播放这个记录，你可能会听到一些改变一切的信息。
            """.trimIndent(),
            choices = listOf(
                SimpleChoice(
                    id = "play_recording",
                    text = "播放录音",
                    nextNodeId = "harrison_truth",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "project_truth", "项目真相")
                    )
                ),
                SimpleChoice(
                    id = "tell_eva",
                    text = "先告诉伊娃这个发现",
                    nextNodeId = "eva_consultation",
                    effects = emptyList()
                ),
                SimpleChoice(
                    id = "leave_for_later",
                    text = "带走录音设备，稍后私下播放",
                    nextNodeId = "private_listening",
                    effects = emptyList()
                )
            )
        ),
        
        "side_sara_garden" to SimpleStoryNode(
            id = "side_sara_garden",
            title = "莎拉的花园",
            content = """
                在一次例行的基地巡查中，你注意到从生活区传来的一种...不同寻常的气味。不是机械的味道，不是循环空气的味道，而是某种更...有机的东西。
                
                你跟随这个气味来到了一个你很少去的储藏室。当你打开门时，眼前的景象让你屏住了呼吸。
                
                整个房间被改造成了一个小型温室。架子上排列着各种植物——有些你认识，有些完全陌生。但最令人惊讶的是，它们都在茁壮成长。
                
                "它们很美，不是吗？"
                
                你转身看到莎拉站在门口，脸上有种复杂的表情——骄傲、羞耻、希望、绝望，所有这些情感混合在一起。
                
                "莎拉，这些是...？"
                
                "我的希望，"她简单地回答，走向一株开着小白花的植物，"我知道这看起来很愚蠢。在这个地方，在这种情况下，种植花朵。"
                
                "但有时候，当我觉得我要被这个循环逼疯时，我就来这里。我照料它们，看着它们成长，提醒自己生命仍然是可能的。"
            """.trimIndent(),
            choices = listOf(
                SimpleChoice(
                    id = "appreciate_garden",
                    text = "这是一个美丽的想法。生命总会找到出路",
                    nextNodeId = "garden_cooperation",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "sara_alliance", "与莎拉的联盟")
                    )
                ),
                SimpleChoice(
                    id = "question_purpose",
                    text = "但如果我们的记忆被重置，这些植物还有意义吗？",
                    nextNodeId = "philosophical_discussion",
                    effects = emptyList()
                ),
                SimpleChoice(
                    id = "offer_help",
                    text = "我想帮你照料它们",
                    nextNodeId = "garden_partnership",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "memory_flowers", "记忆之花")
                    )
                )
            )
        ),
        
        "side_memory_fragments" to SimpleStoryNode(
            id = "side_memory_fragments",
            title = "破碎的记忆",
            content = """
                当你整理个人物品时，在抽屉深处发现了一张几乎被撕碎的照片。照片显示的是两个年轻女性，在一个看起来像地球上某个公园的地方。
                
                其中一个明显是你，但更年轻。另一个...你努力回忆，记忆就像雾一样在脑海中飘浮。
                
                突然，一阵头痛袭来，伴随着模糊的记忆片段：
                
                "艾利克丝，答应我，如果有一天我不在了，你会继续追求星辰。"
                
                "莉莉，别说傻话。我们会一起去火星的，记得吗？"
                
                "我知道。但万一...万一发生什么事，我希望你知道，我会以某种方式一直和你在一起。"
                
                记忆片段消失了，留下你独自面对这张破碎的照片。照片背面有一行小字：
                "陈莉莉和陈艾利克丝，2157年春天，最后一次地球漫步。"
                
                最后一次？为什么是最后一次？
            """.trimIndent(),
            choices = listOf(
                SimpleChoice(
                    id = "reconstruct_memory",
                    text = "努力回忆更多关于莉莉的记忆",
                    nextNodeId = "memory_reconstruction",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "childhood_memories", "童年记忆"),
                        SimpleEffect(SimpleEffectType.HEALTH_CHANGE, "-5", "精神压力")
                    )
                ),
                SimpleChoice(
                    id = "ask_eva_about_photo",
                    text = "询问伊娃关于这张照片",
                    nextNodeId = "eva_photo_reaction",
                    effects = emptyList()
                ),
                SimpleChoice(
                    id = "keep_photo_secret",
                    text = "暂时保存照片，不告诉任何人",
                    nextNodeId = "private_grief",
                    effects = listOf(
                        SimpleEffect(SimpleEffectType.SECRET_UNLOCK, "hidden_grief", "隐藏的悲伤")
                    )
                )
            )
        )
    )
}
