Files
odin-iso-test/src2/enemy.odin
T
2026-08-03 21:11:00 +03:00

39 lines
730 B
Odin

package main
import rl "vendor:raylib"
Enemy :: struct {
using actor: Actor,
touch_dmg: i32,
}
make_enemy :: proc(pos: rl.Vector2) -> Entity {
return Entity {
v = Enemy {
actor = Actor {
base = BaseEntity {
pos = pos,
col_size = 16,
gfx = {0 = GfxCircle{pos = {}, radius = 11, color = {220, 70, 70, 255}}},
},
hp = 40,
max_hp = 40,
speed = 55,
},
touch_dmg = 10,
},
}
}
enemy_update :: proc(state: ^GameState, e: ^Enemy, h: Handle, dt: f32) {
pe := get_entity(state, state.player)
if pe != nil {
dir := get_base(pe).pos - e.pos
e.vel = rl.Vector2Normalize(dir) * e.speed
}
if e.hp <= 0 && !e.marked {
e.marked = true
spawn(state, make_ground_item(e.pos))
}
}