#include "shaders/model_menu.h"
#include "vg_steam_friends.h"
-#include "submodules/tinydir/tinydir.h"
VG_STATIC mdl_context menu_model;
VG_STATIC mdl_array_ptr menu_markers;
VG_STATIC const char *playermodels[] = { "ch_new", "ch_jordan", "ch_outlaw" };
-vg_tex2d tex_menu = { .path = "textures/menu.qoi",.flags = VG_TEXTURE_NEAREST };
+GLuint tex_menu;
VG_STATIC struct input_binding input_menu_h,
input_menu_v,
VG_STATIC void menu_btn_invert_y( int event );
VG_STATIC mdl_mesh *menu_mesh_fov_slider,
- *menu_mesh_vol_slider;
+ *menu_mesh_vol_slider,
+ *menu_mesh_res_slider;
VG_STATIC ent_marker
*menu_mark_fov_min,
*menu_mark_fov_max,
*menu_mark_vol_min,
- *menu_mark_vol_max;
+ *menu_mark_vol_max,
+ *menu_mark_res_min,
+ *menu_mark_res_max;
struct{
/* state */
VG_STATIC int menu_controller( struct menu_btn_userdata ud )
{
if( (game_menu.page & (k_menu_page_main|k_menu_page_settings))
- && (ud.i == menu_display_controller) )
+ && (ud.i == steam_display_controller) )
return 1;
return 0;
}
VG_STATIC int menu_controller_inf( struct menu_btn_userdata ud )
{
if( (game_menu.page & k_menu_page_settings)
- && (ud.i == menu_display_controller) )
+ && (ud.i == steam_display_controller) )
return 1;
return 0;
}
{
"vol_slider", menu_vis, {k_menu_page_settings},
- .lu="text_blur"
+ .lu="res_slider"
},
{ "vol_info", menu_vis, {k_menu_page_settings} },
{
"text_blur", menu_vis, {k_menu_page_settings},
.fn_press = menu_btn_blur,
- .lu="text_invert_y", .ld="vol_slider"
+ .lu="text_invert_y", .ld="res_slider"
},
{
"text_blur_check", menu_settings_if, {.ptr_generic=&cl_blur}
},
-
-{ "ctr_xbox", menu_controller_inf, {k_menu_controller_type_xbox}},
-{ "ctr_xbox_text", menu_controller_inf, {k_menu_controller_type_xbox}},
-{ "ctr_steam", menu_controller_inf, {k_menu_controller_type_steam}},
-{ "ctr_steam_text", menu_controller_inf, {k_menu_controller_type_steam}},
-{ "ctr_deck", menu_controller_inf, {k_menu_controller_type_steam_deck}},
-{ "ctr_deck_text", menu_controller_inf, {k_menu_controller_type_steam_deck}},
-{ "ctr_ps", menu_controller_inf, {k_menu_controller_type_playstation}},
-{ "ctr_ps_text", menu_controller_inf, {k_menu_controller_type_playstation}},
-{ "ctr_kbm", menu_controller_inf, {k_menu_controller_type_keyboard}},
-{ "ctr_kbm_text", menu_controller_inf, {k_menu_controller_type_keyboard}},
+{
+ "res_slider", menu_vis, {k_menu_page_settings},
+ .ld = "vol_slider", .lu = "text_blur"
+},
+{
+ "res_info", menu_vis, {k_menu_page_settings},
+},
+{ "ctr_xbox", menu_controller_inf, {k_steam_controller_type_xbox}},
+{ "ctr_xbox_text", menu_controller_inf, {k_steam_controller_type_xbox}},
+{ "ctr_steam", menu_controller_inf, {k_steam_controller_type_steam}},
+{ "ctr_steam_text", menu_controller_inf, {k_steam_controller_type_steam}},
+{ "ctr_deck", menu_controller_inf, {k_steam_controller_type_steam_deck}},
+{ "ctr_deck_text", menu_controller_inf, {k_steam_controller_type_steam_deck}},
+{ "ctr_ps", menu_controller_inf, {k_steam_controller_type_playstation}},
+{ "ctr_ps_text", menu_controller_inf, {k_steam_controller_type_playstation}},
+{ "ctr_kbm", menu_controller_inf, {k_steam_controller_type_keyboard}},
+{ "ctr_kbm_text", menu_controller_inf, {k_steam_controller_type_keyboard}},
{
"text_paused", menu_vis, {k_menu_page_main}
},
return 0;
}
-VG_STATIC int __respawn( int argc, const char *argv[] );
VG_STATIC void menu_btn_reset( int event )
{
- __respawn(0,NULL);
+ localplayer_cmd_respawn( 0, NULL );
cl_menu_go_away = 1;
game_menu.page = 0;
}
struct menu_map_file *mf = &game_menu.maps_list[ game_menu.map_count ];
vg_strncpy( file.name, mf->name,
- vg_list_size(game_menu.maps_list[0].name)-1 );
+ vg_list_size(game_menu.maps_list[0].name),
+ k_strncpy_always_add_null );
game_menu.map_count ++;
if( game_menu.map_count == vg_list_size(game_menu.maps_list) )
mdl_open( &menu_model, "models/rs_menu.mdl", vg_mem.rtmemory );
mdl_load_metadata_block( &menu_model, vg_mem.rtmemory );
- mdl_load_mesh_block( &menu_model, vg_mem.scratch );
mdl_load_array( &menu_model, &menu_markers, "ent_marker", vg_mem.rtmemory );
//mdl_invert_uv_coordinates( &menu_model );
+ mdl_async_load_glmesh( &menu_model, &menu_glmesh );
mdl_close( &menu_model );
- vg_acquire_thread_sync();
- {
- mdl_unpack_glmesh( &menu_model, &menu_glmesh );
- vg_tex2d_init( (vg_tex2d *[]){ &tex_menu }, 1 );
- }
- vg_release_thread_sync();
+ vg_tex2d_load_qoi_async_file( "textures/menu.qoi",
+ VG_TEX2D_CLAMP|VG_TEX2D_NEAREST,
+ &tex_menu );
+
for( int i=0; i<vg_list_size(menu_buttons); i++ ){
struct menu_button *btn = &menu_buttons[i];
if( !btn->mesh ){
vg_info( "info: %s\n", btn->name );
- vg_fatal_exit_loop( "Menu programming error" );
+ vg_fatal_error( "Menu programming error" );
}
}
ent_find_marker( &menu_model, &menu_markers, "vol_slider_max" );
menu_mark_vol_min =
ent_find_marker( &menu_model, &menu_markers, "vol_slider_min" );
+ menu_mark_res_max =
+ ent_find_marker( &menu_model, &menu_markers, "res_slider_max" );
+ menu_mark_res_min =
+ ent_find_marker( &menu_model, &menu_markers, "res_slider_min" );
menu_mesh_fov_slider = mdl_find_mesh( &menu_model, "fov_slider" );
menu_mesh_vol_slider = mdl_find_mesh( &menu_model, "vol_slider" );
+ menu_mesh_res_slider = mdl_find_mesh( &menu_model, "res_slider" );
shader_model_menu_register();
if( set_value ){
float h = input_menu_h.axis.value;
if( fabsf(h) > 0.04f )
- *value += h * vg.frame_delta;
+ *value += h * vg.time_frame_delta;
*value = vg_clampf( *value, 0.0f, 1.0f );
}
menu_mesh_vol_slider, menu_mark_vol_min->transform.co,
menu_mark_vol_max->transform.co );
+ menu_slider( &gpipeline.view_render_scale,
+ (game_menu.loc == menu_get_loc( "res_slider" )),
+ menu_mesh_res_slider, menu_mark_res_min->transform.co,
+ menu_mark_res_max->transform.co );
+
if( menu_page_should_backout() ){
game_menu.page = k_menu_page_main;
game_menu.loc = menu_get_loc( "text_settings" );
}
}
-player_instance *tmp_localplayer(void);
-
VG_STATIC void menu_update(void)
{
vg_input_update( 1, &input_menu_h );
vg_input_update( 1, &input_menu_press );
vg_input_update( 1, &input_menu_toggle );
vg_input_update( 1, &input_menu_toggle_kbm );
+ return;
int toggle_gp = vg_input_button_down( &input_menu_toggle ),
toggle_kb = vg_input_button_down( &input_menu_toggle_kbm ),
/* Base */
{
- player_instance *player = tmp_localplayer();
+ player_instance *player = &localplayer;
struct player_avatar *av = player->playeravatar;
v3f center_rough;
m3x3_mul( player->basis, menu_mdl_mtx, menu_mdl_mtx );
menu_smooth_fov = vg_lerpf( menu_smooth_fov, menu_fov_target,
- vg.frame_delta * 8.2f );
+ vg.time_frame_delta * 8.2f );
}
/* Extra */
float y = atan2f( delta[0], delta[2] ),
p = -sinf(delta[1]),
- dt = vg.frame_delta;
+ dt = vg.time_frame_delta;
menu_extra_angles[0] = vg_lerpf( menu_extra_angles[0], y, dt );
menu_extra_angles[1] = vg_lerpf( menu_extra_angles[1], p, dt );
menu_camera_angles[0] = fmodf( menu_camera_angles[0], VG_TAUf );
}
- float dt = vg.frame_delta * 6.0f;
+ float dt = vg.time_frame_delta * 6.0f;
menu_opacity = vg_lerpf( menu_opacity, cl_menu&&!cl_menu_go_away, dt );
if( menu_opacity <= 0.01f ){
vg.time_rate = 1.0-(double)menu_opacity;
if( cl_menu ){
- menu_input_cooldown -= vg.frame_delta;
+ menu_input_cooldown -= vg.time_frame_delta;
}
}
shader_model_menu_use();
shader_model_menu_uColour( (v4f){ 1.0f,1.0f,1.0f,1.0f} );
shader_model_menu_uTexMain( 1 );
- vg_tex2d_bind( &tex_menu, 1 );
+
+ glActiveTexture( GL_TEXTURE1 );
+ glBindTexture( GL_TEXTURE_2D, tex_menu );
shader_model_menu_uPv( cam->mtx.pv );
shader_model_menu_uPvmPrev( cam->mtx_prev.pv );
tsize1 = i==game_menu.loc? 0.07f: 0.0f,
tsize = tsize0+tsize1;
- btn->falpha = vg_lerpf( btn->falpha, talpha, vg.frame_delta * 14.0f );
- btn->fsize = vg_lerpf( btn->fsize, tsize, vg.frame_delta * 7.0f );
+ btn->falpha = vg_lerpf( btn->falpha, talpha, vg.time_frame_delta * 14.0f);
+ btn->fsize = vg_lerpf( btn->fsize, tsize, vg.time_frame_delta * 7.0f );
/* Colour */
v4f vselected = {0.95f*1.3f,0.45f*1.3f,0.095f*1.3f, 1.0f},
mdl_transform_m4x3( &btn->mesh->transform, mtx );
m4x3_mul( menu_mdl_mtx, mtx, mtx );
m4x3_identity( mtx_size );
- m4x3_scale( mtx_size, expSustainedImpulse( btn->fsize, 0.5f, 8.7f) );
+ m3x3_scalef( mtx_size, expSustainedImpulse( btn->fsize, 0.5f, 8.7f) );
m4x3_mul( mtx, mtx_size, mtx );
shader_model_menu_uMdl( mtx );