From 70af79f5399777cdc69cc6939d29df694318ff8d Mon Sep 17 00:00:00 2001 From: hgn Date: Sat, 10 Jun 2023 14:58:51 +0100 Subject: [PATCH] modals --- menu.h | 3 +- skaterift_imgui_dev.c | 130 ++++++++++++++++++++++++++++++++++++++++++ workshop.c | 2 +- 3 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 skaterift_imgui_dev.c diff --git a/menu.h b/menu.h index 32291c1..4886843 100644 --- a/menu.h +++ b/menu.h @@ -521,7 +521,8 @@ VG_STATIC void menu_render(void) shader_blitcolour_uColour( colour ); render_fsquad(); - if( workshop_form.page != k_workshop_form_hidden ){ + if( (workshop_form.page != k_workshop_form_hidden) || + (vg_ui.focused_control_type != k_ui_control_none) ){ return; } diff --git a/skaterift_imgui_dev.c b/skaterift_imgui_dev.c new file mode 100644 index 0000000..d4365e1 --- /dev/null +++ b/skaterift_imgui_dev.c @@ -0,0 +1,130 @@ +/* + * ============================================================================= + * + * Copyright . . . -----, ,----- ,---. .---. + * 2021-2023 |\ /| | / | | | | /| + * | \ / | +-- / +----- +---' | / | + * | \ / | | / | | \ | / | + * | \/ | | / | | \ | / | + * ' ' '--' [] '----- '----- ' ' '---' SOFTWARE + * + * ============================================================================= + */ + +#define SR_NETWORKED +#define VG_DEVWINDOW + +#include "common.h" +#if 0 +#include "conf.h" +#include "steam.h" +#include "render.h" +#include "audio.h" +#include "world.h" +#include "font.h" +#include "player.h" +#include "entity.c" +#include "workshop.c" +#endif + +static int skaterift_loaded = 0; +static char g_an_buffer[ 4096 ]; + +int main( int argc, char *argv[] ) +{ + vg_mem.use_libc_malloc = 0; + vg_set_mem_quota( 160*1024*1024 ); + vg_enter( argc, argv, "Voyager Game Engine" ); + return 0; +} + +VG_STATIC void vg_launch_opt(void) +{ +} + +VG_STATIC void vg_preload(void) +{ +vg_info(" Copyright . . . -----, ,----- ,---. .---. \n" ); +vg_info(" 2021-2023 |\\ /| | / | | | | /| \n" ); +vg_info(" | \\ / | +-- / +----- +---' | / | \n" ); +vg_info(" | \\ / | | / | | \\ | / | \n" ); +vg_info(" | \\/ | | / | | \\ | / | \n" ); +vg_info(" ' ' '--' [] '----- '----- ' ' '---' " + "SOFTWARE\n" ); +} + +VG_STATIC void skaterift_load_post( void *data, u32 len ) +{ + skaterift_loaded = 1; +} + +VG_STATIC void vg_load(void) +{ + vg_bake_shaders(); + vg_async_call( skaterift_load_post, NULL, 0 ); +} + +VG_STATIC void vg_update(void) +{ +} + +VG_STATIC void vg_update_fixed(void) +{ +} + +VG_STATIC void vg_update_post(void) +{ +} + +VG_STATIC void vg_framebuffer_resize( int w, int h ) +{ + //render_fb_resize(); +} + +VG_STATIC void vg_render(void) +{ + glBindFramebuffer( GL_FRAMEBUFFER, 0 ); + + glViewport( 0,0, vg.window_x, vg.window_y ); + glDisable( GL_DEPTH_TEST ); + + glClearColor( 0.0f, 0.2f, 0.7f, 0.0f ); + glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT ); + + /* Other shite */ + glDisable( GL_BLEND ); + glDisable( GL_DEPTH_TEST ); + vg_lines_drawall(); +} + +VG_STATIC void vg_gui(void) +{ + if( !skaterift_loaded ) return; + + ui_rect null; + ui_rect screen = { 0, 0, vg.window_x, vg.window_y }; + ui_rect window = { 0, 0, 1000, 700 }; + ui_rect_center( screen, window ); + vg_ui.wants_mouse = 1; + + ui_fill( window, ui_colour( k_ui_bg+1 ) ); + ui_outline( window, 1, ui_colour( k_ui_bg+7 ) ); + + ui_rect title, panel; + ui_split( window, k_ui_axis_h, 28, 0, title, panel ); + ui_fill( title, ui_colour( k_ui_bg+7 ) ); + ui_text( title, "Workshop tool", 1, k_ui_align_middle_center, + ui_colourcont(k_ui_bg+7) ); + + ui_rect quit_button; + ui_split( title, k_ui_axis_v, title[2]-title[3], 2, title, quit_button ); + if( ui_button_text( quit_button, "x", 1 ) ){ + ui_start_modal( g_an_buffer, UI_MODAL_GOOD ); + } + + ui_rect tbox; + ui_split( panel, k_ui_axis_h, 28, 0, tbox, panel ); + ui_textbox( tbox, g_an_buffer, 4096, 0, NULL ); + + ui_dev_colourview(); +} diff --git a/workshop.c b/workshop.c index 7f00820..55b32d0 100644 --- a/workshop.c +++ b/workshop.c @@ -874,7 +874,7 @@ VG_STATIC void on_workshop_UGCQueryComplete( void *data, void *userdata ) VG_STATIC int workshop_submit_command( int argc, const char *argv[] ) { if( !steam_ready ){ - vg_error( "Steam API is not ready or loaded\n" ); + ui_start_modal( "Steam API is not initialized\n", UI_MODAL_BAD ); return 0; } -- 2.25.1