summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-12-03 15:52:24 -0500
committerJonathan Bradley <jcb@pikum.xyz>2025-12-03 15:52:24 -0500
commit4c28646a9a8ca092ca0307b5429fb842bd17bd55 (patch)
treea9bfcba08b3ef156cb8dee655aee2457bbb62c37
parent119e1e91af301a00c1e58aa787bb8b3c0132a1f0 (diff)
pke: serialization helper FontRender mapping
-rw-r--r--src/serialization-font.cpp15
-rw-r--r--src/serialization-static-ui.cpp26
2 files changed, 36 insertions, 5 deletions
diff --git a/src/serialization-font.cpp b/src/serialization-font.cpp
index 501d6ed..8be50d9 100644
--- a/src/serialization-font.cpp
+++ b/src/serialization-font.cpp
@@ -74,7 +74,10 @@ void pke_deserialize_font_render(srlztn_deserialize_helper *h, pke_kve_container
pk_uuid uuid = pk_uuid_max;
pk_cstr str;
FontType *font_type_ent = nullptr;
+ FontTypeRender ftr;
FontRenderSettings frs{};
+ srlztn_ecs_mapping mapping;
+ FontRender *fr;
pke_deserialize_font_render_settings(h, kvec->children[0], &frs);
uint32_t i;
@@ -109,7 +112,17 @@ void pke_deserialize_font_render(srlztn_deserialize_helper *h, pke_kve_container
// parent is set later - up to the parent to take ownership
assert(font_type_ent != nullptr);
- FontType_AddStringRender(font_type_ent->font_type_handle, std::move(str), &frs, nullptr, uuid);
+ ftr = FontType_AddStringRender(font_type_ent->font_type_handle, std::move(str), &frs, nullptr, uuid);
+
+ assert(ftr.font_type_handle != FontTypeRender_MAX.font_type_handle);
+ assert(ftr.font_render_handle != FontTypeRender_MAX.font_render_handle);
+
+ fr = &font_type_ent->renders[ftr.font_render_handle];
+
+ mapping.serialized_uuid = fr->uuid;
+ mapping.created_entity = fr;
+ mapping.created_instance = nullptr;
+ pk_arr_append_t<srlztn_ecs_mapping>(&h->mapping, mapping);
}
pk_handle pke_serialize_font_render_settings(srlztn_serialize_helper *h, FontRenderSettings *frs) {
diff --git a/src/serialization-static-ui.cpp b/src/serialization-static-ui.cpp
index ba67fbd..0a82681 100644
--- a/src/serialization-static-ui.cpp
+++ b/src/serialization-static-ui.cpp
@@ -128,6 +128,8 @@ void pke_deserialize_ui_box_internal(srlztn_deserialize_helper *h, pke_kve_conta
assert(kvec != nullptr);
assert(data != nullptr);
assert(kvec->arr.next == 1);
+ uint32_t u;
+ FontRender *fr = nullptr;
pk_uuid font_render_uuid = pk_uuid_zed;
compt_a<8==sizeof(pke_ui_box_type_data::pke_ui_box_type_data_text)>();
@@ -137,9 +139,16 @@ void pke_deserialize_ui_box_internal(srlztn_deserialize_helper *h, pke_kve_conta
assert(font_render_uuid != pk_uuid_zed);
- FontRender *fr = static_cast<FontRender *>(ECS_GetEntityByUUID(font_render_uuid));
+ for (u = 0; u < h->mapping.next; ++u) {
+ if (h->mapping[u].serialized_uuid == font_render_uuid) {
+ assert(h->mapping[u].created_entity != nullptr);
+ fr = static_cast<FontRender *>(h->mapping[u].created_entity);
+ data->font_type_render = {fr->font_type_handle, fr->font_render_handle};
+ break;
+ }
+ }
- data->font_type_render = {fr->font_type_handle, fr->font_render_handle};
+ assert(fr != nullptr);
}
void pke_deserialize_ui_box_internal(srlztn_deserialize_helper *h, pke_kve_container *kvec, pke_ui_box_type_data::pke_ui_box_type_data_button_text *data) {
@@ -147,6 +156,8 @@ void pke_deserialize_ui_box_internal(srlztn_deserialize_helper *h, pke_kve_conta
assert(kvec != nullptr);
assert(data != nullptr);
assert(kvec->arr.next == 1);
+ uint32_t u;
+ FontRender *fr = nullptr;
pk_uuid font_render_uuid = pk_uuid_zed;
// TODO
@@ -161,9 +172,16 @@ void pke_deserialize_ui_box_internal(srlztn_deserialize_helper *h, pke_kve_conta
assert(font_render_uuid != pk_uuid_zed);
- FontRender *fr = static_cast<FontRender *>(ECS_GetEntityByUUID(font_render_uuid));
+ for (u = 0; u < h->mapping.next; ++u) {
+ if (h->mapping[u].serialized_uuid == font_render_uuid) {
+ assert(h->mapping[u].created_entity != nullptr);
+ fr = static_cast<FontRender *>(h->mapping[u].created_entity);
+ data->font_type_render = {fr->font_type_handle, fr->font_render_handle};
+ break;
+ }
+ }
- data->font_type_render = {fr->font_type_handle, fr->font_render_handle};
+ assert(fr != nullptr);
}
void pke_deserialize_ui_box_internal(srlztn_deserialize_helper *h, pke_kve_container *kvec, pke_ui_box_type_data::pke_ui_box_type_data_button_image *data) {