add configuration for settings menu

This commit is contained in:
Tuomas Katajisto 2026-09-29 21:02:42 +03:00
parent 0d44c75fa9
commit 28a4c44478
4 changed files with 171 additions and 13 deletions

View File

@ -238,6 +238,7 @@ wasm_build :: (opts: Build_Options, trueno_opts: Trueno_Build_Options) {
"emcc",
"src/platform_specific/main.c", "dist/main.o", "modules/sokol-jai/sokol/gfx/sokol_gfx_wasm_gl_release.a", "modules/sokol-jai/sokol/log/sokol_log_wasm_gl_release.a", "modules/sokol-jai/sokol/audio/sokol_audio_wasm_gl_release.a", "modules/sokol-jai/sokol/time/sokol_time_wasm_gl_release.a", "modules/sokol-jai/sokol/app/sokol_app_wasm_gl_release.a", "modules/sokol-jai/sokol/glue/sokol_glue_wasm_gl_release.a", "modules/sokol-jai/sokol/fetch/sokol_fetch_wasm_gl_release.a", "modules/sokol-jai/sokol/gl/sokol_gl_wasm_gl_release.a", "modules/sokol-jai/sokol/fontstash/sokol_fontstash_wasm_gl_release.a",
"modules/sokol-jai/sokol/stbi/stb_image.a",
"modules/sokol-jai/sokol/stbv/stb_vorbis.a",
"-o", "dist/index.html",
"-sSTACK_SIZE=10MB",
"-sALLOW_MEMORY_GROWTH",

View File

@ -1,6 +1,6 @@
_______________
Vulkan Version:
- available: 1.3.296
- available: 1.4.309
- requesting: 1.3.0
______________________
Used Instance Layers :
@ -8,17 +8,15 @@ VK_LAYER_KHRONOS_validation
Used Instance Extensions :
____________________
Devices : 2
0: AMD Radeon RX 6700 XT (RADV NAVI22)
Devices : 1
0: AMD Radeon RX 6950 XT
- Compatible
1: llvmpipe (LLVM 20.1.2, 256 bits)
- Compatible
Compatible physical devices found : 2
Compatible physical devices found : 1
Using Device:
- Device Name : AMD Radeon RX 6700 XT (RADV NAVI22)
- Device Name : AMD Radeon RX 6950 XT
- Vendor : AMD
- Driver Version : 25.2.8
- API Version : 1.4.318
- Driver Version : 2.0.341
- API Version : 1.4.308
- Device Type : Discrete GPU
________________________
Used Device Extensions :
@ -26,4 +24,139 @@ VK_KHR_deferred_host_operations
VK_KHR_acceleration_structure
VK_KHR_ray_query
BLAS Compaction: 0.3MB -> 0.2MB (0.1MB saved, 32.1% smaller)
BLAS Compaction: 0.7MB -> 0.2MB (0.5MB saved, 65.9% smaller)
_______________
Vulkan Version:
- available: 1.4.309
- requesting: 1.3.0
______________________
Used Instance Layers :
VK_LAYER_KHRONOS_validation
Used Instance Extensions :
____________________
Devices : 1
0: AMD Radeon RX 6950 XT
- Compatible
Compatible physical devices found : 1
Using Device:
- Device Name : AMD Radeon RX 6950 XT
- Vendor : AMD
- Driver Version : 2.0.341
- API Version : 1.4.308
- Device Type : Discrete GPU
________________________
Used Device Extensions :
VK_KHR_deferred_host_operations
VK_KHR_acceleration_structure
VK_KHR_ray_query
BLAS Compaction: 0.8MB -> 0.3MB (0.5MB saved, 66.0% smaller)
_______________
Vulkan Version:
- available: 1.4.309
- requesting: 1.3.0
______________________
Used Instance Layers :
VK_LAYER_KHRONOS_validation
Used Instance Extensions :
____________________
Devices : 1
0: AMD Radeon RX 6950 XT
- Compatible
Compatible physical devices found : 1
Using Device:
- Device Name : AMD Radeon RX 6950 XT
- Vendor : AMD
- Driver Version : 2.0.341
- API Version : 1.4.308
- Device Type : Discrete GPU
________________________
Used Device Extensions :
VK_KHR_deferred_host_operations
VK_KHR_acceleration_structure
VK_KHR_ray_query
BLAS Compaction: 0.8MB -> 0.3MB (0.5MB saved, 66.0% smaller)
_______________
Vulkan Version:
- available: 1.4.309
- requesting: 1.3.0
______________________
Used Instance Layers :
VK_LAYER_KHRONOS_validation
Used Instance Extensions :
____________________
Devices : 1
0: AMD Radeon RX 6950 XT
- Compatible
Compatible physical devices found : 1
Using Device:
- Device Name : AMD Radeon RX 6950 XT
- Vendor : AMD
- Driver Version : 2.0.341
- API Version : 1.4.308
- Device Type : Discrete GPU
________________________
Used Device Extensions :
VK_KHR_deferred_host_operations
VK_KHR_acceleration_structure
VK_KHR_ray_query
BLAS Compaction: 0.8MB -> 0.3MB (0.5MB saved, 66.0% smaller)
_______________
Vulkan Version:
- available: 1.4.309
- requesting: 1.3.0
______________________
Used Instance Layers :
VK_LAYER_KHRONOS_validation
Used Instance Extensions :
____________________
Devices : 1
0: AMD Radeon RX 6950 XT
- Compatible
Compatible physical devices found : 1
Using Device:
- Device Name : AMD Radeon RX 6950 XT
- Vendor : AMD
- Driver Version : 2.0.341
- API Version : 1.4.308
- Device Type : Discrete GPU
________________________
Used Device Extensions :
VK_KHR_deferred_host_operations
VK_KHR_acceleration_structure
VK_KHR_ray_query
BLAS Compaction: 0.8MB -> 0.3MB (0.5MB saved, 65.9% smaller)
_______________
Vulkan Version:
- available: 1.4.309
- requesting: 1.3.0
______________________
Used Instance Layers :
VK_LAYER_KHRONOS_validation
Used Instance Extensions :
____________________
Devices : 1
0: AMD Radeon RX 6950 XT
- Compatible
Compatible physical devices found : 1
Using Device:
- Device Name : AMD Radeon RX 6950 XT
- Vendor : AMD
- Driver Version : 2.0.341
- API Version : 1.4.308
- Device Type : Discrete GPU
________________________
Used Device Extensions :
VK_KHR_deferred_host_operations
VK_KHR_acceleration_structure
VK_KHR_ray_query
BLAS Compaction: 0.8MB -> 0.3MB (0.5MB saved, 65.9% smaller)

View File

@ -58,8 +58,17 @@ AUDIO_LABELS :: string.["Master Volume", "Music Volume", "Sound Effects"];
GRAPHICS_ITEMS :: string.["Fullscreen"];
}
main_items :: () -> []string {
result : [..]string;
result.allocator = temp;
array_add(*result, MAIN_ITEMS[0]);
for g_settings_config.main_items array_add(*result, it.label);
for 1..MAIN_ITEMS.count-1 array_add(*result, MAIN_ITEMS[it]);
return result;
}
page_items :: () -> []string {
if g_settings.page == .MAIN return MAIN_ITEMS;
if g_settings.page == .MAIN return main_items();
if g_settings.page == .SETTINGS return SETTINGS_ITEMS;
if g_settings.page == .AUDIO return AUDIO_LABELS;
if g_settings.page == .GRAPHICS return GRAPHICS_ITEMS;
@ -224,9 +233,17 @@ handle_enter :: (index: s32 = -1) {
i := ifx index >= 0 then index else g_settings.cursor;
if g_settings.page == {
case .MAIN;
game_items := cast(s32) g_settings_config.main_items.count;
if i == 0 { save_settings(); g_settings.open = false; }
else if i <= game_items {
save_settings();
g_settings.open = false;
g_settings_config.main_items[i - 1].on_select();
} else {
i -= game_items;
if i == 1 then navigate_to(.SETTINGS);
if i == 2 { save_settings(); sapp_request_quit(); }
}
case .SETTINGS;
if i == 0 then navigate_to(.AUDIO);
if i == 1 then navigate_to(.GRAPHICS);
@ -255,10 +272,17 @@ Phosphene_Config :: struct {
palette : []Vector3;
}
// An entry the game adds to the pause menu. Choosing it closes the menu first.
Settings_Menu_Item :: struct {
label : string;
on_select : ();
}
Settings_Menu_Config :: struct {
game_title : string = "TRUENO";
credits : string = "Trueno engine by Tuomas Katajisto 2026";
phosphenes : Phosphene_Config;
main_items : []Settings_Menu_Item; // must outlive the config, e.g. a constant array
}
set_settings_config :: (config: Settings_Menu_Config) {

Binary file not shown.