summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-11-17 10:02:18 -0500
committerJonathan Bradley <jcb@pikum.xyz>2025-11-17 10:02:18 -0500
commitf540514582ca1e1ec126476d5fb4a41d9a3b6403 (patch)
tree933ae42e9afb2585a1db141aead296fa49569a3c
parente25a2772e10435f420ccb91dd52914255f9a0771 (diff)
pke-at: import level build setlist details summary
-rw-r--r--src/level-import.cpp35
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;