|
|
@ -21,6 +21,7 @@ const ( |
|
|
|
RENDER = true |
|
|
|
RENDER = true |
|
|
|
SHOW_RENDER = false |
|
|
|
SHOW_RENDER = false |
|
|
|
SHOW_PATHS = true |
|
|
|
SHOW_PATHS = true |
|
|
|
|
|
|
|
HEARING_DISTANCE = 6 |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
type Map [][]rune |
|
|
|
type Map [][]rune |
|
|
@ -399,6 +400,26 @@ func (game *Game) PathEnemies() { |
|
|
|
dbg.Println("pathing is", game.paths) |
|
|
|
dbg.Println("pathing is", game.paths) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func (game *Game) EnemyMovement() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for pos, _ := range game.enemies { |
|
|
|
|
|
|
|
p_enemy := game.paths[pos.y][pos.x] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for _, path_at := range compass(pos.x, pos.y, 1) { |
|
|
|
|
|
|
|
p_num := game.paths[path_at.y][path_at.x] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
can_hear := p_num < HEARING_DISTANCE |
|
|
|
|
|
|
|
is_open := !game.Occupied(path_at.x, path_at.y) |
|
|
|
|
|
|
|
lower := p_num < p_enemy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if can_hear && is_open && lower { |
|
|
|
|
|
|
|
game.MoveEnemy(pos, path_at) |
|
|
|
|
|
|
|
break |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (game *Game) AddRooms(dead_ends []Position, size int) { |
|
|
|
func (game *Game) AddRooms(dead_ends []Position, size int) { |
|
|
|
rand.Shuffle(len(dead_ends), func(i, j int) { |
|
|
|
rand.Shuffle(len(dead_ends), func(i, j int) { |
|
|
|
dead_ends[i], dead_ends[j] = dead_ends[j], dead_ends[i] |
|
|
|
dead_ends[i], dead_ends[j] = dead_ends[j], dead_ends[i] |
|
|
@ -445,6 +466,7 @@ func main() { |
|
|
|
|
|
|
|
|
|
|
|
for game.HandleEvents() { |
|
|
|
for game.HandleEvents() { |
|
|
|
game.PathEnemies() |
|
|
|
game.PathEnemies() |
|
|
|
|
|
|
|
game.EnemyMovement() |
|
|
|
game.Render() |
|
|
|
game.Render() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|