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/prop.odin | |
| parent | f45cafdf46455768985e3d3a118bbca1839e937f (diff) | |
use odin's new handle maps rather than my own
Diffstat (limited to 'src/prop.odin')
| -rw-r--r-- | src/prop.odin | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/src/prop.odin b/src/prop.odin index 2cd54ea..a54a74f 100644 --- a/src/prop.odin +++ b/src/prop.odin @@ -3,24 +3,26 @@ package demonchime import "core:math" import "core:math/linalg" import "core:log" +import hm "core:container/handle_map" import "fw" import "phys" Prop :: struct { - handle: Entity_Handle, + handle: Handle, image_id: Image_Id, pos: Vec2, scale: Vec2, } -make_prop :: proc(prop: Prop) -> (Entity_Handle, ^Prop) { - return make_entity(&state.prop_list, prop) +make_prop :: proc(prop: Prop) -> (Handle, ^Prop) { + handle := hm.add(&state.prop_list, prop) + return handle, hm.get(&state.prop_list, handle) } draw_props :: proc() { - iter := iter_entity_list(state.prop_list) - for p in entity_list_iter(&iter) { + iter := hm.iterator_make(&state.prop_list) + for p, _ in hm.iterate(&iter) { image := get_image(p.image_id) fw.draw_tex( image, @@ -31,7 +33,7 @@ draw_props :: proc() { } Wiggle_Prop :: struct { - handle: Entity_Handle, + handle: Handle, image_id: Image_Id, pos: Vec2, scale: Vec2, @@ -40,13 +42,14 @@ Wiggle_Prop :: struct { shear_factor: f32, } -make_wiggle_prop :: proc(prop: Wiggle_Prop) -> (Entity_Handle, ^Wiggle_Prop) { - return make_entity(&state.wiggle_prop_list, prop) +make_wiggle_prop :: proc(prop: Wiggle_Prop) -> (Handle, ^Wiggle_Prop) { + handle := hm.add(&state.wiggle_prop_list, prop) + return handle, hm.get(&state.wiggle_prop_list, handle) } update_wiggle_props :: proc(dt: f32) { - iter := iter_entity_list(state.wiggle_prop_list) - for p in entity_list_iter(&iter) { + iter := hm.iterator_make(&state.wiggle_prop_list) + for p, _ in hm.iterate(&iter) { player_vel := phys.get_velocity(player.body) player_pos := phys.get_position(player.body) @@ -65,8 +68,8 @@ update_wiggle_props :: proc(dt: f32) { } draw_wiggle_props :: proc() { - iter := iter_entity_list(state.wiggle_prop_list) - for p in entity_list_iter(&iter) { + iter := hm.iterator_make(&state.wiggle_prop_list) + for p, _ in hm.iterate(&iter) { fw.draw_tex_ex( get_image(p.image_id), p.pos, @@ -78,14 +81,14 @@ draw_wiggle_props :: proc() { } clear_props :: proc() { - p_iter := iter_entity_list(state.prop_list) - for p in entity_list_iter(&p_iter) { - delete_entity(&state.prop_list, p.handle) + iter := hm.iterator_make(&state.prop_list) + for p, _ in hm.iterate(&iter) { + hm.remove(&state.prop_list, p.handle) } - wp_iter := iter_entity_list(state.wiggle_prop_list) - for p in entity_list_iter(&wp_iter) { - delete_entity(&state.wiggle_prop_list, p.handle) + wp_iter := hm.iterator_make(&state.wiggle_prop_list) + for p, _ in hm.iterate(&wp_iter) { + hm.remove(&state.wiggle_prop_list, p.handle) } } @@ -122,10 +125,10 @@ object_spawner_prop :: proc(obj: Object_Resource) { 0, }) - shear_factor: f32 = 1 + shear_factor: f32 = 0.02 #partial switch tile.image { case .Carrabasset_Vines_0: - shear_factor = 0.1 + shear_factor = 0.01 } make_wiggle_prop(Wiggle_Prop{ |
