diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-11-17 10:02:18 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-11-17 10:02:18 -0500 |
| commit | f540514582ca1e1ec126476d5fb4a41d9a3b6403 (patch) | |
| tree | 933ae42e9afb2585a1db141aead296fa49569a3c | |
| parent | e25a2772e10435f420ccb91dd52914255f9a0771 (diff) | |
pke-at: import level build setlist details summary
| -rw-r--r-- | src/level-import.cpp | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/src/level-import.cpp b/src/level-import.cpp index dde5416..0890f52 100644 --- a/src/level-import.cpp +++ b/src/level-import.cpp @@ -218,6 +218,12 @@ pke_ui_box *pke_at_level_import_build_ui_list_item(pke_ui_box *parent_box, pk_cs void pke_at_level_import_init() { pke_ui_box *bx; + FontRenderSettings frs{}; + frs.char_scale = 32; + frs.surface_area_type_flags = FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_CENTER_BOTH; + frs.color_background = glm::vec4(0,0,0,1); + frs.color_foreground = glm::vec4(1,1,1,1); + frs.flags = FONT_RENDER_FLAG_NONE; lvl_mstr.data.future_service_types = g_at.data->get_service_types(); lvl_mstr.state = state_get_service_types; @@ -239,9 +245,10 @@ void pke_at_level_import_init() { bx->flex_padding = 4; pke_level_register_root_ui_box(lvl_mstr.level, bx); - pke_ui_box *bx_setlist_details = pke_ui_box_new_root(); + pke_ui_box *bx_setlist_details = pke_ui_box_new_root(PKE_UI_BOX_TYPE_TEXT); lvl_mstr.ui.root_setlist_details = bx_setlist_details; bx = bx_setlist_details; + bx->type_data->text.font_type_render = FontType_AddStringRender(FontTypeHandle{0,0}, cstring_to_pk_cstr(""), &frs, bx); bx->flags |= PKE_UI_BOX_FLAG_POSITION_TYPE_STATIC; bx->flags |= PKE_UI_BOX_FLAG_VISIBILITY_INVISIBLE; pke_level_register_root_ui_box(lvl_mstr.level, bx); @@ -297,6 +304,11 @@ void pke_at_level_import_build_ui_upcoming_plans() { void pke_at_level_import_build_ui_setlist_import_details() { uint32_t u; + struct tm *t; + size_t text_head = 0; + char *s; + char summary_text[1024]; + memset(summary_text, '\0', 1024); lvl_mstr.ui.btn_import->flags = static_cast<PKE_UI_BOX_FLAG>(static_cast<PKE_UI_BOX_FLAG_T>(lvl_mstr.ui.btn_import->flags) & ~static_cast<PKE_UI_BOX_FLAG_T>(PKE_UI_BOX_FLAG_VISIBILITY_DISABLED)); for (u = 0; u < lvl_mstr.ui.root_box->internal.h_children; ++u) { @@ -308,7 +320,28 @@ void pke_at_level_import_build_ui_setlist_import_details() { lvl_mstr.ui.root_box->flags |= PKE_UI_BOX_FLAG_VISIBILITY_INVISIBLE; lvl_mstr.ui.root_setlist_items->flags = static_cast<PKE_UI_BOX_FLAG>(static_cast<PKE_UI_BOX_FLAG_T>(lvl_mstr.ui.root_setlist_items->flags) & ~static_cast<PKE_UI_BOX_FLAG_T>(PKE_UI_BOX_FLAG_VISIBILITY_INVISIBLE)); + lvl_mstr.ui.root_setlist_details->flags = static_cast<PKE_UI_BOX_FLAG>(static_cast<PKE_UI_BOX_FLAG_T>(lvl_mstr.ui.root_setlist_details->flags) & ~static_cast<PKE_UI_BOX_FLAG_T>(PKE_UI_BOX_FLAG_VISIBILITY_INVISIBLE)); + text_head += sprintf(summary_text+text_head, "(%li)\r\n\r\n", lvl_mstr.data.selected_plan->details.id.id_long); + text_head -= 1; + if (lvl_mstr.data.selected_plan->details.series_title.length > 0) { + text_head += sprintf(summary_text+text_head, "%s\r\n\r\n", lvl_mstr.data.selected_plan->details.series_title.val); + text_head -= 1; + } + if (lvl_mstr.data.selected_plan->details.title.length > 0) { + text_head += sprintf(summary_text+text_head, "%s\r\n\r\n", lvl_mstr.data.selected_plan->details.title.val); + text_head -= 1; + } + t = std::localtime(&lvl_mstr.data.selected_plan->details.date); + strftime(summary_text+text_head, 1024-text_head, "%FT%TZ", t); + pk_cstr cstr; + cstr.length = strlen(summary_text); + cstr.reserved = cstr.length + 1; + s = pk_new_arr<char>(cstr.reserved); + sprintf(s, "%s", summary_text); + cstr.val = s; + pke_ui_box_type_data::pke_ui_box_type_data_text *text = &lvl_mstr.ui.root_setlist_details->type_data->text; + FontType_UpdateStringRenderText(text->font_type_render, std::move(cstr)); for (u = 0; u < lvl_mstr.data.plan_items.next; ++u) { pk_cstr title; |
