sort enemy draw

This commit is contained in:
Rokas Puzonas 2026-02-01 05:45:50 +02:00
parent 0b3f4486c0
commit f96a8b4b78

View File

@ -905,7 +905,31 @@ pub fn tick(self: *CombatScreen, state: *State, frame: *Engine.Frame) !TickResul
} }
enemy.kinetic.update(dt, .{}); enemy.kinetic.update(dt, .{});
}
}
{
var sorted_enemies: std.ArrayList(*Enemy) = .empty;
var enemy_iter = self.enemies.iterator();
while (enemy_iter.nextItem()) |enemy| {
try sorted_enemies.append(frame.arena.allocator(), enemy);
}
const Context = struct {
fn lessThan(_: @This(), lhs: *Enemy, rhs: *Enemy) bool {
return lhs.kinetic.pos.y < rhs.kinetic.pos.y;
}
};
std.mem.sort(
*Enemy,
sorted_enemies.items,
Context{},
Context.lessThan
);
for (sorted_enemies.items) |enemy| {
const pos = enemy.kinetic.pos; const pos = enemy.kinetic.pos;
const sprite_size = enemy.sprite.getSize(); const sprite_size = enemy.sprite.getSize();
var sprite = enemy.sprite; var sprite = enemy.sprite;
@ -951,6 +975,7 @@ pub fn tick(self: *CombatScreen, state: *State, frame: *Engine.Frame) !TickResul
}); });
if (self.show_colliders) { if (self.show_colliders) {
const enemy_rect = getCenteredRect(enemy.kinetic.pos, enemy.size);
frame.drawRectangle(.{ frame.drawRectangle(.{
.rect = enemy_rect, .rect = enemy_rect,
.color = rgba(20, 20, 200, 0.2), .color = rgba(20, 20, 200, 0.2),