blob: bd2b455868679eee4f19a8ee5f8cb69f4f250358 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
package mt
type MapBlkFlags uint8
const (
BlkIsUnderground MapBlkFlags = 1 << iota
BlkDayNightDiff
BlkLightExpired
BlkNotGenerated
)
type LitFromBlks uint16
const AlwaysLitFrom LitFromBlks = 0xf000
func LitFrom(d Dir, b LightBank) LitFromBlks {
return 1 << (uint8(d) + uint8(6*b))
}
type MapBlk struct {
Flags MapBlkFlags
LitFrom LitFromBlks
//mt:const uint8(2) // Size of param0 in bytes.
//mt:const uint8(1 + 1) // Size of param1 and param2 combined, in bytes.
Param0 [4096]Content
Param1 [4096]uint8
Param2 [4096]uint8
NodeMetas map[uint16]*NodeMeta
}
// Pos2BlkPos converts a node position to a MapBlk position and index.
func Pos2Blkpos(pos [3]int16) (blkpos [3]int16, i uint16) {
for j := range pos {
blkpos[j] = pos[j] >> 4
i |= uint16(pos[j]&0xf) << (4 * j)
}
return
}
// BlkPos2Pos converts a MapBlk position and index to a node position.
func Blkpos2Pos(blkpos [3]int16, i uint16) (pos [3]int16) {
for j := range pos {
pos[j] = blkpos[j]<<4 | int16(i>>(4*j)&0xf)
}
return
}
|