summaryrefslogtreecommitdiff
path: root/src/level-main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/level-main.cpp')
-rw-r--r--src/level-main.cpp68
1 files changed, 50 insertions, 18 deletions
diff --git a/src/level-main.cpp b/src/level-main.cpp
index 71999ce..a852f7d 100644
--- a/src/level-main.cpp
+++ b/src/level-main.cpp
@@ -1,6 +1,7 @@
#include "level-main.hpp"
+#include "level-import.hpp"
#include "pke-at-common.hpp"
#include "pke-at-settings.hpp"
@@ -9,6 +10,7 @@
struct pke_level_main_master {
pke_level *level = nullptr;
struct pke_level_main_master_ui {
+ pke_ui_box *root_btn_import = nullptr;
pke_ui_box *ctrls = nullptr;
pke_ui_box *btn_play_pause = nullptr;
pke_ui_box *btn_stop = nullptr;
@@ -99,6 +101,17 @@ void pke_at_level_main_recalc_ui() {
box->pos_top_left.x = 0;
box->pos_top_left.y = 0;
+ box = main_mstr.ui.root_btn_import;
+ box->flags |= PKE_UI_BOX_FLAG_POSITION_TYPE_STATIC;
+ box->color_border = glm::vec4(1,1,1,1);
+ box->color_background = glm::vec4(.2,.2,.2,1);
+ box->min_size.x = 300;
+ box->min_size.y = 34;
+ box->max_size.x = 300;
+ box->max_size.y = 34;
+ box->pos_top_left.x = Extent.width - 300;
+ box->pos_top_left.y = 0;
+
pke_ui_force_recalc();
}
@@ -115,15 +128,15 @@ void pke_at_level_main_btn_play_pause_cb(void *ev_data, void *cb_data, void *em_
(void)em_data;
if (!PK_HAS_FLAG(g_at.rt.flags, PKE_AT_RUNTIME_FLAG_PLAYING)) {
g_at.rt.flags |= PKE_AT_RUNTIME_FLAG_PLAYING;
- FontType_UpdateStringRenderText(main_mstr.ui.btn_play_pause->type_data->button_text.font_render_handle, cstring_to_pk_cstr("Pause"));
+ FontType_UpdateStringRenderText(main_mstr.ui.btn_play_pause->type_data->button_text.font_type_render, cstring_to_pk_cstr("Pause"));
return;
}
if (!PK_HAS_FLAG(g_at.rt.flags, PKE_AT_RUNTIME_FLAG_PAUSED)) {
g_at.rt.flags |= PKE_AT_RUNTIME_FLAG_PAUSED;
- FontType_UpdateStringRenderText(main_mstr.ui.btn_play_pause->type_data->button_text.font_render_handle, cstring_to_pk_cstr("Resume"));
+ FontType_UpdateStringRenderText(main_mstr.ui.btn_play_pause->type_data->button_text.font_type_render, cstring_to_pk_cstr("Resume"));
} else {
g_at.rt.flags &= ~PKE_AT_RUNTIME_FLAG_PAUSED;
- FontType_UpdateStringRenderText(main_mstr.ui.btn_play_pause->type_data->button_text.font_render_handle, cstring_to_pk_cstr("Pause"));
+ FontType_UpdateStringRenderText(main_mstr.ui.btn_play_pause->type_data->button_text.font_type_render, cstring_to_pk_cstr("Pause"));
}
}
@@ -133,7 +146,7 @@ void pke_at_level_main_btn_stop_cb(void *ev_data, void *cb_data, void *em_data)
(void)em_data;
g_at.rt.flags &= ~(PKE_AT_RUNTIME_FLAG_PLAYING | PKE_AT_RUNTIME_FLAG_PAUSED);
pke_at_bpm_reset(g_at.bpm.target);
- FontType_UpdateStringRenderText(main_mstr.ui.btn_play_pause->type_data->button_text.font_render_handle, cstring_to_pk_cstr("Play"));
+ FontType_UpdateStringRenderText(main_mstr.ui.btn_play_pause->type_data->button_text.font_type_render, cstring_to_pk_cstr("Play"));
}
void pke_at_level_main_btn_next_cb(void *ev_data, void *cb_data, void *em_data) {
@@ -143,63 +156,82 @@ void pke_at_level_main_btn_next_cb(void *ev_data, void *cb_data, void *em_data)
// TODO
}
+void pke_at_level_main_btn_import_cb(void *ev_data, void *cb_data, void *em_data) {
+ (void)ev_data;
+ (void)cb_data;
+ (void)em_data;
+ pkeSettings.rt.nextLevel = pke_at_level_import_create();
+}
+
void pke_at_level_main_init() {
FontRenderSettings frs{};
pke_ui_box *ctrls = pke_ui_box_new_root();
+ pke_ui_box *root_btn_import = pke_ui_box_new_root(PKE_UI_BOX_TYPE_BUTTON_TEXT);
pke_level_register_root_ui_box(main_mstr.level, ctrls);
+ pke_level_register_root_ui_box(main_mstr.level, root_btn_import);
main_mstr.ui.ctrls = ctrls;
+ main_mstr.ui.root_btn_import = root_btn_import;
pke_ui_box *btn_prev_track = pke_ui_box_new_child(ctrls, PKE_UI_BOX_TYPE_BUTTON_TEXT);
main_mstr.ui.btn_prev_track = btn_prev_track;
- frs.char_scale = 12;
+ frs.char_scale = 16;
frs.color_background = glm::vec4(0,0,0,1);
frs.color_foreground = glm::vec4(1,0,0,1);
frs.surface_area_type_flags = FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_CENTER_BOTH;
- FontRenderHandle fr_prev = FontType_AddStringRender(FontTypeIndex{0}, cstring_to_pk_cstr(" < "), &frs);
- btn_prev_track->type_data->button_text.font_render_handle = fr_prev;
+ FontTypeRender fr_prev = FontType_AddStringRender(FontTypeIndex{0}, cstring_to_pk_cstr(" < "), &frs);
+ btn_prev_track->type_data->button_text.font_type_render = fr_prev;
pke_component_event *prev_ev = ECS_CreateEv(btn_prev_track, pk_uuid_max);
pk_ev_register_cb(prev_ev->ev_mgr_id, prev_ev->ev_id, pke_at_level_main_btn_prev_cb, nullptr);
btn_prev_track->type_data->button_text.pke_event_handle = prev_ev->pke_event_handle;
pke_ui_box *btn_play_pause = pke_ui_box_new_child(ctrls, PKE_UI_BOX_TYPE_BUTTON_TEXT);
main_mstr.ui.btn_play_pause = btn_play_pause;
- frs.char_scale = 12;
+ frs.char_scale = 16;
frs.color_background = glm::vec4(0,0,0,1);
frs.color_foreground = glm::vec4(0,1,0,1);
frs.surface_area_type_flags = FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_CENTER_BOTH;
- FontRenderHandle fr_play = FontType_AddStringRender(FontTypeIndex{0}, cstring_to_pk_cstr(" Play "), &frs);
- btn_play_pause->type_data->button_text.font_render_handle = fr_play;
+ FontTypeRender fr_play = FontType_AddStringRender(FontTypeIndex{0}, cstring_to_pk_cstr(" Play "), &frs);
+ btn_play_pause->type_data->button_text.font_type_render = fr_play;
pke_component_event *play_pause_ev = ECS_CreateEv(btn_play_pause, pk_uuid_max);
pk_ev_register_cb(play_pause_ev->ev_mgr_id, play_pause_ev->ev_id, pke_at_level_main_btn_play_pause_cb, nullptr);
btn_play_pause->type_data->button_text.pke_event_handle = play_pause_ev->pke_event_handle;
pke_ui_box *btn_stop = pke_ui_box_new_child(ctrls, PKE_UI_BOX_TYPE_BUTTON_TEXT);
main_mstr.ui.btn_stop = btn_stop;
- frs.char_scale = 12;
+ frs.char_scale = 16;
frs.color_background = glm::vec4(0,0,0,1);
frs.color_foreground = glm::vec4(0.5,0.5,0,1);
frs.surface_area_type_flags = FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_CENTER_BOTH;
- FontRenderHandle fr_stop = FontType_AddStringRender(FontTypeIndex{0}, cstring_to_pk_cstr(" Stop "), &frs);
- btn_stop->type_data->button_text.font_render_handle = fr_stop;
+ FontTypeRender fr_stop = FontType_AddStringRender(FontTypeIndex{0}, cstring_to_pk_cstr(" Stop "), &frs);
+ btn_stop->type_data->button_text.font_type_render = fr_stop;
pke_component_event *stop_ev = ECS_CreateEv(btn_stop, pk_uuid_max);
pk_ev_register_cb(stop_ev->ev_mgr_id, stop_ev->ev_id, pke_at_level_main_btn_stop_cb, nullptr);
btn_stop->type_data->button_text.pke_event_handle = stop_ev->pke_event_handle;
pke_ui_box *btn_next_track = pke_ui_box_new_child(ctrls, PKE_UI_BOX_TYPE_BUTTON_TEXT);
main_mstr.ui.btn_next_track = btn_next_track;
- frs.char_scale = 12;
+ frs.char_scale = 16;
frs.color_background = glm::vec4(0,0,0,1);
frs.color_foreground = glm::vec4(0,0,1,1);
frs.surface_area_type_flags = FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_CENTER_BOTH;
- FontRenderHandle fr_next = FontType_AddStringRender(FontTypeIndex{0}, cstring_to_pk_cstr(" > "), &frs);
- btn_next_track->type_data->button_text.font_render_handle = fr_next;
+ FontTypeRender fr_next = FontType_AddStringRender(FontTypeIndex{0}, cstring_to_pk_cstr(" > "), &frs);
+ btn_next_track->type_data->button_text.font_type_render = fr_next;
pke_component_event *next_ev = ECS_CreateEv(btn_next_track, pk_uuid_max);
pk_ev_register_cb(next_ev->ev_mgr_id, next_ev->ev_id, pke_at_level_main_btn_next_cb, nullptr);
btn_next_track->type_data->button_text.pke_event_handle = next_ev->pke_event_handle;
+ frs.char_scale = 16;
+ frs.color_background = glm::vec4(0,0,0,1);
+ frs.color_foreground = glm::vec4(1,1,1,1);
+ frs.surface_area_type_flags = FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_CENTER_BOTH;
+ pke_component_event *import_ev = ECS_CreateEv(main_mstr.ui.root_btn_import, pk_uuid_max);
+ main_mstr.ui.root_btn_import->type_data->button_text.pke_event_handle = import_ev->pke_event_handle;
+ pk_ev_register_cb(import_ev->ev_mgr_id, import_ev->ev_id, pke_at_level_main_btn_import_cb, nullptr);
+ main_mstr.ui.root_btn_import->type_data->button_text.font_type_render = FontType_AddStringRender(FontTypeIndex{0}, cstring_to_pk_cstr("IMPORT"), &frs);
+
pke_at_bpm_reset(120);
- g_at.mtrnm.beep = pke_at_audio_get_or_generate_sawtooth(440.f, 0.30);
- g_at.mtrnm.beep_accent = pke_at_audio_get_or_generate_sawtooth(440.f * (3/2.f), 0.30);
+ g_at.mtrnm.beep = g_keys[PKE_AT_KEY_INDEX_B].mtrnm_beat_asset_handle;
+ g_at.mtrnm.beep_accent = g_keys[PKE_AT_KEY_INDEX_B].mtrnm_down_beat_asset_handle;
pke_audio_set_volume(pke_audio_source_sfx, 0.25);
g_at.rt.flags = PKE_AT_RUNTIME_FLAG_NONE;