maths api changes
[carveJwlIkooP6JGAAIwe30JlM.git] / skaterift.c
index 54e5feb5d202c3f3849be04f1a67cec2a42a4dbb..9409bf33b8d5aac08b06b1d054ce2e104f590f38 100644 (file)
@@ -11,6 +11,8 @@
  * =============================================================================
  */
 
+#if 1
+
 #define SR_NETWORKED
 #define VG_DEVWINDOW
 #include "common.h"
 #include "font.h"
 #include "player.h"
 
+#include "entity.c"
+#include "workshop.c"
+
 VG_STATIC struct player_avatar localplayer_avatar;
 VG_STATIC struct player_model  localplayer_models[3];
-VG_STATIC struct player_board  localplayer_boards[1];
 VG_STATIC int skaterift_status = 0;
 
 #include "network.h"
 #include "menu.h"
 #include "vehicle.h"
 
-#define DEV_AARON
-#ifdef DEV_AARON
-static rb_object aaron={
-   .type=k_rb_shape_box,
-   .rb.bbx = {{ -2.0f, -1.0f, -1.0f }, { 2.0f, 1.0f, 1.0f }}
-};
-#endif
-
 int main( int argc, char *argv[] )
 {
    vg_mem.use_libc_malloc = 0;
@@ -77,14 +73,6 @@ vg_info("            '        ' '--' [] '----- '----- '     ' '---'  "
    steam_init();
    vg_loader_step( NULL, steam_end );
    vg_loader_step( network_init, network_end );
-
-#ifdef DEV_AARON
-   q_identity( aaron.rb.q );
-   v3_zero( aaron.rb.w );
-   v3_zero( aaron.rb.co );
-   v3_zero( aaron.rb.v );
-   rb_init_object( &aaron );
-#endif
 }
 
 VG_STATIC void load_playermodels(void)
@@ -93,11 +81,16 @@ VG_STATIC void load_playermodels(void)
    player_model_load( &localplayer_models[1], "models/ch_outlaw.mdl" );
    player_model_load( &localplayer_models[2], "models/ch_jordan.mdl" );
    
-   player_board_load( &localplayer_boards[0], "models/board_fish.mdl" );
+   /* load default board */
+#if 0
+   player_board_load( &localplayer_boards[0], 
+                      "models/boards/skaterift_fish.mdl" );
+#endif
 
    /* FIXME: hack */
    shader_model_character_view_register();
    shader_model_board_view_register();
+   shader_model_entity_register();
 }
 
 void temp_update_playermodel(void){
@@ -124,6 +117,8 @@ VG_STATIC void vg_load(void)
 
    vg_loader_step( player_init, NULL );
    vg_loader_step( player_ragdoll_init, NULL );
+   vg_loader_step( workshop_init, NULL );
+   vg_loader_step( skateshop_init, NULL );
    
    /* ----------------- */
    vg_loader_step( load_playermodels, NULL );
@@ -133,7 +128,7 @@ VG_STATIC void vg_load(void)
    player_avatar_load( &localplayer_avatar, "models/ch_new.mdl" );
    player__use_avatar( &localplayer, &localplayer_avatar );
    player__use_model( &localplayer, &localplayer_models[cl_playermdl_id] );
-   player__use_board( &localplayer, &localplayer_boards[0] );
+   //localplayer.board = &localplayer_boards[0];
    player__bind( &localplayer );
 
    /* --------------------- */
@@ -142,26 +137,15 @@ VG_STATIC void vg_load(void)
    vg_loader_step( audio_init, audio_free );
 
    /* 'systems' are completely loaded now */
-
    /* load home world */
 
-#if 1
    world_load( 0, "maps/mp_spawn.mdl" );
-#else
-   world_load( 0, "maps/mp_mtzero.mdl" );
-#endif
-
-#if 0
-   world_load( &world_global.worlds[1], "maps/mp_gridmap.mdl" );
-   world_link_nonlocal_gates( 0, 1 );
-   world_load( &world_global.worlds[2], "maps/mp_mtzero.mdl" );
-   world_link_nonlocal_gates( 0, 2 );
-#endif
+   world_load( 1, "maps/mp_mtzero.mdl" );
 
    vg_console_load_autos();
+   menu_link();
 
-   vg_async_item *call = vg_async_alloc(0);
-   vg_async_dispatch( call, async_skaterift_complete );
+   vg_async_call( async_skaterift_complete, NULL, 0 );
 }
 
 VG_STATIC void draw_origin_axis(void)
@@ -175,14 +159,18 @@ VG_STATIC void vg_update(void)
 {
    steam_update();
 
+   skaterift_preupdate_inputs();
+
    if( skaterift_status == 1 ){
       draw_origin_axis();
       network_update();
       
       player__pre_update( &localplayer );
+      global_skateshop_preupdate();
 
       world_update( get_active_world(), localplayer.rb.co );
       audio_ambient_sprites_update( get_active_world(), localplayer.rb.co );
+      //gui_helper_action( localplayer.input_use, "\x7f Hello \x1f""A \x1e\x84" );
    }
 }
 
@@ -193,29 +181,6 @@ VG_STATIC void vg_update_fixed(void)
 
       player__update( &localplayer );
       vehicle_update_fixed();
