再次同步更改
This commit is contained in:
@@ -9,37 +9,46 @@
|
||||
@end
|
||||
|
||||
// ===========================================================================================
|
||||
// 📖 故事结构总览 (Story Structure Overview)
|
||||
// 📖 故事结构总览 (Story Structure Overview) - 更新于 2025-09-19
|
||||
// ===========================================================================================
|
||||
//
|
||||
// 📊 剧情统计数据 (Story Statistics):
|
||||
// • 总节点数: 198 个故事节点
|
||||
// • 总选择数: 387 个互动选择
|
||||
// • 隐藏分支: 6 个秘密路径
|
||||
// • 秘密发现: 9 个隐藏秘密
|
||||
// • 地点探索: 8 个可发现地点
|
||||
// • 结局发现度: 23 个结局节点(循环重置点)
|
||||
// • 音频资源: 12 个背景音乐文件
|
||||
//
|
||||
// 🔍 第一部分:初始调查分支 (Initial Investigation Branch)
|
||||
// ├── 🕵️ 隐秘观察路径 - 潜行调查线
|
||||
// ├── 🕵️ 隐秘观察路径 - 潜行调查线 [stealth_observation]
|
||||
// ├── 🗣️ 直接对峙路径 - 主动接触线
|
||||
// └── 👂 偷听信息路径 - 情报收集线
|
||||
// └── 👂 偷听信息路径 - 情报收集线 [eavesdropping]
|
||||
//
|
||||
// 💾 第二部分:数据挖掘分支 (Data Mining Branch)
|
||||
// ├── 🔐 数据提取路径 - 真相挖掘线
|
||||
// ├── 🔐 数据提取路径 - 真相挖掘线 [data_extraction]
|
||||
// ├── 🌍 地球真相揭示 - 灾难真相线
|
||||
// └── 🧬 意识进化发现 - 科学探索线
|
||||
// └── 🧬 意识进化发现 - 科学探索线 [system_sabotage]
|
||||
//
|
||||
// 🌱 第三部分:花园治愈分支 (Garden Healing Branch)
|
||||
// ├── 🌿 花园合作路径 - 治愈成长线
|
||||
// ├── 🌿 花园合作路径 - 治愈成长线 [garden_cooperation]
|
||||
// ├── 🧘 哲学思辨路径 - 内心探索线
|
||||
// └── 🤝 伙伴关系路径 - 协作发展线
|
||||
//
|
||||
// 🧠 第四部分:记忆重建分支 (Memory Reconstruction Branch)
|
||||
// ├── 🔬 记忆重建路径 - 实验风险线
|
||||
// ├── 📸 照片反应路径 - 情感触发线
|
||||
// └── 😢 私人悲伤路径 - 内心治愈线
|
||||
// └── 😢 私人悲伤路径 - 内心治愈线 [hidden_marks_discovery]
|
||||
//
|
||||
// 🎭 第五部分:多重结局分支 (Multiple Endings Branch)
|
||||
// ├── 🕊️ 自由结局 - 重获新生
|
||||
// ├── 🛡️ 守护者结局 - 永恒使命
|
||||
// ├── 🦸 英雄结局 - 拯救世界
|
||||
// └── 🌟 完美结局 - 理想世界
|
||||
// ├── 🕊️ 自由结局 - 重获新生 [ending_freedom]
|
||||
// ├── 🛡️ 守护者结局 - 永恒使命 [ending_guardian]
|
||||
// ├── 🦸 英雄结局 - 拯救世界 [ending_heroic]
|
||||
// └── 🌟 完美结局 - 理想世界 [ending_perfect]
|
||||
//
|
||||
// 🔄 第六部分:循环与觉醒分支 (Loop & Awakening Branch)
|
||||
// ├── ⏰ 循环觉醒路径 - 时间重置线
|
||||
// ├── ⏰ 循环觉醒路径 - 时间重置线 [first_awakening]
|
||||
// ├── 🔍 神秘纸条路径 - 隐藏线索线
|
||||
// └── 🎵 录音设备路径 - 自我警告线
|
||||
//
|
||||
@@ -54,6 +63,11 @@
|
||||
// ├── health >= 40 & stamina >= 30: 解锁身体恢复任务
|
||||
// └── trust_level >= 10: 解锁完美时间线创造
|
||||
//
|
||||
// 🎯 结局发现度说明 (Ending Discovery Explanation):
|
||||
// 结局发现度统计所有能够跳转回 first_awakening 的节点数量,
|
||||
// 代表玩家可以体验到的不同结局和循环重置点的总数。
|
||||
// 当前版本包含 23 个不同的结局体验点。
|
||||
//
|
||||
// ===========================================================================================
|
||||
// ===========================================================================================
|
||||
// 🔍 第一部分:初始调查分支 (Initial Investigation Branch)
|
||||
|
||||
@@ -38,14 +38,13 @@ fun GameStatusPanel(
|
||||
val total = s.totalNodeCount.coerceAtLeast(1)
|
||||
val progress = (explored.toFloat() / total.toFloat())
|
||||
|
||||
// 隐藏分支目录(7项)
|
||||
// 隐藏分支目录(6项 - 根据最新分析结果更新)
|
||||
val hiddenBranches = listOf(
|
||||
"stealth_observation" to "隐秘观察",
|
||||
"eavesdropping" to "偷听",
|
||||
"system_sabotage" to "系统破坏",
|
||||
"data_extraction" to "访问机密数据库",
|
||||
"garden_cooperation" to "秘密花园",
|
||||
"hidden_records_discovery" to "隐藏记录发现",
|
||||
"hidden_marks_discovery" to "隐藏标记的发现"
|
||||
)
|
||||
val discovered = hiddenBranches.count { (id, _) -> s.nodesVisitedLifetime.contains(id) }
|
||||
@@ -123,13 +122,24 @@ fun GameStatusPanel(
|
||||
Divider(color = Color(0x2222DDFF))
|
||||
|
||||
// 发现统计(精简)
|
||||
Text("秘密:${s.secretsFound.size}", color = Color(0xFFCCCCCC), modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp))
|
||||
Text("秘密:${s.secretsFound.size}/9", color = Color(0xFFCCCCCC), modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp))
|
||||
if (s.secretsFound.isNotEmpty()) {
|
||||
Text(s.secretsFound.joinToString(), color = Color(0xFF888888), modifier = Modifier.fillMaxWidth().padding(start = 4.dp, bottom = 4.dp))
|
||||
}
|
||||
Text("地点:${s.locationsDiscovered.size}", color = Color(0xFFCCCCCC), modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp))
|
||||
Text("地点:${s.locationsDiscovered.size}/8", color = Color(0xFFCCCCCC), modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp))
|
||||
if (s.locationsDiscovered.isNotEmpty()) {
|
||||
Text(s.locationsDiscovered.joinToString(), color = Color(0xFF888888), modifier = Modifier.fillMaxWidth().padding(start = 4.dp))
|
||||
Text(s.locationsDiscovered.joinToString(), color = Color(0xFF888888), modifier = Modifier.fillMaxWidth().padding(start = 4.dp, bottom = 4.dp))
|
||||
}
|
||||
|
||||
// 结局发现度(新增)
|
||||
Text("结局发现度:${s.endingNodesDiscovered.size}/${s.totalEndingNodes}",
|
||||
color = Color(0xFFCCCCCC),
|
||||
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp))
|
||||
if (s.endingNodesDiscovered.isNotEmpty()) {
|
||||
val endingProgress = (s.endingNodesDiscovered.size.toFloat() / s.totalEndingNodes.toFloat() * 100).toInt()
|
||||
Text("已体验结局进度:${endingProgress}%",
|
||||
color = Color(0xFF888888),
|
||||
modifier = Modifier.fillMaxWidth().padding(start = 4.dp))
|
||||
}
|
||||
|
||||
// 高级信息(精简)
|
||||
|
||||
@@ -279,7 +279,9 @@ data class StoryStatusSnapshot(
|
||||
val flags: Set<String>,
|
||||
val choicesMade: Map<String, String>,
|
||||
val variables: Map<String, String>,
|
||||
val totalNodeCount: Int
|
||||
val totalNodeCount: Int,
|
||||
val endingNodesDiscovered: Set<String> = emptySet(), // 结局发现度:已发现的结局节点
|
||||
val totalEndingNodes: Int = 23 // 总结局节点数
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -81,6 +81,19 @@ class StoryManager(
|
||||
*/
|
||||
fun captureStatusSnapshot(): StoryStatusSnapshot {
|
||||
val gs = gameState
|
||||
// 计算结局发现度:统计已访问的结局节点(跳转到first_awakening的节点)
|
||||
val endingNodeIds = setOf(
|
||||
"ending_freedom", "ending_guardian", "ending_heroic", "ending_perfect",
|
||||
"denial_path", "body_restoration_quest_epilogue", "civilization_renarration",
|
||||
"anna_memorial_institute", "base_transformation", "collaboration_expansion",
|
||||
"complete_destruction_plan", "reactor_confrontation_path_final",
|
||||
"wholeness_ending_p2", "reality_stabilization", "reality_stabilization_p2",
|
||||
"eva_transcendence_ending", "anna_memory_healing_p2", "cosmic_guardians_ending_p2",
|
||||
"healing_civilization_final", "universal_rescue_ending_p2",
|
||||
"healing_civilization_final_p3", "harmony_guardians_final_p3"
|
||||
)
|
||||
val discoveredEndingNodes = gs.nodesVisitedLifetime.intersect(endingNodeIds)
|
||||
|
||||
return StoryStatusSnapshot(
|
||||
currentNodeId = gs.currentNodeId,
|
||||
health = gs.health,
|
||||
@@ -94,7 +107,9 @@ class StoryManager(
|
||||
flags = gs.flags.toSet(),
|
||||
choicesMade = gs.choicesMade.toMap(),
|
||||
variables = gs.variables.mapValues { it.value.toString() },
|
||||
totalNodeCount = getAllNodeIds().size
|
||||
totalNodeCount = getAllNodeIds().size,
|
||||
endingNodesDiscovered = discoveredEndingNodes,
|
||||
totalEndingNodes = endingNodeIds.size
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user