Map Render

This commit is contained in:
2026-08-06 15:25:34 +03:00
parent c2eb4a7b24
commit dee1d4cc0f
8 changed files with 172 additions and 58 deletions
+9 -25
View File
@@ -24,19 +24,6 @@ Enemy :: struct {
handle: ent_handle,
}
create_enemy :: proc(scene: ^Scene, pos: rl.Vector2) {
if scene.enemy_count >= MAX_ENEMIES {
return
}
scene.enemies[scene.enemy_count] = Enemy {
position = pos,
hp = 100,
speed = 100,
col = 32,
}
scene.enemy_count += 1
}
update_player :: proc(player: ^Player, dt: f32) {
input: rl.Vector2
@@ -73,8 +60,6 @@ calc_col_box :: proc(center: rl.Vector2, side: f32) -> rl.Rectangle {
}
// Разлепляет два ентерия — выталкивает по оси наименьшего проникновения.
// Чтоб не стояли друг в друге как родные.
resolve_entity_overlap :: proc(a, b: ^Entity) {
ra := calc_col_box(a.position, a.col)
rb := calc_col_box(b.position, b.col)
@@ -106,18 +91,17 @@ resolve_entity_overlap :: proc(a, b: ^Entity) {
}
resolve_collisions :: proc(scene: ^Scene) {
// Враг против врага — чтоб толпой не слипались
for i in 0 ..< scene.enemy_count {
for j in i + 1 ..< scene.enemy_count {
resolve_entity_overlap(
&scene.enemies[i].ent,
&scene.enemies[j].ent,
)
it := hm.iterator_make(&scene.enemies)
for i, _ in hm.iterate(&it) {
it2 := hm.iterator_make(&scene.enemies)
for j, _ in hm.iterate(&it2) {
if i == j do continue
resolve_entity_overlap(i, j)
}
}
// Игрок против врагов — чтоб не захавывали друг друга
for &enemy in scene.enemies[:scene.enemy_count] {
resolve_entity_overlap(&scene.player.ent, &enemy.ent)
it = hm.iterator_make(&scene.enemies)
for i, _ in hm.iterate(&it) {
resolve_entity_overlap(&scene.player.ent, i)
}
}