diff options
| -rw-r--r-- | src/level.cpp | 17 | ||||
| -rw-r--r-- | src/level.hpp | 2 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/level.cpp b/src/level.cpp index 27e7722..f839a6e 100644 --- a/src/level.cpp +++ b/src/level.cpp @@ -163,3 +163,20 @@ void pke_level_register_root_ui_box(pke_level *level, pke_ui_box *box) { assert(box != nullptr); pk_arr_append_t(&level->root_ui_boxes, box); } + +bool find_box_fn(void *user_data, void *item) { + (void)user_data; + void *box = *reinterpret_cast<pke_ui_box **>(item); + return user_data == box; +} + +void pke_level_unregister_root_ui_box(pke_level *level, pke_ui_box *box) { + assert(level != nullptr); + assert(box != nullptr); + uint32_t idx = pk_arr_find_first_index(&level->root_ui_boxes, box, find_box_fn); + if (idx < level->root_ui_boxes.next) { + pk_arr_remove_at(&level->root_ui_boxes, idx); + } else { + fprintf(stderr, "[pke_level_unregister_root_ui_box] attempted to unregister ui box that was not registered with level '%*s'!\n", LEVEL_NAME_MAX_LEN, level->name); + } +} diff --git a/src/level.hpp b/src/level.hpp index b85a608..8cb9854 100644 --- a/src/level.hpp +++ b/src/level.hpp @@ -18,4 +18,6 @@ void pke_level_register_camera(pke_level *level, PkeCamera *camera); void pke_level_register_input_action_set(pke_level *level, pke_input_action_set_handle handle); void pke_level_register_root_ui_box(pke_level *level, pke_ui_box *box); +void pke_level_unregister_root_ui_box(pke_level *level, pke_ui_box *box); + #endif /* PKE_LEVEL_HPP */ |
