aboutsummaryrefslogtreecommitdiff
path: root/src/prop.odin
diff options
context:
space:
mode:
authoriamcheeseman <[hidden email]>2026-02-27 23:23:16 -0500
committeriamcheeseman <[hidden email]>2026-02-27 23:23:16 -0500
commit97e7909e4d730524b3ea319fa86520ed3bb3df5c (patch)
treea95a7fc3fe27e3391814b4c06ae04affdb2818ed /src/prop.odin
parentf45cafdf46455768985e3d3a118bbca1839e937f (diff)
use odin's new handle maps rather than my own
Diffstat (limited to 'src/prop.odin')
-rw-r--r--src/prop.odin43
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{