diff --git a/main.go b/main.go index e6ee0d8..772ebf7 100644 --- a/main.go +++ b/main.go @@ -21,6 +21,7 @@ const ( RENDER = true SHOW_RENDER = false SHOW_PATHS = true + HEARING_DISTANCE = 6 ) type Map [][]rune @@ -399,6 +400,26 @@ func (game *Game) PathEnemies() { 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) { rand.Shuffle(len(dead_ends), func(i, j int) { dead_ends[i], dead_ends[j] = dead_ends[j], dead_ends[i] @@ -445,6 +466,7 @@ func main() { for game.HandleEvents() { game.PathEnemies() + game.EnemyMovement() game.Render() }