force compression
[carveJwlIkooP6JGAAIwe30JlM.git] / skaterift.c
index c7e2d42f0e57e0632e03f023e55b58f27087959a..353f544c0844e3c5a19c24ce998e2c1edf2e00ed 100644 (file)
  * =============================================================================
  */
 
-#if 1
-
 #define SR_NETWORKED
-#define SR_USE_LOCALHOST
+#define VG_AUDIO_FORCE_COMPRESSED
 
 #ifndef VG_RELEASE
  #define VG_DEVWINDOW
 #include "addon.c"
 #include "highscores.c"
 #include "save.c"
-#include "respawn.c"
+#include "world_map.c"
 #include "network.c"
 #include "player_remote.c"
 #include "vg/vg_audio_dsp.h"
 #include "world_routes_ui.c"
 #include "particle.c"
 #include "player_effects.c"
+#include "freecam.c"
 
 static int k_tools_mode = 0;
 
@@ -97,6 +96,12 @@ vg_info("            |   \\/   | |        /     |      |    \\ | /   | \n" );
 vg_info("            '        ' '--' [] '----- '----- '     ' '---'  " 
         "SOFTWARE\n" );
 
+   /* please forgive me! */
+   u32 sz; char *drm;
+   if( (drm = vg_file_read_text( vg_mem.scratch, "DRM", &sz )) )
+      if( !strcmp(drm, "blibby!") )
+         skaterift.demo_mode = 0;
+
    vg_loader_step( remote_players_init, NULL );
 
    if( k_tools_mode )
@@ -107,13 +112,6 @@ vg_info("            '        ' '--' [] '----- '----- '     ' '---'  "
    vg_loader_step( network_init, network_end );
 }
 
-static void load_playermodels(void){
-   /* FIXME: hack */
-   shader_model_character_view_register();
-   shader_model_board_view_register();
-   shader_model_entity_register();
-}
-
 static void async_skaterift_player_start( void *payload, u32 size ){
    world_switch_instance(0);
 }
