handlemap rewrite init

This commit is contained in:
2026-08-02 17:21:07 +03:00
parent 3ce70bd00a
commit 8f596735e1
7 changed files with 383 additions and 351 deletions
+19 -30
View File
@@ -3,36 +3,25 @@ package main
import hm "core:container/handle_map"
import rl "vendor:raylib"
Enemy :: struct {
using actor: Actor,
touch_dmg: i32,
// ИИ врага — летит к игроку. Вызывается из диспатчера sys_update
enemy_update :: proc(state: ^GameState, e: ^Enemy, h: Handle, dt: f32) {
pe := get_entity(state, state.player)
if pe == nil do return
dir := get_base(pe).pos - e.pos
set_vel(&e.base, dir, e.speed)
}
enemy_update :: proc(state: ^GameState, p, e: ^Entity) {
p := hm.get(&state.entities, state.player)
// Мёртвые враги → лут
sys_death :: proc(state: ^GameState) {
it := hm.iterator_make(&state.entities)
for e, _ in hm.iterate(&it) {
#partial switch &v in e.v {
case Enemy:
if v.hp <= 0 && !v.marked {
v.marked = true
spawn(state, make_ground_item(v.pos))
}
}
}
}
// sys_enemy_ai :: proc(state: ^GameState) {
// for &enemy in &state.enemies {
// dir := state.player.pos - enemy.pos
// set_vel(cast(^Entity2)&enemy, dir, enemy.speed)
// }
// }
//
// sys_death :: proc(state: ^GameState3) {
// for &enemy in &state.enemies {
// if enemy.hp > 0 || enemy.marked do continue
// enemy.marked = true
// init_entity(
// state,
// GroundItem3 {
// ent = Entity2 {
// GroundItem3 = enemy.pos,
// GroundItem3 = {GroundItem3 = GfxCircle{GroundItem3 = {0, 0}, GroundItem3 = 6, GroundItem3 = {255, 220, 50, 255}}},
// GroundItem3 = 10,
// },
// heal = 25,
// },
// )
// }
// }