diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-12-03 15:52:24 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-12-03 15:52:24 -0500 |
| commit | 4c28646a9a8ca092ca0307b5429fb842bd17bd55 (patch) | |
| tree | a9bfcba08b3ef156cb8dee655aee2457bbb62c37 | |
| parent | 119e1e91af301a00c1e58aa787bb8b3c0132a1f0 (diff) | |
pke: serialization helper FontRender mapping
| -rw-r--r-- | src/serialization-font.cpp | 15 | ||||
| -rw-r--r-- | src/serialization-static-ui.cpp | 26 |
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) { |
