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)) } }