73 lines
2.5 KiB
C
73 lines
2.5 KiB
C
#include "scene_impl.h"
|
|
#include "assets_tag.h"
|
|
#include <stdio.h>
|
|
|
|
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);
|
|
}
|