STUDIO HAZE · kakao
Topaz source
Open by house policy. Topaz is our own language.
Topaz 5.6.1 · 4 files
games/domain-war/main.tpz
Topaz · 1502 B · Original file
1
// 도메인 전쟁 Topaz 엔트리. 입력 패킷을 파싱하고 pure core에 위임한 뒤 DW1 패킷을 프린트한다.2
// Domain War Topaz entry. Parse the input packet, delegate to the pure core, and print a DW1 packet.3
//4
// 하우스룰(app): app 계층은 패킷 파싱 + 코어 호출 + print만 한다. 게임 규칙은 core/game.tpz에 있다.5
// House rule (app): packet parsing + core call + print only. Game rules live in core/game.tpz.6
//7
// DW1 packet contract:8
// 입력: DW1 / STATE:<prev> / EVENT:<choice_0|choice_1|choice_2|back|restart>9
// 출력: DW1 / STATE:<new> / SCENE:<scene id> / TEXT:<text key> / CHOICES:<choice text keys pipe-separated>11
import core.game { 처리 }13
// 문자열에서 접두사 뒤의 꼬리를 Unicode scalar 인덱스 기반 slice로 돌려준다.14
// Return the tail after a prefix with Unicode-scalar-indexed slice.15
function 접두사뒤(전체: string, 접두사: string) -> string {16
전체.slice(접두사.scalars().length, 전체.scalars().length)17
}19
// "PREFIX:"로 시작하는 줄에서 값을 읽는다. 없으면 빈 문자열.20
// Read the value after a "PREFIX:" line. Missing values become empty string.21
function 줄값(원본: string, 접두사: string) -> string {22
원본.split("\n").reduce("", (값, 줄) => {23
let 다듬 = 줄.trim()24
if 다듬.startsWith(접두사) { 접두사뒤(다듬, 접두사) } else { 값 }25
}).trim()26
}28
let 패킷 = input()29
print(처리(줄값(패킷, "STATE:"), 줄값(패킷, "EVENT:")))SHA256 a196cf94836db4d2b45717e69b96879cf03a1b578778192dd72ba298612a7edf