- glEnable(GL_BLEND);
- glDisable(GL_DEPTH_TEST);
- glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
- glBlendEquation(GL_FUNC_ADD);
-
- shader_blitcolour_use();
- v4f colour;
- ui_hex_to_norm( ui_colour( k_ui_bg+3 ), colour );
- colour[3] = 0.5f;
-
- shader_blitcolour_uColour( colour );
- render_fsquad();
-
- if( workshop_form.page != k_workshop_form_hidden ){
- return;
- }
-
- if( menu.credits_open ){
- ui_rect panel = { 0,0, 460, 400 },
- screen = { 0,0, vg.window_x,vg.window_y };
- ui_rect_center( screen, panel );
- ui_fill( panel, ui_colour(k_ui_bg) );
- ui_outline( panel, 1, ui_colour(k_ui_fg) );
- ui_rect_pad( panel, (ui_px[]){8,8} );
-
- ui_rect title;
- ui_split( panel, k_ui_axis_h, 28*2, 0, title, panel );
- ui_text( title, "Skate Rift - Credits", 2, k_ui_align_middle_center, 0 );
- ui_split( panel, k_ui_axis_h, 28, 0, title, panel );
- ui_text( title, "Mt.Zero Software", 1, k_ui_align_middle_center, 0 );
-
- ui_split( panel, k_ui_axis_h, 8, 0, title, panel );
- ui_split( panel, k_ui_axis_h, 28, 0, title, panel );
- ui_text( title, "A game by Harry Godden", 1,
- k_ui_align_middle_center, 0 );
-
- ui_split( panel, k_ui_axis_h, 8, 0, title, panel );
- ui_split( panel, k_ui_axis_h, 28*2, 0, title, panel );
- ui_text( title, "Free Software", 2, k_ui_align_middle_center, 0 );
-
- ui_split( panel, k_ui_axis_h, 8, 0, title, panel );
- ui_text( panel,
- "Sam Lantinga - SDL2 - libsdl.org\n"
- "Hunter WB - Anyascii\n"
- "David Herberth - GLAD\n"
- "Dominic Szablewski - QOI - qoiformat.org\n"
- "Sean Barrett - stb_image,stb_vorbis,stb_include\n"
- "Khronos Group - OpenGL\n"
- , 1, k_ui_align_left, 0 );
- return;
- }
-
- glEnable( GL_DEPTH_TEST );
- glDisable( GL_BLEND );
-
- f32 rate = vg.time_frame_delta * 12.0f;
-
- if( menu.cam ){
- camera target;
-
- target.fov = menu.cam->fov;
- v3_copy( menu.cam->transform.co, target.pos );
-
- v3f v0;
- mdl_transform_vector( &menu.cam->transform, (v3f){0.0f,-1.0f,0.0f}, v0 );
- player_vector_angles( target.angles, v0, 1.0f, 0.0f );
-
- camera_lerp( &menu.view, &target, rate, &menu.view );
-
- menu.view.farz = 150.0f;
- menu.view.nearz = 0.01f;
-
- camera_update_transform( &menu.view );
- camera_update_view( &menu.view );
- camera_update_projection( &menu.view );
- camera_finalize( &menu.view );
- }
- else return;
-
- shader_model_menu_use();
- shader_model_menu_uTexMain( 1 );
- glActiveTexture( GL_TEXTURE1 );
- glBindTexture( GL_TEXTURE_2D, menu.texture );
- shader_model_menu_uPv( menu.view.mtx.pv );
- shader_model_menu_uPvmPrev( menu.view.mtx_prev.pv );
-
- mesh_bind( &menu.mesh );
-
- v4f white, blue;
-
- ui_hex_to_norm( ui_colour( k_ui_fg ), white );
- ui_hex_to_norm( ui_colour( k_ui_orange+k_ui_brighter ), blue );
-
- for( u32 i=0; i<mdl_arrcount(&menu.items); i++ ){
- ent_menuitem *item = mdl_arritm( &menu.items, i );
-
- if( item->type == k_ent_menuitem_type_page ) continue;
- if( !(item->groups & (0x1 << menu.page)) ) continue;
-
- int selected = 0;
-
- if( menu.loc ){
- if( menu.loc->type == k_ent_menuitem_type_slider ){
- u32 subid = menu.loc->slider.id_handle;
- if( item == mdl_arritm( &menu.items, mdl_entity_id_id(subid) ))
- selected = 1;
- }
- else{
- if( item == menu.loc )
- selected = 1;
- }
- }
-
- item->factive = vg_lerpf( item->factive, selected, rate );
- v4f colour;
- v4_lerp( white, blue, item->factive, colour );
- shader_model_menu_uColour( colour );
-
- f32 scale = 1.0f+item->factive*0.1f;
-
- m4x3f mmdl;
- mdl_transform transform = item->transform;
- v3_muls( transform.s, scale, transform.s );
- mdl_transform_m4x3( &transform, mmdl );
-
- if( item->type == k_ent_menuitem_type_toggle && item->pi32 ){
- u32 subid = mdl_entity_id_id( item->checkmark.id_check );
- ent_menuitem *subitem = mdl_arritm( &menu.items, subid );
-
- v3_muladds( item->transform.co, item->checkmark.offset, scale,
- subitem->transform.co );
-
- subitem->fvisible = vg_lerpf( subitem->fvisible, *item->pi32, rate );
- v3_fill( subitem->transform.s, subitem->fvisible );
- }
- else if( item->type == k_ent_menuitem_type_slider && item->pf32 ){
- u32 il = mdl_entity_id_id( item->slider.id_min ),
- ir = mdl_entity_id_id( item->slider.id_max ),
- ih = mdl_entity_id_id( item->slider.id_handle );
- ent_marker *ml = mdl_arritm( &menu.markers, il ),
- *mr = mdl_arritm( &menu.markers, ir );
- ent_menuitem *handle = mdl_arritm( &menu.items, ih );
-
- v3_lerp( ml->transform.co, mr->transform.co, *item->pf32,
- handle->transform.co );
- }
-
- shader_model_menu_uMdl( mmdl );
-
- for( u32 j=0; j<item->submesh_count; j++ ){
- u32 index = item->submesh_start + j;
- mdl_draw_submesh( mdl_arritm( &menu.model.submeshs, index ));
- }
- }
-}
-
-#endif /* MENU_H */