package main

type Tile struct {
	Kind int
	X, Y int
	Map  Map
	Unit *Unit
}

func (t Tile) WalkableNeighbors() []*Tile {
	var neighbors []*Tile
	for _, offset := range offsets {
		if n := t.Map.Tile(t.X+offset.X, t.Y+offset.Y); n != nil && n.Kind == KindSpace {
			neighbors = append(neighbors, n)
		}
	}
	return neighbors
}

type SortableTiles []*Tile

func (s SortableTiles) Len() int {
	return len(s)
}
func (s SortableTiles) Less(i, j int) bool {
	if s[i].Y == s[j].Y {
		return s[i].X < s[j].X
	}
	return s[i].Y < s[j].Y
}

func (s SortableTiles) Swap(i, j int) {
	s[i], s[j] = s[j], s[i]
}
