X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=skaterift.c;h=dd082041aa67164384e9e02273bd2db7d1ab6c47;hb=304647a7672165dd35ffe54884ed9aedcc9bf363;hp=d295ccfd04bae45c092dc22d1ce078efda7072d7;hpb=1a194c3888293733939b2dd944251ae1b6c398ce;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/skaterift.c b/skaterift.c index d295ccf..dd08204 100644 --- a/skaterift.c +++ b/skaterift.c @@ -22,6 +22,7 @@ #include "render.h" #include "vg/vg_opt.h" #include "vg/vg_loader.h" +#include "vg/vg_io.h" #include "world.h" @@ -45,6 +46,7 @@ #include "workshop.h" #include "audio.h" #include "player_render.h" +#include "control_overlay.h" struct skaterift_globals skaterift = { @@ -116,8 +118,14 @@ static void async_skaterift_player_start( void *payload, u32 size ){ world_switch_instance(0); } -static void async_call_ready( void *payload, u32 size ){ +static void async_call_ready( void *payload, u32 size ) +{ skaterift.op = k_async_op_none; + + if( network_client.auto_connect ) + network_client.user_intent = k_server_intent_online; + + menu_at_begin(); } static void skaterift_restore_state(void) @@ -129,11 +137,11 @@ static void skaterift_restore_state(void) vg_msg_init( &kvsav, sav.buf, sizeof(sav.buf) ); u32 ach; - vg_msg_getkvintg( &kvsav, "ach", k_vg_msg_u32, &ach ); + vg_msg_getkvintg( &kvsav, "ach", k_vg_msg_u32, &ach, NULL ); skaterift.achievements |= ach; - u32 board_reg_id = 0, - player_reg_id = 0; + u32 board_reg_id = time(NULL) % addon_count( k_addon_type_board, 0 ), + player_reg_id = (time(NULL)+44) % addon_count( k_addon_type_player, 0 ); vg_msg_cursor orig = kvsav.cur; if( vg_msg_seekframe( &kvsav, "player" ) ){ @@ -177,6 +185,8 @@ static void skaterift_load_world_content(void){ ADDON_REG_MTZERO|ADDON_REG_PREMIUM ); skaterift_mount_world_unloadable( "maps/dev_tutorial", 0 ); skaterift_mount_world_unloadable( "maps/dev_flatworld", 0 ); + skaterift_mount_world_unloadable( "maps/mp_line1", + ADDON_REG_MTZERO|ADDON_REG_PREMIUM ); world_static.load_state = k_world_loader_load; @@ -187,12 +197,8 @@ static void skaterift_load_world_content(void){ skaterift_world_load_thread( &args ); } -static void skaterift_load_player_content(void){ - u32 bytes = 1024*1024*10; - player_replay.local.data = vg_linear_alloc( vg_mem.rtmemory, bytes ); - player_replay.local.size = bytes; - replay_clear( &player_replay.local ); - +static void skaterift_load_player_content(void) +{ particle_alloc( &particles_grind, 300 ); particle_alloc( &particles_env, 200 ); @@ -212,11 +218,11 @@ void vg_load(void) vg_audio.always_keep_compressed = 1; vg_console_reg_cmd( "load_world", skaterift_load_world_command, 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 ); + vg_loader_step( control_overlay_init, NULL ); vg_loader_step( world_init, NULL ); vg_loader_step( vehicle_init, NULL ); vg_loader_step( gui_init, NULL ); @@ -230,12 +236,13 @@ void vg_load(void) vg_loader_step( workshop_init, NULL ); vg_loader_step( skateshop_init, NULL ); vg_loader_step( ent_tornado_init, NULL ); + vg_loader_step( skaterift_replay_init, NULL ); vg_loader_step( skaterift_load_player_content, NULL ); /* --------------------- */ vg_bake_shaders(); - vg_loader_step( audio_init, audio_free ); + vg_loader_step( audio_init, NULL ); /* 'systems' are completely loaded now */ @@ -287,12 +294,13 @@ void vg_pre_update(void) if( k_tools_mode ) return; steam_update(); + skaterift_change_client_world_preupdate(); + if( skaterift.op == k_async_op_clientloading ) return; - if( world_static.load_state == k_world_loader_preload ) - skaterift_change_client_world_preupdate(); draw_origin_axis(); - skateshop_autostart_loading(); + addon_system_pre_update(); + skateshop_world_preview_preupdate(); network_update(); /* time rate */ @@ -546,19 +554,23 @@ static void render_scene(void){ render_world( holdout_world, &global_miniworld.cam, 1, 0, 1, 1 ); } -static void skaterift_composite_maincamera(void){ +static void skaterift_composite_maincamera(void) +{ vg_camera_lerp( &localplayer.cam, &world_static.focus_cam, vg_smoothstepf(world_static.focus_strength), &skaterift.cam ); - if( player_replay.freecam ){ - freecam_preupdate(); - v3_copy( player_replay.replay_freecam.pos, skaterift.cam.pos ); - v3_copy( player_replay.replay_freecam.angles, skaterift.cam.angles ); - skaterift.cam.fov = player_replay.replay_freecam.fov; - } - else { - if( skaterift.activity == k_skaterift_replay ){ - replay_get_camera( &player_replay.local, &skaterift.cam ); + if( skaterift.activity == k_skaterift_replay ) + { + if( player_replay.use_freecam ) + { + freecam_preupdate(); + v3_copy( player_replay.replay_freecam.pos, skaterift.cam.pos ); + v3_copy( player_replay.replay_freecam.angles, skaterift.cam.angles ); + skaterift.cam.fov = player_replay.replay_freecam.fov; + } + else + { + skaterift_get_replay_cam( &skaterift.cam ); } } @@ -639,6 +651,7 @@ static void render_main_game(void){ /* composite */ present_view_with_post_processing(); skaterift_replay_post_render(); + control_overlay_render(); } void vg_render(void) @@ -779,3 +792,5 @@ void vg_gui(void) #include "world_volumes.c" #include "world_water.c" #include "ent_npc.c" +#include "model.c" +#include "control_overlay.c"