STUDIO HAZE · kakao
Topaz source
Open by house policy. Topaz is our own language.
Topaz 5.6.1 · 4 files
games/domain-war/data/scenes.tpz
Topaz · 17030 B · Original file
1
// 도메인 전쟁 장면 그래프 데이터. data/gameContent JSON의 모든 장면과 선택지를 Topaz 레코드로 포팅한다.2
// Domain War scene graph data. Every scene and choice edge from data/gameContent is ported as typed Topaz records.3
//4
// 하우스룰(data): 순수 불변 데이터만 둔다. 플레이어에게 보이는 문장은 절대 담지 않고 i18n 키만 담는다.5
// House rule (data): immutable pure data only. Player-visible copy never lives here; only i18n keys do.6
//7
// 패리티 표식(parity marker): 선택지의 원래다음(oldNext)은 JSON의 choices[].next 값 그대로다.8
// The parity marker oldNext is copied byte-for-byte from JSON choices[].next.9
//10
// Key identifiers: 장면아이디=SceneId, 텍스트키=TextKey, 선택지=Choice, 장면=Scene, 장면찾기=findScene.12
export type 장면아이디 = "ch1_scene0" | "ch1_scene1" | "ch1_scene2" | "ch1_scene3" | "ch1_scene4" | "ch1_scene5" | "ch2_scene0" | "ch2_scene1" | "ch2_scene2" | "ch2_scene3" | "ch2_scene4" | "ch2_scene5" | "ch2_scene6" | "ch3_scene0" | "ch3_scene1" | "ch3_scene2" | "ch3_scene3" | "ch3_scene4" | "ch4_scene0" | "ch4_scene1" | "ch4_scene2" | "ch4_scene3" | "ch4_scene4" | "ch5_scene0" | "ch5_scene1" | "ch5_scene2" | "ch5_scene3" | "ch5_scene4" | "ch5_scene5" | "ch6_scene0" | "ch6_scene1" | "ch6_scene2" | "ch6_scene3" | "ch6_scene4" | "ch6_scene5" | "ch7_scene0" | "ch7_scene1" | "ch7_scene2" | "ch7_scene3" | "ch7_scene4" | "ch8_scene0" | "ch8_scene1" | "ch8_scene2" | "ch8_scene3" | "ch8_scene4" | "ch9_scene0" | "ch9_scene1" | "ch9_scene2"14
export type 텍스트키 = "domainCh1_scene0_text" | "domainCh1_scene0_choice0_text" | "domainCh1_scene0_choice1_text" | "domainCh1_scene1_text" | "domainCh1_scene1_choice0_text" | "domainCh1_scene1_choice1_text" | "domainCh1_scene2_text" | "domainCh1_scene2_choice0_text" | "domainCh1_scene2_choice1_text" | "domainCh1_scene3_text" | "domainCh1_scene3_choice0_text" | "domainCh1_scene4_text" | "domainCh1_scene4_choice0_text" | "domainCh1_scene5_text" | "domainCh1_scene5_choice0_text" | "domainCh2_scene0_text" | "domainCh2_scene0_choice0_text" | "domainCh2_scene0_choice1_text" | "domainCh2_scene1_text" | "domainCh2_scene1_choice0_text" | "domainCh2_scene1_choice1_text" | "domainCh2_scene2_text" | "domainCh2_scene2_choice0_text" | "domainCh2_scene2_choice1_text" | "domainCh2_scene3_text" | "domainCh2_scene3_choice0_text" | "domainCh2_scene4_text" | "domainCh2_scene4_choice0_text" | "domainCh2_scene5_text" | "domainCh2_scene5_choice0_text" | "domainCh2_scene6_text" | "domainCh2_scene6_choice0_text" | "domainCh3_scene0_text" | "domainCh3_scene0_choice0_text" | "domainCh3_scene0_choice1_text" | "domainCh3_scene0_choice2_text" | "domainCh3_scene1_text" | "domainCh3_scene1_choice0_text" | "domainCh3_scene1_choice1_text" | "domainCh3_scene2_text" | "domainCh3_scene2_choice0_text" | "domainCh3_scene2_choice1_text" | "domainCh3_scene3_text" | "domainCh3_scene3_choice0_text" | "domainCh3_scene4_text" | "domainCh3_scene4_choice0_text" | "domainCh4_scene0_text" | "domainCh4_scene0_choice0_text" | "domainCh4_scene0_choice1_text" | "domainCh4_scene1_text" | "domainCh4_scene1_choice0_text" | "domainCh4_scene1_choice1_text" | "domainCh4_scene2_text" | "domainCh4_scene2_choice0_text" | "domainCh4_scene2_choice1_text" | "domainCh4_scene3_text" | "domainCh4_scene3_choice0_text" | "domainCh4_scene4_text" | "domainCh4_scene4_choice0_text" | "domainCh5_scene0_text" | "domainCh5_scene0_choice0_text" | "domainCh5_scene0_choice1_text" | "domainCh5_scene0_choice2_text" | "domainCh5_scene1_text" | "domainCh5_scene1_choice0_text" | "domainCh5_scene2_text" | "domainCh5_scene2_choice0_text" | "domainCh5_scene3_text" | "domainCh5_scene3_choice0_text" | "domainCh5_scene4_text" | "domainCh5_scene4_choice0_text" | "domainCh5_scene5_text" | "domainCh5_scene5_choice0_text" | "domainCh6_scene0_text" | "domainCh6_scene0_choice0_text" | "domainCh6_scene0_choice1_text" | "domainCh6_scene0_choice2_text" | "domainCh6_scene1_text" | "domainCh6_scene1_choice0_text" | "domainCh6_scene2_text" | "domainCh6_scene2_choice0_text" | "domainCh6_scene3_text" | "domainCh6_scene3_choice0_text" | "domainCh6_scene4_text" | "domainCh6_scene4_choice0_text" | "domainCh6_scene5_text" | "domainCh6_scene5_choice0_text" | "domainCh7_scene0_text" | "domainCh7_scene0_choice0_text" | "domainCh7_scene0_choice1_text" | "domainCh7_scene0_choice2_text" | "domainCh7_scene1_text" | "domainCh7_scene1_choice0_text" | "domainCh7_scene2_text" | "domainCh7_scene2_choice0_text" | "domainCh7_scene3_text" | "domainCh7_scene3_choice0_text" | "domainCh7_scene4_text" | "domainCh7_scene4_choice0_text" | "domainCh8_scene0_text" | "domainCh8_scene0_choice0_text" | "domainCh8_scene0_choice1_text" | "domainCh8_scene0_choice2_text" | "domainCh8_scene1_text" | "domainCh8_scene1_choice0_text" | "domainCh8_scene2_text" | "domainCh8_scene2_choice0_text" | "domainCh8_scene3_text" | "domainCh8_scene3_choice0_text" | "domainCh8_scene4_text" | "domainCh8_scene4_choice0_text" | "domainCh9_scene0_text" | "domainCh9_scene0_choice0_text" | "domainCh9_scene1_text" | "domainCh9_scene1_choice0_text" | "domainCh9_scene2_text" | "domainCh9_scene2_choice0_text"16
export type 선택지 = {17
텍스트키: 텍스트키,18
다음: 장면아이디,19
원래다음: int20
}22
export type 장면 = {23
아이디: 장면아이디,24
텍스트키: 텍스트키,25
선택지들: Array<선택지>26
}28
function 선택(텍스트: 텍스트키, 다음: 장면아이디, 원래다음: int) -> 선택지 {29
{ 텍스트키: 텍스트, 다음: 다음, 원래다음: 원래다음 }30
}32
function 장면만들기(아이디: 장면아이디, 텍스트: 텍스트키, 선택지들: Array<선택지>) -> 장면 {33
{ 아이디: 아이디, 텍스트키: 텍스트, 선택지들: 선택지들 }34
}36
export function 시작장면() -> 장면아이디 { "ch1_scene0" }38
// STATE와 URL에서 들어온 문자열을 닫힌 장면 union으로 좁힌다. 손상 값은 시작 장면으로 복귀한다.39
// Narrow a STATE/URL string into the closed SceneId union. Corrupt values safely return to the start scene.40
export function 장면파싱(토큰: string) -> 장면아이디 {41
match 토큰 {42
case "ch1_scene0" => "ch1_scene0"43
case "ch1_scene1" => "ch1_scene1"44
case "ch1_scene2" => "ch1_scene2"45
case "ch1_scene3" => "ch1_scene3"46
case "ch1_scene4" => "ch1_scene4"47
case "ch1_scene5" => "ch1_scene5"48
case "ch2_scene0" => "ch2_scene0"49
case "ch2_scene1" => "ch2_scene1"50
case "ch2_scene2" => "ch2_scene2"51
case "ch2_scene3" => "ch2_scene3"52
case "ch2_scene4" => "ch2_scene4"53
case "ch2_scene5" => "ch2_scene5"54
case "ch2_scene6" => "ch2_scene6"55
case "ch3_scene0" => "ch3_scene0"56
case "ch3_scene1" => "ch3_scene1"57
case "ch3_scene2" => "ch3_scene2"58
case "ch3_scene3" => "ch3_scene3"59
case "ch3_scene4" => "ch3_scene4"60
case "ch4_scene0" => "ch4_scene0"61
case "ch4_scene1" => "ch4_scene1"62
case "ch4_scene2" => "ch4_scene2"63
case "ch4_scene3" => "ch4_scene3"64
case "ch4_scene4" => "ch4_scene4"65
case "ch5_scene0" => "ch5_scene0"66
case "ch5_scene1" => "ch5_scene1"67
case "ch5_scene2" => "ch5_scene2"68
case "ch5_scene3" => "ch5_scene3"69
case "ch5_scene4" => "ch5_scene4"70
case "ch5_scene5" => "ch5_scene5"71
case "ch6_scene0" => "ch6_scene0"72
case "ch6_scene1" => "ch6_scene1"73
case "ch6_scene2" => "ch6_scene2"74
case "ch6_scene3" => "ch6_scene3"75
case "ch6_scene4" => "ch6_scene4"76
case "ch6_scene5" => "ch6_scene5"77
case "ch7_scene0" => "ch7_scene0"78
case "ch7_scene1" => "ch7_scene1"79
case "ch7_scene2" => "ch7_scene2"80
case "ch7_scene3" => "ch7_scene3"81
case "ch7_scene4" => "ch7_scene4"82
case "ch8_scene0" => "ch8_scene0"83
case "ch8_scene1" => "ch8_scene1"84
case "ch8_scene2" => "ch8_scene2"85
case "ch8_scene3" => "ch8_scene3"86
case "ch8_scene4" => "ch8_scene4"87
case "ch9_scene0" => "ch9_scene0"88
case "ch9_scene1" => "ch9_scene1"89
case "ch9_scene2" => "ch9_scene2"90
case _ => 시작장면()91
}92
}94
// 장면 데이터는 match 하나로 닫혀 있다. 새 장면을 추가하면 이 함수가 exhaustive gate가 된다.95
// Scene data is closed over one match. Adding a scene makes this function the exhaustive gate.96
export function 장면찾기(아이디: 장면아이디) -> 장면 {97
match 아이디 {98
case "ch1_scene0" => 장면만들기("ch1_scene0", "domainCh1_scene0_text", [99
선택("domainCh1_scene0_choice0_text", "ch1_scene1", 1),100
선택("domainCh1_scene0_choice1_text", "ch1_scene2", 2)101
])102
case "ch1_scene1" => 장면만들기("ch1_scene1", "domainCh1_scene1_text", [103
선택("domainCh1_scene1_choice0_text", "ch1_scene3", 3),104
선택("domainCh1_scene1_choice1_text", "ch1_scene4", 4)105
])106
case "ch1_scene2" => 장면만들기("ch1_scene2", "domainCh1_scene2_text", [107
선택("domainCh1_scene2_choice0_text", "ch1_scene5", 5),108
선택("domainCh1_scene2_choice1_text", "ch1_scene4", 4)109
])110
case "ch1_scene3" => 장면만들기("ch1_scene3", "domainCh1_scene3_text", [111
선택("domainCh1_scene3_choice0_text", "ch2_scene1", 999)112
])113
case "ch1_scene4" => 장면만들기("ch1_scene4", "domainCh1_scene4_text", [114
선택("domainCh1_scene4_choice0_text", "ch2_scene2", 999)115
])116
case "ch1_scene5" => 장면만들기("ch1_scene5", "domainCh1_scene5_text", [117
선택("domainCh1_scene5_choice0_text", "ch2_scene0", 999)118
])119
case "ch2_scene0" => 장면만들기("ch2_scene0", "domainCh2_scene0_text", [120
선택("domainCh2_scene0_choice0_text", "ch2_scene1", 1),121
선택("domainCh2_scene0_choice1_text", "ch2_scene2", 2)122
])123
case "ch2_scene1" => 장면만들기("ch2_scene1", "domainCh2_scene1_text", [124
선택("domainCh2_scene1_choice0_text", "ch2_scene3", 3),125
선택("domainCh2_scene1_choice1_text", "ch2_scene4", 4)126
])127
case "ch2_scene2" => 장면만들기("ch2_scene2", "domainCh2_scene2_text", [128
선택("domainCh2_scene2_choice0_text", "ch2_scene5", 5),129
선택("domainCh2_scene2_choice1_text", "ch2_scene6", 6)130
])131
case "ch2_scene3" => 장면만들기("ch2_scene3", "domainCh2_scene3_text", [132
선택("domainCh2_scene3_choice0_text", "ch3_scene0", 999)133
])134
case "ch2_scene4" => 장면만들기("ch2_scene4", "domainCh2_scene4_text", [135
선택("domainCh2_scene4_choice0_text", "ch3_scene0", 999)136
])137
case "ch2_scene5" => 장면만들기("ch2_scene5", "domainCh2_scene5_text", [138
선택("domainCh2_scene5_choice0_text", "ch3_scene0", 999)139
])140
case "ch2_scene6" => 장면만들기("ch2_scene6", "domainCh2_scene6_text", [141
선택("domainCh2_scene6_choice0_text", "ch3_scene0", 999)142
])143
case "ch3_scene0" => 장면만들기("ch3_scene0", "domainCh3_scene0_text", [144
선택("domainCh3_scene0_choice0_text", "ch3_scene1", 1),145
선택("domainCh3_scene0_choice1_text", "ch3_scene2", 2),146
선택("domainCh3_scene0_choice2_text", "ch3_scene3", 3)147
])148
case "ch3_scene1" => 장면만들기("ch3_scene1", "domainCh3_scene1_text", [149
선택("domainCh3_scene1_choice0_text", "ch3_scene2", 2),150
선택("domainCh3_scene1_choice1_text", "ch3_scene3", 3)151
])152
case "ch3_scene2" => 장면만들기("ch3_scene2", "domainCh3_scene2_text", [153
선택("domainCh3_scene2_choice0_text", "ch3_scene1", 1),154
선택("domainCh3_scene2_choice1_text", "ch3_scene3", 3)155
])156
case "ch3_scene3" => 장면만들기("ch3_scene3", "domainCh3_scene3_text", [157
선택("domainCh3_scene3_choice0_text", "ch3_scene4", 4)158
])159
case "ch3_scene4" => 장면만들기("ch3_scene4", "domainCh3_scene4_text", [160
선택("domainCh3_scene4_choice0_text", "ch4_scene0", 999)161
])162
case "ch4_scene0" => 장면만들기("ch4_scene0", "domainCh4_scene0_text", [163
선택("domainCh4_scene0_choice0_text", "ch4_scene1", 1),164
선택("domainCh4_scene0_choice1_text", "ch4_scene2", 2)165
])166
case "ch4_scene1" => 장면만들기("ch4_scene1", "domainCh4_scene1_text", [167
선택("domainCh4_scene1_choice0_text", "ch4_scene3", 3),168
선택("domainCh4_scene1_choice1_text", "ch4_scene4", 4)169
])170
case "ch4_scene2" => 장면만들기("ch4_scene2", "domainCh4_scene2_text", [171
선택("domainCh4_scene2_choice0_text", "ch4_scene3", 3),172
선택("domainCh4_scene2_choice1_text", "ch4_scene4", 4)173
])174
case "ch4_scene3" => 장면만들기("ch4_scene3", "domainCh4_scene3_text", [175
선택("domainCh4_scene3_choice0_text", "ch5_scene0", 999)176
])177
case "ch4_scene4" => 장면만들기("ch4_scene4", "domainCh4_scene4_text", [178
선택("domainCh4_scene4_choice0_text", "ch1_scene0", 0)179
])180
case "ch5_scene0" => 장면만들기("ch5_scene0", "domainCh5_scene0_text", [181
선택("domainCh5_scene0_choice0_text", "ch5_scene1", 1),182
선택("domainCh5_scene0_choice1_text", "ch5_scene2", 2),183
선택("domainCh5_scene0_choice2_text", "ch5_scene3", 3)184
])185
case "ch5_scene1" => 장면만들기("ch5_scene1", "domainCh5_scene1_text", [186
선택("domainCh5_scene1_choice0_text", "ch5_scene4", 4)187
])188
case "ch5_scene2" => 장면만들기("ch5_scene2", "domainCh5_scene2_text", [189
선택("domainCh5_scene2_choice0_text", "ch5_scene4", 4)190
])191
case "ch5_scene3" => 장면만들기("ch5_scene3", "domainCh5_scene3_text", [192
선택("domainCh5_scene3_choice0_text", "ch5_scene4", 4)193
])194
case "ch5_scene4" => 장면만들기("ch5_scene4", "domainCh5_scene4_text", [195
선택("domainCh5_scene4_choice0_text", "ch5_scene5", 5)196
])197
case "ch5_scene5" => 장면만들기("ch5_scene5", "domainCh5_scene5_text", [198
선택("domainCh5_scene5_choice0_text", "ch6_scene0", 999)199
])200
case "ch6_scene0" => 장면만들기("ch6_scene0", "domainCh6_scene0_text", [201
선택("domainCh6_scene0_choice0_text", "ch6_scene1", 1),202
선택("domainCh6_scene0_choice1_text", "ch6_scene2", 2),203
선택("domainCh6_scene0_choice2_text", "ch6_scene3", 3)204
])205
case "ch6_scene1" => 장면만들기("ch6_scene1", "domainCh6_scene1_text", [206
선택("domainCh6_scene1_choice0_text", "ch6_scene4", 4)207
])208
case "ch6_scene2" => 장면만들기("ch6_scene2", "domainCh6_scene2_text", [209
선택("domainCh6_scene2_choice0_text", "ch6_scene4", 4)210
])211
case "ch6_scene3" => 장면만들기("ch6_scene3", "domainCh6_scene3_text", [212
선택("domainCh6_scene3_choice0_text", "ch6_scene4", 4)213
])214
case "ch6_scene4" => 장면만들기("ch6_scene4", "domainCh6_scene4_text", [215
선택("domainCh6_scene4_choice0_text", "ch6_scene5", 5)216
])217
case "ch6_scene5" => 장면만들기("ch6_scene5", "domainCh6_scene5_text", [218
선택("domainCh6_scene5_choice0_text", "ch7_scene0", 999)219
])220
case "ch7_scene0" => 장면만들기("ch7_scene0", "domainCh7_scene0_text", [221
선택("domainCh7_scene0_choice0_text", "ch7_scene1", 1),222
선택("domainCh7_scene0_choice1_text", "ch7_scene2", 2),223
선택("domainCh7_scene0_choice2_text", "ch7_scene3", 3)224
])225
case "ch7_scene1" => 장면만들기("ch7_scene1", "domainCh7_scene1_text", [226
선택("domainCh7_scene1_choice0_text", "ch7_scene4", 4)227
])228
case "ch7_scene2" => 장면만들기("ch7_scene2", "domainCh7_scene2_text", [229
선택("domainCh7_scene2_choice0_text", "ch7_scene3", 3)230
])231
case "ch7_scene3" => 장면만들기("ch7_scene3", "domainCh7_scene3_text", [232
선택("domainCh7_scene3_choice0_text", "ch7_scene4", 4)233
])234
case "ch7_scene4" => 장면만들기("ch7_scene4", "domainCh7_scene4_text", [235
선택("domainCh7_scene4_choice0_text", "ch8_scene0", 999)236
])237
case "ch8_scene0" => 장면만들기("ch8_scene0", "domainCh8_scene0_text", [238
선택("domainCh8_scene0_choice0_text", "ch8_scene1", 1),239
선택("domainCh8_scene0_choice1_text", "ch8_scene2", 2),240
선택("domainCh8_scene0_choice2_text", "ch8_scene3", 3)241
])242
case "ch8_scene1" => 장면만들기("ch8_scene1", "domainCh8_scene1_text", [243
선택("domainCh8_scene1_choice0_text", "ch8_scene4", 4)244
])245
case "ch8_scene2" => 장면만들기("ch8_scene2", "domainCh8_scene2_text", [246
선택("domainCh8_scene2_choice0_text", "ch8_scene4", 4)247
])248
case "ch8_scene3" => 장면만들기("ch8_scene3", "domainCh8_scene3_text", [249
선택("domainCh8_scene3_choice0_text", "ch8_scene4", 4)250
])251
case "ch8_scene4" => 장면만들기("ch8_scene4", "domainCh8_scene4_text", [252
선택("domainCh8_scene4_choice0_text", "ch9_scene0", 999)253
])254
case "ch9_scene0" => 장면만들기("ch9_scene0", "domainCh9_scene0_text", [255
선택("domainCh9_scene0_choice0_text", "ch9_scene1", 1)256
])257
case "ch9_scene1" => 장면만들기("ch9_scene1", "domainCh9_scene1_text", [258
선택("domainCh9_scene1_choice0_text", "ch9_scene2", 2)259
])260
case "ch9_scene2" => 장면만들기("ch9_scene2", "domainCh9_scene2_text", [261
선택("domainCh9_scene2_choice0_text", "ch1_scene0", 0)262
])263
}264
}SHA256 28cef28a8a0a043113bf98c7c489a54ce4de30fdad0e416860a0585c9e2104ce