-
-#ifdef DEV_AARON
-      world_instance *world = get_active_world();
-      rb_solver_reset();
-      rb_ct *buf = rb_global_buffer();
-
-      int l = rb_box__scene( aaron.rb.to_world, aaron.rb.bbx,
-                             NULL, &world->rb_geo.inf.scene, buf );
-      for( int j=0; j<l; j++ ){
-         buf[j].rba = &aaron.rb;
-         buf[j].rbb = &world->rb_geo.rb;
-      }
-      rb_contact_count += l;
-      rb_presolve_contacts( rb_contact_buffer, rb_contact_count );
-
-      for( int j=0; j<8; j++ ){
-         rb_solve_contacts( rb_contact_buffer, rb_contact_count );
-      }
-
-      rb_iter( &aaron.rb );
-      rb_update_transform( &aaron.rb );
-#endif
-
    }
 }
 
@@ -245,22 +210,8 @@ VG_STATIC void vg_update_post(void)
       v3_copy( localplayer.rb.v, vg_audio.external_lister_velocity );
       audio_unlock();
 
-      menu_update();
+      vg.time_rate = 1.0f-menu.factive;
       vehicle_update_post();
-
-#ifdef DEV_AARON
-      SDL_Scancode sc = SDL_GetScancodeFromKey( SDLK_q );
-      if( vg_input.sdl_keys[sc] ){
-         m4x3_mulv( main_camera.transform, (v3f){0.0f,0.0f,-3.0f}, 
-                    aaron.rb.co );
-
-         v3_zero( aaron.rb.v );
-         v3_zero( aaron.rb.w );
-         rb_update_transform( &aaron.rb );
-      }
-
-      rb_object_debug( &aaron, VG__PINK );
-#endif
    }
 }
 
@@ -291,7 +242,7 @@ VG_STATIC void present_view_with_post_processing(void)
       shader_blitblur_uInverseRatio( inverse );
 
       v2f menu_blurring;
-      v2_muls( (v2f){ 0.04f, 0.001f }, menu_opacity, menu_blurring );
+      v2_muls( (v2f){ 0.04f, 0.001f }, menu.factive, menu_blurring );
       shader_blitblur_uOverrideDir( menu_blurring );
 
       render_fb_bind_texture( gpipeline.fb_main, 0, 0 );
@@ -365,34 +316,11 @@ VG_STATIC void render_scene_gate_subview(void)
 
 VG_STATIC void render_main_game(void)
 {
-#if 0
-   static float fov = 60.0f;
-   float fov_target = vg_lerpf( 90.0f, 110.0f, cl_fov );
-
-   if( player.controller == k_player_controller_skate )
-      fov_target = vg_lerpf( 97.0f, 135.0f, cl_fov );
-
-   if( cl_menu )
-      fov_target = menu_fov_target;
-   fov = vg_lerpf( fov, fov_target, vg.frame_delta * 2.0f );
-   fov = freecam? 60.0f: fov;
-
-   main_camera.fov   = fov;
-#endif
-
    player__pre_render( &localplayer );
+   main_camera.fov = localplayer.cam.fov;
+   v3_copy( localplayer.cam.pos, main_camera.pos );
+   v3_copy( localplayer.cam.angles, main_camera.angles );
 
-   v3_lerp( localplayer.cam.pos, menu_camera_pos, menu_opacity, 
-            main_camera.pos );
-   main_camera.angles[0] = 
-      vg_alerpf(  localplayer.cam.angles[0], menu_camera_angles[0], 
-                  menu_opacity );
-   main_camera.angles[1] = 
-      vg_lerpf ( localplayer.cam.angles[1], menu_camera_angles[1], 
-                 menu_opacity );
-
-   main_camera.fov = vg_lerpf( localplayer.cam.fov, menu_smooth_fov,
-                               menu_opacity );
    main_camera.nearz = 0.1f;
    main_camera.farz  = 2100.0f;
 
@@ -415,20 +343,12 @@ VG_STATIC void render_main_game(void)
 
    render_scene();
 
-   if( cl_menu ) {
-      //glClear( GL_DEPTH_BUFFER_BIT );
-      menu_render_bg();
-      glEnable( GL_DEPTH_TEST );
-   }
+   glEnable( GL_DEPTH_TEST );
 
    render_player_transparent();
    render_scene_gate_subview();
 
    present_view_with_post_processing();
-
-   if( cl_menu )
-      menu_render_fg( &main_camera );
-
    /* =========== End Frame =========== */
 }
 
@@ -443,6 +363,7 @@ VG_STATIC void vg_render(void)
 
    glViewport( 0,0, vg.window_x, vg.window_y );
    glDisable( GL_DEPTH_TEST );
+   glDisable( GL_BLEND );
 
    glClearColor( 1.0f, 0.0f, 0.0f, 0.0f );
    glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT );
@@ -456,19 +377,32 @@ VG_STATIC void vg_render(void)
    glDisable(GL_DEPTH_TEST);
    vg_lines_drawall();
    glViewport( 0,0, vg.window_x, vg.window_y );
+   gui_draw();
 }
 
-VG_STATIC void vg_ui(void)
+VG_STATIC void vg_gui(void)
 {
    if( skaterift_status == 0 ){
       return;
    }
 
+   menu_update();
+   if( menu.active ){
+      glClear( GL_DEPTH_BUFFER_BIT );
+      menu_render();
+   }
+
 #if 0
    player__im_gui( &localplayer );
 #endif
    world_instance *world = get_active_world();
-   menu_crap_ui();
-   
+
+   workshop_form_gui();
    render_view_framebuffer_ui();
 }
+
+#else
+
+#include "skaterift_imgui_dev.c"
+
+#endif