diff options
| author | iamcheeseman <[hidden email]> | 2026-02-27 23:23:16 -0500 |
|---|---|---|
| committer | iamcheeseman <[hidden email]> | 2026-02-27 23:23:16 -0500 |
| commit | 97e7909e4d730524b3ea319fa86520ed3bb3df5c (patch) | |
| tree | a95a7fc3fe27e3391814b4c06ae04affdb2818ed /src/bullet.odin | |
| parent | f45cafdf46455768985e3d3a118bbca1839e937f (diff) | |
use odin's new handle maps rather than my own
Diffstat (limited to 'src/bullet.odin')
| -rw-r--r-- | src/bullet.odin | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/src/bullet.odin b/src/bullet.odin index ceb2ce9..181147b 100644 --- a/src/bullet.odin +++ b/src/bullet.odin @@ -3,12 +3,13 @@ package demonchime import "core:math" import "core:math/linalg" import "core:log" +import hm "core:container/handle_map" import "fw" import "phys" Bullet :: struct { - handle: Entity_Handle, + handle: Handle, body: phys.Body_Handle, sprite: Sprite, vel: Vec2, @@ -23,7 +24,7 @@ make_bullet :: proc( image_id := Image_Id.Bullet, layers: bit_set[phys.Layer;u16] = {.Player_Projectile}, mask: bit_set[phys.Layer;u16] = {.Hard}, -) -> (Entity_Handle, ^Bullet) { +) -> (Handle, ^Bullet) { sprite: Sprite init_sprite(&sprite, image_id) set_sprite_offset_percentage(&sprite, {0, 0.5}) @@ -40,24 +41,26 @@ make_bullet :: proc( phys.set_velocity(body, vel) phys.set_position(body, pos) - return make_entity(&state.bullet_list, Bullet{ + handle := hm.add(&state.bullet_list, Bullet{ body = body, sprite = sprite, vel = vel, lifetime = lifetime, lifetime_max = lifetime, }) + + return handle, hm.get(&state.bullet_list, handle) } -delete_bullet :: proc(h: Entity_Handle) { - b := get_entity(state.bullet_list, h) +delete_bullet :: proc(h: Handle) { + b := hm.get(&state.bullet_list, h) phys.remove_body(b.body) - delete_entity(&state.bullet_list, h) + hm.remove(&state.bullet_list, h) } update_bullets :: proc(dt: f32) { - iter := iter_entity_list(state.bullet_list) - for b in entity_list_iter(&iter) { + iter := hm.iterator_make(&state.bullet_list) + for b, _ in hm.iterate(&iter) { b.lifetime -= dt phys.update_body(b.body) @@ -79,15 +82,15 @@ update_bullets :: proc(dt: f32) { } draw_bullets :: proc() { - iter := iter_entity_list(state.bullet_list) - for b in entity_list_iter(&iter) { + iter := hm.iterator_make(&state.bullet_list) + for b, _ in hm.iterate(&iter) { draw_sprite(b.sprite) } } clear_bullets :: proc() { - iter := iter_entity_list(state.bullet_list) - for b in entity_list_iter(&iter) { + iter := hm.iterator_make(&state.bullet_list) + for b, _ in hm.iterate(&iter) { delete_bullet(b.handle) } } |