@@ -175,6 +173,8 @@ static void vg_load(void){
    vg_console_reg_cmd( "load_world", skaterift_load_world_command, NULL );
    vg_console_reg_cmd( "switch_active_instance", 
                         skaterift_switch_instance_cmd, NULL );
+   vg_console_reg_cmd( "fc", freecam_cmd, NULL );
+   vg_console_reg_var( "immobile", &localplayer.immobile, k_var_dtype_i32, 0 );
 
    vg_loader_step( render_init, NULL );
    vg_loader_step( menu_init, NULL );
@@ -190,9 +190,6 @@ static void vg_load(void){
    vg_loader_step( addon_system_init, NULL );
    vg_loader_step( workshop_init, NULL );
    vg_loader_step( skateshop_init, NULL );
-   
-   /* ----------------- */
-   vg_loader_step( load_playermodels, NULL );
   
    /* player setup */
    u32 bytes = 1024*1024*10;
@@ -288,7 +285,7 @@ static void vg_pre_update(void){
    /* time rate */
    f32 target = 1;
    if( skaterift.activity & (k_skaterift_replay|k_skaterift_menu|
-                             k_skaterift_respawning) ){
+                             k_skaterift_world_map) ){
       target = 0;
    }
 
@@ -305,7 +302,7 @@ static void vg_pre_update(void){
 
    world_update( world_current_instance(), localplayer.rb.co );
    audio_ambient_sprites_update( world_current_instance(), localplayer.rb.co );
-   respawn_chooser_pre_update();
+   world_map_pre_update();
 }
 
 static void vg_fixed_update(void){
@@ -457,7 +454,7 @@ static void render_scene(void){
       }
    }
 
-   if( skaterift.activity == k_skaterift_respawning ){
+   if( skaterift.activity == k_skaterift_world_map ){
       world_instance *world = world_current_instance();
       glDrawBuffers( 1, (GLenum[]){ GL_COLOR_ATTACHMENT0 } );
       
@@ -480,7 +477,7 @@ static void render_scene(void){
       m4x3f identity;
       m4x3_identity( identity );
       render_world_override( world, world, identity, &skaterift.cam, 
-                             respawn_chooser.spawn, 
+                             world_map.spawn, 
                              (v4f){world->tar_min, world->tar_max, 1.0f, 0.0f});
       render_world_routes( world, world, identity, &skaterift.cam, 0, 1 );
       return;
@@ -489,11 +486,6 @@ static void render_scene(void){
    world_instance *view_world = get_view_world();
    render_world( view_world, &skaterift.cam, 0, 0, 1, 1 );
 
-#if 0
-   particle_spawn( &particles_grind, localplayer.rb.co, 
-                  (v3f){vg_randf64()*2.0f,vg_randf64()*3.0f,vg_randf64()*2.0f}, 
-                  vg_randf64(), 0xff0000ff );
-#endif
    particle_system_update( &particles_grind, vg.time_delta );
    //particle_system_debug( &particles_grind );
    particle_system_prerender( &particles_grind );
@@ -540,15 +532,23 @@ static void skaterift_composite_maincamera(void){
    camera_lerp( &localplayer.cam, &world_static.focus_cam,
                 vg_smoothstepf(world_static.focus_strength), &skaterift.cam );
 
-   if( skaterift.activity == k_skaterift_replay ){
-      skaterift_get_replay_camera( &skaterift.cam );
+   if( skaterift.freecam ){
+      freecam_preupdate();
+      v3_copy( skaterift.replay_freecam.pos, skaterift.cam.pos );
+      v3_copy( skaterift.replay_freecam.angles, skaterift.cam.angles );
+      skaterift.cam.fov = skaterift.replay_freecam.fov;
+   }
+   else {
+      if( skaterift.activity == k_skaterift_replay ){
+         replay_get_camera( &skaterift.replay, &skaterift.cam );
+      }
    }
 
    skaterift.cam.nearz = 0.1f;
    skaterift.cam.farz  = 2100.0f;
 
-   if( skaterift.activity == k_skaterift_respawning ){
-      camera_copy( &respawn_chooser.cam, &skaterift.cam );
+   if( skaterift.activity == k_skaterift_world_map ){
+      camera_copy( &world_map.cam, &skaterift.cam );
       skaterift.cam.nearz = 4.0f;
       skaterift.cam.farz = 3100.0f;
    }
@@ -559,12 +559,9 @@ static void skaterift_composite_maincamera(void){
       global_miniworld.t += s * dt;
 
       if( (global_miniworld.t > 1.0f) || (global_miniworld.t < 0.0f) ){
-         /* TODO: maybe next frame! */
          global_miniworld.t = vg_clampf( global_miniworld.t, 0.0f, 1.0f );
          global_miniworld.transition = 0;
       }
-      else {
-      }
    }
 
    camera_update_transform( &skaterift.cam );
@@ -587,7 +584,7 @@ static void render_main_game(void){
    skaterift_composite_maincamera();
 
    /* --------------------------------------------------------------------- */
-   if( skaterift.activity != k_skaterift_respawning ){
+   if( skaterift.activity != k_skaterift_world_map ){
       world_instance *world = world_current_instance();
       render_world_cubemaps( world );
 
@@ -614,7 +611,7 @@ static void render_main_game(void){
 
    /* continue with variable rate */
    if( !global_miniworld.transition && 
-         (skaterift.activity != k_skaterift_respawning) ){
+         (skaterift.activity != k_skaterift_world_map) ){
       render_fb_bind( gpipeline.fb_main, 1 );
       render_world_gates( get_view_world(), &skaterift.cam );
    }
@@ -677,7 +674,7 @@ static void vg_gui(void){
    render_view_framebuffer_ui();
    remote_player_network_imgui( vg.pv );
 
-   if( skaterift.activity == k_skaterift_respawning ){
+   if( skaterift.activity == k_skaterift_world_map ){
       remote_players_imgui_world( world_current_instance(), vg.pv, 2000.0f, 0 );
       remote_players_imgui_lobby();
    }
@@ -686,10 +683,3 @@ static void vg_gui(void){
       remote_players_imgui_world( world_current_instance(), vg.pv, 100.0f, 1 );
    }
 }
-
-
-#else
-
-#include "skaterift_imgui_dev.c"
-
-#endif