#include "scene_impl.h" #include "assets_tag.h" #include static void options_scene_render_func(Scene_t* scene) { //OptionSceneData_t* data = &(CONTAINER_OF(scene, OptionScene_t, scene)->data); int key; ActionType_t action; char buffer[16]; int y_offset = 16; BeginTextureMode(scene->layers.render_layers[0].layer_tex); sc_map_foreach(&scene->engine->keybinds, action, key) { sprintf(buffer, "Action %d : %d", action, key); DrawText(buffer, 32, y_offset, 12, WHITE); y_offset += 12; } float vol = GetMasterVolume(); sprintf(buffer, "Volume : %.1f", vol); DrawText(buffer, 32, y_offset, 12, WHITE); EndTextureMode(); } static void options_do_action(Scene_t* scene, ActionType_t action, bool pressed) { switch(action) { case ACTION_EXIT: if (!pressed) { if(scene->engine != NULL) { change_scene(scene->engine, MAIN_MENU_SCENE); } } break; default: break; } } void init_options_scene(OptionScene_t* scene) { init_scene(&scene->scene, &options_do_action, 0); scene->scene.bg_colour = BLACK; add_scene_layer( &scene->scene, scene->scene.engine->intended_window_size.x, scene->scene.engine->intended_window_size.y, (Rectangle){ 0, 0, scene->scene.engine->intended_window_size.x, scene->scene.engine->intended_window_size.y } ); sc_array_add(&scene->scene.systems, &options_scene_render_func); sc_map_put_64(&scene->scene.action_map, get_keybind_or_default(scene->scene.engine, ACTION_UP, KEY_UP), ACTION_UP); sc_map_put_64(&scene->scene.action_map, get_keybind_or_default(scene->scene.engine, ACTION_DOWN, KEY_DOWN), ACTION_DOWN); sc_map_put_64(&scene->scene.action_map, get_keybind_or_default(scene->scene.engine, ACTION_LEFT, KEY_LEFT), ACTION_LEFT); sc_map_put_64(&scene->scene.action_map, get_keybind_or_default(scene->scene.engine, ACTION_RIGHT, KEY_RIGHT), ACTION_RIGHT); sc_map_put_64(&scene->scene.action_map, get_keybind_or_default(scene->scene.engine, ACTION_JUMP, KEY_ENTER), ACTION_CONFIRM); sc_map_put_64(&scene->scene.action_map, get_keybind_or_default(scene->scene.engine, ACTION_EXIT, KEY_Q), ACTION_EXIT); sc_map_put_64(&scene->scene.action_map, KEY_BACKSPACE, ACTION_EXIT); } void free_options_scene(OptionScene_t* scene) { free_scene(&scene->scene); }