/
level.go
50 lines (44 loc) · 1019 Bytes
/
level.go
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
package world
type Tile struct {
Hover bool // タイルがプレビュー表示中かどうか。falseが通常時。エンティティに移動させたい
TileType TileType
}
// levelは高さのことっぽい
type GameLevel struct {
Tiles [][][]*Tile
size int
}
func NewLevel(size int) *GameLevel {
l := &GameLevel{
size: size,
}
const startingLayers = 2
for i := 0; i < startingLayers; i++ {
l.AddLayer()
}
return l
}
// 平面にタイルを敷き詰めた配列を作る
func (l *GameLevel) AddLayer() {
tileMap := make([][]*Tile, l.size)
for x := 0; x < l.size; x++ {
tileMap[x] = make([]*Tile, l.size)
for y := 0; y < l.size; y++ {
tileMap[x][y] = &Tile{}
}
}
l.Tiles = append(l.Tiles, tileMap)
}
// タイル全体のHoverSpriteフラグをオフにする
func (l *GameLevel) ClearHoverSprites() {
for i := range l.Tiles {
for x := range l.Tiles[i] {
for _, tile := range l.Tiles[i][x] {
if tile == nil {
continue
}
tile.Hover = false
}
}
}
}