From 71617f93965f51c19bda3e9ffa5a786940854204 Mon Sep 17 00:00:00 2001 From: Jason Hilder Date: Sun, 26 Jul 2026 21:45:05 +0200 Subject: [PATCH] Added basic spawn points to enemies. --- src/enemy.odin | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/enemy.odin b/src/enemy.odin index 0898039..9d78e7b 100644 --- a/src/enemy.odin +++ b/src/enemy.odin @@ -24,7 +24,6 @@ Enemy :: struct { collider_h: f32 } - enemy_init :: proc(assets: ^Enemy_Assets, pos: [2]f32) -> Enemy { enemy := Enemy{} enemy.position = {pos.x, pos.y} @@ -46,12 +45,23 @@ get_enemy_collider :: proc(enemy: Enemy, pos: rl.Vector2) -> rl.Rectangle { } } -get_spawn_rect :: proc(max_x, max_y: f32) -> rl.Rectangle { - // Get random x and y pos - x_pos := rand.float32_range(TILE_SIZE, (max_x - TILE_SIZE)) - y_pos := rand.float32_range(TILE_SIZE, (max_y - TILE_SIZE)) - return rl.Rectangle{x_pos, y_pos, TILE_SIZE, TILE_SIZE} +get_spawn_rect :: proc(max_x, max_y: f32) -> rl.Rectangle { + enemy_spawn_points: [4]rl.Rectangle = { + // top right + rl.Rectangle{TILE_SIZE, TILE_SIZE, TILE_SIZE, TILE_SIZE}, + // top left + rl.Rectangle{(max_x - TILE_SIZE * 2), TILE_SIZE, TILE_SIZE, TILE_SIZE}, + // bottom right + rl.Rectangle{(max_x - TILE_SIZE * 2), (max_y - TILE_SIZE * 2), TILE_SIZE, TILE_SIZE}, + // bottom left + rl.Rectangle{TILE_SIZE, (max_y - TILE_SIZE * 2), TILE_SIZE, TILE_SIZE}, + } + + rand_point := rand.int_range(0, len(enemy_spawn_points)) + rand_pos := enemy_spawn_points[rand_point] + + return rand_pos } // @TODO consider a self check, ie pass the enemy in question index and make sure to skip that @@ -82,10 +92,9 @@ spawn_enemy :: proc(enemy_array: ^[MAX_ENEMIES]Enemy, assets: ^Enemy_Assets, ene } } - - -update_enemies :: proc(enemy_array: ^[MAX_ENEMIES]Enemy, assets: ^Enemy_Assets, dt: f32) { - for &enemy in enemy_array { +update_enemies :: proc(enemy_array: ^[MAX_ENEMIES]Enemy, assets: ^Enemy_Assets, enemy_cnt: int, dt: f32) { + for idx in 0..