* =============================================================================
*
* Copyright . . . -----, ,----- ,---. .---.
- * 2021-2023 |\ /| | / | | | | /|
+ * 2021-2024 |\ /| | / | | | | /|
* | \ / | +-- / +----- +---' | / |
* | \ / | | / | | \ | / |
* | \/ | | / | | \ | / |
* =============================================================================
*/
-#define SR_NETWORKED
-#define VG_AUDIO_FORCE_COMPRESSED
-#define SDL_MAIN_HANDLED
-
-#ifndef VG_RELEASE
- #define VG_DEVWINDOW
-#endif
+#define SR_ALLOW_REWIND_HUB
/*
* system headers
#include "steam.h"
#include "render.h"
#include "audio.h"
+#include "vg/vg_opt.h"
#include "world.h"
#include "entity.c"
#include "workshop.c"
#include "addon.c"
-#include "highscores.c"
#include "save.c"
#include "world_map.c"
#include "network.c"
#include "particle.c"
#include "player_effects.c"
#include "freecam.c"
+#include "testing.c"
+#include "trail.h"
+#include "trail.c"
static int k_tools_mode = 0;
return 0;
}
-static void vg_launch_opt(void){
+void vg_launch_opt(void)
+{
const char *arg;
if( vg_long_opt( "noauth" ) ){
network_client.auth_mode = eServerModeNoAuthentication;
}
}
-static void vg_preload(void){
+void vg_preload(void)
+{
vg_info(" Copyright . . . -----, ,----- ,---. .---. \n" );
vg_info(" 2021-2023 |\\ /| | / | | | | /| \n" );
vg_info(" | \\ / | +-- / +----- +---' | / | \n" );
vg_msg kvsav;
vg_msg_init( &kvsav, sav.buf, sizeof(sav.buf) );
- skaterift.achievements |= vg_msg_getkvu32( &kvsav, "ach", 0 );
+
+ u32 ach;
+ vg_msg_getkvintg( &kvsav, "ach", k_vg_msg_u32, &ach );
+ skaterift.achievements |= ach;
u32 board_reg_id = 0,
player_reg_id = 0;
replay_clear( &skaterift.replay );
particle_alloc( &particles_grind, 300 );
+ particle_alloc( &particles_env, 200 );
player_load_animation_reference( "models/ch_none.mdl" );
player_model_load( &localplayer.fallback_model, "models/ch_none.mdl" );
player_board_load( &localplayer.fallback_board, "models/board_none.mdl" );
}
-static void vg_load(void){
+void vg_load(void)
+{
if( k_tools_mode ){
vg_async_call( async_call_ready, NULL, 0 );
return;
}
+ vg_audio.always_keep_compressed = 1;
+
vg_console_reg_cmd( "load_world", skaterift_load_world_command, NULL );
vg_console_reg_cmd( "switch_active_instance",
skaterift_switch_instance_cmd, NULL );
vg_loader_step( addon_system_init, NULL );
vg_loader_step( workshop_init, NULL );
vg_loader_step( skateshop_init, NULL );
+ vg_loader_step( ent_tornado_init, NULL );
+ vg_loader_step( testing_init, NULL );
+ vg_loader_step( trail_init, NULL );
+ vg_loader_step( particle_init, NULL );
vg_loader_step( skaterift_load_player_content, NULL );
* UPDATE LOOP
* ---------------------------------------------------------------------------*/
-static void vg_pre_update(void){
+void vg_pre_update(void)
+{
skaterift_preupdate_inputs();
if( k_tools_mode ) return;
world_map_pre_update();
}
-static void vg_fixed_update(void){
+void vg_fixed_update(void)
+{
if( k_tools_mode ) return;
if( skaterift.op == k_async_op_clientloading ) return;
world_routes_fixedupdate( world_current_instance() );
player__update();
vehicle_update_fixed();
+ testing_update();
}
-static void vg_post_update(void){
+void vg_post_update(void)
+{
if( k_tools_mode ) return;
if( skaterift.op == k_async_op_clientloading ) return;
* RENDERING
* ---------------------------------------------------------------------------*/
-static void vg_framebuffer_resize( int w, int h ){
+void vg_framebuffer_resize( int w, int h ){
render_fb_resize();
}
//particle_system_debug( &particles_grind );
particle_system_prerender( &particles_grind );
particle_system_render( &particles_grind, &skaterift.cam );
+
+ ent_tornado_pre_update();
+ particle_system_update( &particles_env, vg.time_delta );
+ particle_system_prerender( &particles_env );
+ particle_system_render( &particles_env, &skaterift.cam );
+
+ player_glide_render_effects( &skaterift.cam );
/*
* render transition
skaterift_replay_post_render();
}
-static void vg_render(void){
+void vg_render(void)
+{
if( k_tools_mode ){
glBindFramebuffer( GL_FRAMEBUFFER, 0 );
glViewport( 0,0, vg.window_x, vg.window_y );
}
if( skaterift.op == k_async_op_clientloading ){
- _vg_loader_render();
+ vg_loader_render();
return;
}
gui_draw();
}
-static void vg_gui(void){
+void vg_gui(void)
+{
if( skaterift.op == k_async_op_clientloading ) return;
+ if( k_tools_mode ){
+ ui_rect null;
+ ui_rect screen = { 0, 0, vg.window_x, vg.window_y };
+ ui_rect panel = { 0, 0, 1000, 700 };
+ ui_rect_center( screen, panel );
+ vg_ui.wants_mouse = 1;
+
+ ui_fill( panel, ui_colour( k_ui_bg+1 ) );
+ ui_outline( panel, 1, ui_colour( k_ui_bg+7 ), 0 );
+
+ ui_rect_pad( panel, (ui_px[2]){ 8, 8 } );
+
+ return;
+ }
+
+ if( k_light_editor )
+ imgui_world_light_edit( world_current_instance() );
+
vg_ui.tex_bg = gpipeline.fb_main->attachments[0].id;
render_fb_inverse_ratio( gpipeline.fb_main, vg_ui.bg_inverse_ratio );