Added basic spawn points to enemies.

This commit is contained in:
2026-07-26 21:45:05 +02:00
parent 5e2b954d1a
commit 71617f9396
+22 -12
View File
@@ -24,7 +24,6 @@ Enemy :: struct {
collider_h: f32 collider_h: f32
} }
enemy_init :: proc(assets: ^Enemy_Assets, pos: [2]f32) -> Enemy { enemy_init :: proc(assets: ^Enemy_Assets, pos: [2]f32) -> Enemy {
enemy := Enemy{} enemy := Enemy{}
enemy.position = {pos.x, pos.y} 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 // @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, enemy_cnt: int, dt: f32) {
for idx in 0..<enemy_cnt {
update_enemies :: proc(enemy_array: ^[MAX_ENEMIES]Enemy, assets: ^Enemy_Assets, dt: f32) { enemy := &enemy_array[idx]
for &enemy in enemy_array {
moving := false moving := false
enemy.state = moving ? .WALK : .IDLE enemy.state = moving ? .WALK : .IDLE
@@ -96,8 +105,9 @@ update_enemies :: proc(enemy_array: ^[MAX_ENEMIES]Enemy, assets: ^Enemy_Assets,
} }
draw_enemies :: proc(enemy_array: ^[MAX_ENEMIES]Enemy) { draw_enemies :: proc(enemy_array: ^[MAX_ENEMIES]Enemy, enemy_cnt: int) {
for &enemy in enemy_array { for idx in 0..<enemy_cnt {
enemy := &enemy_array[idx]
clip := enemy.animation.clip clip := enemy.animation.clip
src_rect := animation_frame_rect(&enemy.animation) src_rect := animation_frame_rect(&enemy.animation)