X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=skaterift.c;h=89ee898d71691479f54fa25d3ef57e8393f7e153;hb=9695bd6aa2ca31da9dbcde29eb5d082489c4decc;hp=dd082041aa67164384e9e02273bd2db7d1ab6c47;hpb=304647a7672165dd35ffe54884ed9aedcc9bf363;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/skaterift.c b/skaterift.c index dd08204..89ee898 100644 --- a/skaterift.c +++ b/skaterift.c @@ -13,6 +13,10 @@ #define SR_ALLOW_REWIND_HUB +#ifdef _WIN32 + #include +#endif + /* * system headers * --------------------- */ @@ -41,6 +45,7 @@ #include "ent_miniworld.h" #include "ent_skateshop.h" #include "ent_npc.h" +#include "ent_camera.h" #include "world_map.h" #include "gui.h" #include "workshop.h" @@ -56,7 +61,9 @@ struct skaterift_globals skaterift = static int k_tools_mode = 0; -int main( int argc, char *argv[] ){ +int main( int argc, char *argv[] ) +{ + network_set_host( "skaterift.com", NULL ); vg_mem.use_libc_malloc = 0; vg_set_mem_quota( 160*1024*1024 ); vg_enter( argc, argv, "Voyager Game Engine" ); @@ -70,9 +77,9 @@ void vg_launch_opt(void) network_client.auth_mode = eServerModeNoAuthentication; } - if( (arg = vg_long_opt_arg( "server" )) ){ - vg_strncpy( arg, network_client.server_adress, 64, - k_strncpy_overflow_fatal ); + if( (arg = vg_long_opt_arg( "server" )) ) + { + network_set_host( arg, NULL ); } if( vg_long_opt( "tools" ) ){ @@ -185,8 +192,7 @@ 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 ); + skaterift_mount_world_unloadable( "maps/mp_line1", ADDON_REG_PREMIUM ); world_static.load_state = k_world_loader_load; @@ -256,7 +262,6 @@ void vg_load(void) vg_async_stall(); vg_console_load_autos(); - menu_link(); addon_mount_content_folder( k_addon_type_player, "playermodels", ".mdl" ); @@ -305,10 +310,19 @@ void vg_pre_update(void) /* time rate */ f32 target = 1; - if( skaterift.activity & (k_skaterift_replay|k_skaterift_menu| - k_skaterift_world_map) ) - { + if( skaterift.activity & k_skaterift_replay ) target = 0; + + v3f listen_co; + v3_copy( localplayer.rb.co, listen_co ); + + if( skaterift.activity & k_skaterift_menu ) + { + if( menu.bg_cam ) + { + v3_copy( menu.bg_cam->transform.co, listen_co ); + } + else target = 0; } vg_slewf( &skaterift.time_rate, target, vg.time_frame_delta * (1.0f/0.3f) ); @@ -317,13 +331,18 @@ void vg_pre_update(void) /* TODO: how can we compress this? */ ent_miniworld_preupdate(); world_entity_focus_preupdate(); - player__pre_update(); + + if( skaterift.activity != k_skaterift_menu ) + { + player__pre_update(); + } + skaterift_replay_pre_update(); remote_sfx_pre_update(); skateshop_world_preupdate( world_current_instance() ); world_update( world_current_instance(), localplayer.rb.co ); - audio_ambient_sprites_update( world_current_instance(), localplayer.rb.co ); + audio_ambient_sprites_update( world_current_instance(), listen_co ); world_map_pre_update(); } @@ -416,7 +435,7 @@ static void present_view_with_post_processing(void){ shader_blitblur_uGlitchStrength( glitch_strength ); v2f override; - if( skaterift.activity == k_skaterift_menu ) + if( (skaterift.activity == k_skaterift_menu) && menu.bg_blur ) v2_muls( (v2f){ 0.04f, 0.001f }, 1.0f-skaterift.time_rate, override ); else v2_zero( override ); @@ -435,7 +454,14 @@ static void present_view_with_post_processing(void){ render_fsquad(); } -static void render_player_transparent(void){ +static void render_player_transparent(void) +{ + if( (menu.page == k_menu_page_main) && + (menu.main_index == k_menu_main_guide) ) + { + return; + } + static vg_camera small_cam; /* DOES NOT NEED TO BE STATIC BUT MINGW SAIS OTHERWISE */ @@ -453,7 +479,15 @@ static void render_player_transparent(void){ player__render( &small_cam ); } -static world_instance *get_view_world(void){ +static world_instance *get_view_world(void) +{ + if( (skaterift.activity & k_skaterift_menu) && + (menu.page == k_menu_page_main) && + (menu.main_index == k_menu_main_guide) ) + { + return &world_static.instances[0]; + } + world_instance *view_world = world_current_instance(); if( localplayer.gate_waiting && (localplayer.gate_waiting->flags & k_ent_gate_nonlocal) ){ @@ -463,17 +497,21 @@ static world_instance *get_view_world(void){ return view_world; } -static void render_scene(void){ +static void render_scene(void) +{ /* Draw world */ glEnable( GL_DEPTH_TEST ); - for( u32 i=0; itar_min, world->tar_max, 1.0f, 0.0f}); render_world_routes( world, world, identity, &skaterift.cam, 0, 1 ); return; @@ -577,7 +615,13 @@ static void skaterift_composite_maincamera(void) skaterift.cam.nearz = 0.1f; skaterift.cam.farz = 2100.0f; - if( skaterift.activity == k_skaterift_world_map ){ + if( (skaterift.activity == k_skaterift_menu) && menu.bg_cam ) + { + ent_camera_unpack( menu.bg_cam, &skaterift.cam ); + } + + if( menu_viewing_map() ) + { vg_camera_copy( &world_map.cam, &skaterift.cam ); skaterift.cam.nearz = 4.0f; skaterift.cam.farz = 3100.0f; @@ -600,8 +644,10 @@ static void skaterift_composite_maincamera(void) vg_camera_finalize( &skaterift.cam ); } -static void render_main_game(void){ - if( skaterift.activity == k_skaterift_replay ){ +static void render_main_game(void) +{ + if( skaterift.activity == k_skaterift_replay ) + { player__animate_from_replay( &player_replay.local ); } else{ @@ -616,12 +662,13 @@ static void render_main_game(void){ skaterift_composite_maincamera(); /* --------------------------------------------------------------------- */ - if( skaterift.activity != k_skaterift_world_map ){ + if( !menu_viewing_map() ) + { world_instance *world = world_current_instance(); render_world_cubemaps( world ); ent_gate *nlg = world->rendering_gate; - if( nlg && nlg->flags & k_ent_gate_nonlocal ) + if( nlg && (nlg->flags & k_ent_gate_nonlocal) ) render_world_cubemaps( &world_static.instances[nlg->target] ); } @@ -642,8 +689,8 @@ static void render_main_game(void){ portals */ /* continue with variable rate */ - if( !global_miniworld.transition && - (skaterift.activity != k_skaterift_world_map) ){ + if( !global_miniworld.transition && !menu_viewing_map() ) + { render_fb_bind( gpipeline.fb_main, 1 ); render_world_gates( get_view_world(), &skaterift.cam ); } @@ -686,13 +733,16 @@ void vg_render(void) glDisable(GL_DEPTH_TEST); vg_lines_drawall(); glViewport( 0,0, vg.window_x, vg.window_y ); - gui_draw(); + + gui_render_icons(); } void vg_gui(void) { if( skaterift.op == k_async_op_clientloading ) return; + gui_draw(); + if( k_tools_mode ){ ui_rect null; ui_rect screen = { 0, 0, vg.window_x, vg.window_y }; @@ -714,12 +764,7 @@ void vg_gui(void) vg_ui.tex_bg = gpipeline.fb_main->attachments[0].id; render_fb_inverse_ratio( gpipeline.fb_main, vg_ui.bg_inverse_ratio ); - menu_update(); - if( skaterift.activity == k_skaterift_menu ){ - glClear( GL_DEPTH_BUFFER_BIT ); - menu_render(); - } - + menu_gui(); player__im_gui(); world_instance *world = world_current_instance(); @@ -729,11 +774,13 @@ void vg_gui(void) render_view_framebuffer_ui(); remote_player_network_imgui( vg.pv ); - if( skaterift.activity == k_skaterift_world_map ){ + if( menu_viewing_map() ) + { remote_players_imgui_world( world_current_instance(), vg.pv, 2000.0f, 0 ); remote_players_imgui_lobby(); } - else { + else + { remote_players_chat_imgui(); /* TODO: conditional */ remote_players_imgui_world( world_current_instance(), vg.pv, 100.0f, 1 ); } @@ -794,3 +841,4 @@ void vg_gui(void) #include "ent_npc.c" #include "model.c" #include "control_overlay.c" +#include "ent_camera.c"