last_light/game/model/multilevel_map.go

62 lines
1,005 B
Go
Raw Normal View History

package model
import "mvvasilev/last_light/util"
type MultilevelMap struct {
layers []Map
}
func CreateMultilevelMap(maps ...Map) *MultilevelMap {
m := new(MultilevelMap)
m.layers = maps
return m
}
func (mm *MultilevelMap) Size() util.Size {
if len(mm.layers) == 0 {
return util.SizeOf(0, 0)
}
return mm.layers[0].Size()
}
func (mm *MultilevelMap) SetTileAt(x, y int, t Tile) {
mm.layers[0].SetTileAt(x, y, t)
}
func (mm *MultilevelMap) UnsetTileAtHeight(x, y, height int) {
if len(mm.layers) < height {
return
}
mm.layers[height].SetTileAt(x, y, nil)
}
func (mm *MultilevelMap) SetTileAtHeight(x, y, height int, t Tile) {
if len(mm.layers) < height {
return
}
mm.layers[height].SetTileAt(x, y, t)
}
func (mm *MultilevelMap) TileAt(x int, y int) Tile {
for i := len(mm.layers) - 1; i >= 0; i-- {
tile := mm.layers[i].TileAt(x, y)
if tile != nil {
return tile
}
}
return nil
}
func (mm *MultilevelMap) Tick() {
for _, l := range mm.layers {
l.Tick()
}
}