STUDIO HAZE · jeniapp
Topaz source
Open by house policy. Topaz is our own language.
Topaz 5.20.2 · 63 files
apps/slow-monster/data/maps.tpz
Topaz · 5335 B · Original file
1
// 연못과 심층 두 맵의 타일 격자, 맵 사이를 잇는 워프, 좌표로 타일을 묻는 함수를 둡니다.2
// 격자는 24x22 타일을 행 우선으로 편 정수 배열이며 0 풀, 1 키큰풀, 2 길, 3 물, 4 나무, 5 꽃입니다. 맵 아이디 "deep" 은 심층이고 나머지는 연못입니다.3
// 상수 격자라 같은 맵과 좌표는 늘 같은 타일이고, 격자 밖은 나무 벽으로 답합니다.4
// 픽셀을 그리지 않습니다. 페이지의 셸이 타일 번호마다 16x16 무늬를 그립니다.5
// Map data: two 24x22 tile grids, position-based warps and tile lookup.7
// 맵이 화면에 보이는 10x9 보다 커서 카메라가 플레이어를 따라갑니다.8
export let 맵너비 = 249
export let 맵높이 = 2211
export type 타일종류 = 0 | 1 | 2 | 3 | 4 | 512
export let 타일_풀: 타일종류 = 013
export let 타일_키큰풀: 타일종류 = 114
export let 타일_길: 타일종류 = 215
export let 타일_물: 타일종류 = 316
export let 타일_나무: 타일종류 = 417
export let 타일_꽃: 타일종류 = 519
// 나무 테두리로 둘러싼 연못 분지입니다. 가운데 물웅덩이를 길이 감싸고 곳곳에 키큰풀밭이 있습니다.20
function 연못타일들() -> Array<int> {21
[22
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,23
4,0,0,0,5,0,0,1,1,1,1,0,0,0,0,5,0,0,0,0,0,0,0,4,24
4,0,0,0,0,0,0,1,1,1,1,0,0,2,2,2,2,2,2,0,0,5,0,4,25
4,0,5,0,0,0,0,1,1,1,1,0,0,2,0,0,0,0,2,0,0,0,0,4,26
4,0,0,0,0,0,0,0,1,1,0,0,0,2,0,0,0,0,2,0,1,1,0,4,27
4,0,0,2,2,2,2,2,2,2,2,2,2,2,0,0,5,0,2,0,1,1,0,4,28
4,5,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,4,29
4,0,0,2,0,0,3,3,3,3,3,0,0,0,0,0,0,0,2,2,2,2,2,4,30
4,0,0,2,0,3,3,3,3,3,3,3,0,0,5,0,0,0,0,0,0,0,2,4,31
4,0,0,2,0,3,3,3,3,3,3,3,3,0,0,0,0,1,1,1,0,0,2,4,32
4,0,5,2,0,3,3,3,3,3,3,3,3,0,0,0,0,1,1,1,0,0,2,4,33
4,0,0,2,0,3,3,3,3,3,3,3,0,0,0,0,0,1,1,1,0,0,2,4,34
4,0,0,2,0,0,3,3,3,3,3,0,0,0,5,0,0,0,0,0,0,0,2,4,35
4,0,0,2,2,2,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,4,36
4,0,5,0,0,2,0,0,5,0,0,0,0,2,0,0,0,0,0,0,0,0,0,4,37
4,0,0,0,0,2,2,2,2,2,2,2,2,2,0,0,5,0,0,5,0,0,0,4,38
4,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,39
4,1,1,1,0,0,5,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,4,40
4,1,1,1,0,0,0,0,0,0,1,1,1,0,0,5,0,0,0,0,1,1,1,4,41
4,0,1,1,0,0,0,5,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,4,42
4,0,0,0,0,5,0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,4,43
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,44
]45
}47
// 연못 남쪽 통로 너머의 어둡고 트인 동굴입니다. 같은 격자 크기라 카메라와 그리기를 그대로 씁니다.48
function 심층타일들() -> Array<int> {49
[50
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,51
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,52
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,4,53
4,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,1,1,0,0,4,54
4,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,1,0,0,0,4,55
4,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,4,56
4,0,0,4,0,0,0,0,0,3,3,3,0,0,0,0,4,0,0,0,0,0,0,4,57
4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,4,58
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,59
4,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,60
4,0,1,1,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,4,61
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,62
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,4,63
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,4,64
4,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,65
4,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,66
4,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,4,67
4,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,4,68
4,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,5,0,0,0,4,69
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,70
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,71
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,72
]73
}75
export function 맵타일들(맵아이디: string) -> Array<int> {76
if 맵아이디 == "deep" { 심층타일들() } else { 연못타일들() }77
}79
// 워프는 격자에 특수 타일을 박지 않고 엔티티처럼 좌표로 둡니다. 그 칸을 밟으면 목적 맵의 목적 좌표로 옮깁니다.80
export record 워프 { x: int, y: int, 목적맵: string, 목적x: int, 목적y: int }82
export function 워프목록(맵아이디: string) -> Array<워프> {83
if 맵아이디 == "deep" {84
[워프 { x: 3, y: 3, 목적맵: "pond", 목적x: 12, 목적y: 17 }]85
} else {86
[워프 { x: 12, y: 18, 목적맵: "deep", 목적x: 3, 목적y: 4 }]87
}88
}90
export function 워프에서(맵아이디: string, x: int, y: int) -> Option<워프> {91
let 일치 = 워프목록(맵아이디).filter(후보 => 후보.x == x && 후보.y == y)92
if 일치.length > 0 { Some(일치[0]) } else { None }93
}95
// 4 와 표 밖의 값은 모두 나무로 읽어 지나갈 수 없게 합니다.96
function 타일읽기(값: int) -> 타일종류 {97
match 값 {98
case 0 => 타일_풀99
case 1 => 타일_키큰풀100
case 2 => 타일_길101
case 3 => 타일_물102
case 5 => 타일_꽃103
case _ => 타일_나무104
}105
}107
// 격자 밖을 나무 벽으로 답해 카메라 가두기와 이동 경계가 따로 범위를 검사하지 않아도 됩니다.108
export function 타일에서(타일들: Array<int>, x: int, y: int) -> 타일종류 {109
if x < 0 || y < 0 || x >= 맵너비 || y >= 맵높이 { return 타일_나무 }110
타일읽기(타일들[y * 맵너비 + x])111
}SHA256 ecb8b1d4ccaed6263c91421eda3643dbbdaf239b36f01ecdd9b13146563bd66c