boards and tht
authorhgn <hgodden00@gmail.com>
Wed, 31 May 2023 16:43:04 +0000 (17:43 +0100)
committerhgn <hgodden00@gmail.com>
Wed, 31 May 2023 16:43:04 +0000 (17:43 +0100)
22 files changed:
boards_src/skaterift_fract/addon.inf [new file with mode: 0644]
boards_src/skaterift_fract/board.mdl [new file with mode: 0644]
boards_src/skaterift_licco/addon.inf [new file with mode: 0644]
boards_src/skaterift_licco/board.mdl [new file with mode: 0644]
boards_src/skaterift_long/addon.inf [new file with mode: 0644]
boards_src/skaterift_long/board.mdl [new file with mode: 0644]
boards_src/skaterift_shark/addon.inf [new file with mode: 0644]
boards_src/skaterift_shark/board.mdl [new file with mode: 0644]
boards_src/skaterift_spiral/addon.inf [new file with mode: 0644]
boards_src/skaterift_spiral/board.mdl [new file with mode: 0644]
boards_src/skaterift_striped/addon.inf [new file with mode: 0644]
boards_src/skaterift_striped/board.mdl [new file with mode: 0644]
boards_src/test/addon.inf [deleted file]
boards_src/test/preview.jpg [deleted file]
boards_src/test/skaterift_fish.mdl [deleted file]
build.c
conf.h
ent_skateshop.c
maps_src/mp_mtzero/main.mdl
maps_src/mp_spawn/main.mdl
player_common.c
skaterift.c

diff --git a/boards_src/skaterift_fract/addon.inf b/boards_src/skaterift_fract/addon.inf
new file mode 100644 (file)
index 0000000..745e972
Binary files /dev/null and b/boards_src/skaterift_fract/addon.inf differ
diff --git a/boards_src/skaterift_fract/board.mdl b/boards_src/skaterift_fract/board.mdl
new file mode 100644 (file)
index 0000000..cd24ab9
Binary files /dev/null and b/boards_src/skaterift_fract/board.mdl differ
diff --git a/boards_src/skaterift_licco/addon.inf b/boards_src/skaterift_licco/addon.inf
new file mode 100644 (file)
index 0000000..f96a599
Binary files /dev/null and b/boards_src/skaterift_licco/addon.inf differ
diff --git a/boards_src/skaterift_licco/board.mdl b/boards_src/skaterift_licco/board.mdl
new file mode 100644 (file)
index 0000000..14c6f7a
Binary files /dev/null and b/boards_src/skaterift_licco/board.mdl differ
diff --git a/boards_src/skaterift_long/addon.inf b/boards_src/skaterift_long/addon.inf
new file mode 100644 (file)
index 0000000..4e00fd3
Binary files /dev/null and b/boards_src/skaterift_long/addon.inf differ
diff --git a/boards_src/skaterift_long/board.mdl b/boards_src/skaterift_long/board.mdl
new file mode 100644 (file)
index 0000000..81468f9
Binary files /dev/null and b/boards_src/skaterift_long/board.mdl differ
diff --git a/boards_src/skaterift_shark/addon.inf b/boards_src/skaterift_shark/addon.inf
new file mode 100644 (file)
index 0000000..f9be7a0
Binary files /dev/null and b/boards_src/skaterift_shark/addon.inf differ
diff --git a/boards_src/skaterift_shark/board.mdl b/boards_src/skaterift_shark/board.mdl
new file mode 100644 (file)
index 0000000..9213919
Binary files /dev/null and b/boards_src/skaterift_shark/board.mdl differ
diff --git a/boards_src/skaterift_spiral/addon.inf b/boards_src/skaterift_spiral/addon.inf
new file mode 100644 (file)
index 0000000..fd1733b
Binary files /dev/null and b/boards_src/skaterift_spiral/addon.inf differ
diff --git a/boards_src/skaterift_spiral/board.mdl b/boards_src/skaterift_spiral/board.mdl
new file mode 100644 (file)
index 0000000..28459a8
Binary files /dev/null and b/boards_src/skaterift_spiral/board.mdl differ
diff --git a/boards_src/skaterift_striped/addon.inf b/boards_src/skaterift_striped/addon.inf
new file mode 100644 (file)
index 0000000..40dd0bf
Binary files /dev/null and b/boards_src/skaterift_striped/addon.inf differ
diff --git a/boards_src/skaterift_striped/board.mdl b/boards_src/skaterift_striped/board.mdl
new file mode 100644 (file)
index 0000000..3283702
Binary files /dev/null and b/boards_src/skaterift_striped/board.mdl differ
diff --git a/boards_src/test/addon.inf b/boards_src/test/addon.inf
deleted file mode 100644 (file)
index 0b5ceb2..0000000
Binary files a/boards_src/test/addon.inf and /dev/null differ
diff --git a/boards_src/test/preview.jpg b/boards_src/test/preview.jpg
deleted file mode 100644 (file)
index 27c2667..0000000
Binary files a/boards_src/test/preview.jpg and /dev/null differ
diff --git a/boards_src/test/skaterift_fish.mdl b/boards_src/test/skaterift_fish.mdl
deleted file mode 100644 (file)
index f29acf1..0000000
Binary files a/boards_src/test/skaterift_fish.mdl and /dev/null differ
diff --git a/build.c b/build.c
index 6af9096e684cea05b8d19ca63bf45061f0000777..558299bd955045231c2d6e6e0ca7a740d76c5529 100644 (file)
--- a/build.c
+++ b/build.c
@@ -30,6 +30,18 @@ void build_server( enum compiler compiler )
    compiled_something = 1;
 }
 
+void write_msg( vg_msg *msg, const char *path ){
+   FILE *fp = fopen( path, "wb" );
+   if( !fp ){
+      vg_error( "Cannot open %s for writing.\n", path );
+      exit(0);
+   }
+
+   fwrite( msg->buf, msg->cur, 1, fp );
+   fclose( fp );
+   vg_success( "Written %s (%ub)\n", path, msg->cur );
+}
+
 void build_shaders(void);
 void build_game( enum compiler compiler )
 {
@@ -56,14 +68,72 @@ void build_game( enum compiler compiler )
 
    u8 descriptor_buf[ 512 ];
    vg_msg descriptor;
+
+   {
+   vg_msg_init( &descriptor, descriptor_buf, 512 );
+   vg_msg_frame( &descriptor, "workshop" );
+      vg_msg_wkvstr( &descriptor, "title", "Longboard" );
+      vg_msg_wkvstr( &descriptor, "author", "Skaterift" );
+      vg_msg_wkvuint(&descriptor, "type", u32 value=k_workshop_file_type_board);
+   vg_msg_end_frame( &descriptor );
+   vg_msg_wkvstr( &descriptor, "content", "board.mdl" );
+   write_msg( &descriptor, "boards_src/skaterift_long/addon.inf" );
+   }
+
+   {
+   vg_msg_init( &descriptor, descriptor_buf, 512 );
+   vg_msg_frame( &descriptor, "workshop" );
+      vg_msg_wkvstr( &descriptor, "title", "Fractal" );
+      vg_msg_wkvstr( &descriptor, "author", "Skaterift" );
+      vg_msg_wkvuint(&descriptor, "type", u32 value=k_workshop_file_type_board);
+   vg_msg_end_frame( &descriptor );
+   vg_msg_wkvstr( &descriptor, "content", "board.mdl" );
+   write_msg( &descriptor, "boards_src/skaterift_fract/addon.inf" );
+   }
+
+   {
+   vg_msg_init( &descriptor, descriptor_buf, 512 );
+   vg_msg_frame( &descriptor, "workshop" );
+      vg_msg_wkvstr( &descriptor, "title", "Striped" );
+      vg_msg_wkvstr( &descriptor, "author", "Skaterift" );
+      vg_msg_wkvuint(&descriptor, "type", u32 value=k_workshop_file_type_board);
+   vg_msg_end_frame( &descriptor );
+   vg_msg_wkvstr( &descriptor, "content", "board.mdl" );
+   write_msg( &descriptor, "boards_src/skaterift_striped/addon.inf" );
+   }
+
+   {
    vg_msg_init( &descriptor, descriptor_buf, 512 );
    vg_msg_frame( &descriptor, "workshop" );
-      vg_msg_wkvstr( &descriptor, "title", "Understate DIY Park" );
+      vg_msg_wkvstr( &descriptor, "title", "Licco" );
       vg_msg_wkvstr( &descriptor, "author", "Skaterift" );
-      vg_msg_wkvuint(&descriptor, "type", u32 value=k_workshop_file_type_world);
+      vg_msg_wkvuint(&descriptor, "type", u32 value=k_workshop_file_type_board);
    vg_msg_end_frame( &descriptor );
-   vg_msg_wkvstr( &descriptor, "location", "USA" );
-   vg_msg_wkvstr( &descriptor, "content", "main.mdl" );
+   vg_msg_wkvstr( &descriptor, "content", "board.mdl" );
+   write_msg( &descriptor, "boards_src/skaterift_licco/addon.inf" );
+   }
+
+   {
+   vg_msg_init( &descriptor, descriptor_buf, 512 );
+   vg_msg_frame( &descriptor, "workshop" );
+      vg_msg_wkvstr( &descriptor, "title", "Hypno" );
+      vg_msg_wkvstr( &descriptor, "author", "Skaterift" );
+      vg_msg_wkvuint(&descriptor, "type", u32 value=k_workshop_file_type_board);
+   vg_msg_end_frame( &descriptor );
+   vg_msg_wkvstr( &descriptor, "content", "board.mdl" );
+   write_msg( &descriptor, "boards_src/skaterift_spiral/addon.inf" );
+   }
+
+   {
+   vg_msg_init( &descriptor, descriptor_buf, 512 );
+   vg_msg_frame( &descriptor, "workshop" );
+      vg_msg_wkvstr( &descriptor, "title", "Shark" );
+      vg_msg_wkvstr( &descriptor, "author", "Skaterift" );
+      vg_msg_wkvuint(&descriptor, "type", u32 value=k_workshop_file_type_board);
+   vg_msg_end_frame( &descriptor );
+   vg_msg_wkvstr( &descriptor, "content", "board.mdl" );
+   write_msg( &descriptor, "boards_src/skaterift_shark/addon.inf" );
+   }
 
    /* method 2 */
 #if 0
diff --git a/conf.h b/conf.h
index 63b635af2fe82c1dd70cfa8a9e4edfb6bd44024d..e00c42bc1ec4fb65bcc3440188f3dbdfa903f12c 100644 (file)
--- a/conf.h
+++ b/conf.h
@@ -12,6 +12,9 @@ VG_STATIC i32 cl_blur             = 1,
               cl_playermdl_id     = 0,
               cl_invert_y         = 0;
 
+static f32    cl_cinema           = 0;
+static i32    cl_cinema_fixed     = 0;
+
 VG_STATIC void g_conf_init(void)
 {
    VG_VAR_F32( cl_blur_strength, flags=VG_VAR_PERSISTENT );
@@ -22,6 +25,8 @@ VG_STATIC void g_conf_init(void)
    vg_console_reg_var( "invert_y", &cl_invert_y, 
                         k_var_dtype_i32, VG_VAR_PERSISTENT );
    vg_console_reg_var( "fov", &cl_fov, k_var_dtype_f32, VG_VAR_PERSISTENT );
+   vg_console_reg_var( "cinema", &cl_cinema, k_var_dtype_f32, 0 );
+   vg_console_reg_var( "cinema_fixed", &cl_cinema_fixed, k_var_dtype_i32, 0 );
 }
 
 #endif /* CONF_H */
index 47d8de29333b9a6b4971f4ad3574ef2f5e45f8a3..e1e154875ae549fa8936ac12a9fab1832daa7fc2 100644 (file)
@@ -232,13 +232,17 @@ VG_STATIC void skateshop_op_world_scan(void){
    vg_loader_start( world_scan_thread, NULL );
 }
 
+VG_STATIC void board_processview_thread( void *_args ){
+   workshop_visibile_load_loop();
+   skaterift_end_op();
+}
+
 VG_STATIC void board_scan_thread( void *_args ){
    addon_mount_content_folder( k_workshop_file_type_board, "boards", ".mdl" );
    addon_mount_workshop_items();
    vg_async_call( async_addon_reg_update, NULL, 0 );
    vg_async_stall();
-   workshop_visibile_load_loop();
-   skaterift_end_op();
+   board_processview_thread(NULL);
 }
 
 VG_STATIC void skateshop_op_board_scan(void){
@@ -246,6 +250,11 @@ VG_STATIC void skateshop_op_board_scan(void){
    vg_loader_start( board_scan_thread, NULL );
 }
 
+VG_STATIC void skateshop_op_processview(void){
+   skaterift_begin_op( k_async_op_board_scan );
+   vg_loader_start( board_processview_thread, NULL );
+}
+
 /*
  * Regular stuff
  * -----------------------------------------------------------------------------
@@ -438,6 +447,8 @@ VG_STATIC void global_skateshop_preupdate(void)
        * ----------------------
        */
 
+      u32 opage = global_skateshop.selected_board_id/SKATESHOP_VIEW_SLOT_MAX;
+
       if( button_down( k_srbind_mleft ) ){
          if( global_skateshop.selected_board_id > 0 ){
             global_skateshop.selected_board_id --;
@@ -452,7 +463,13 @@ VG_STATIC void global_skateshop_preupdate(void)
          }
       }
 
-      if( selected_cache && button_down( k_srbind_maccept ) ){
+      u32 npage = global_skateshop.selected_board_id/SKATESHOP_VIEW_SLOT_MAX;
+
+      if( opage != npage ){
+         skateshop_update_viewpage();
+         skateshop_op_processview();
+      }
+      else if( selected_cache && button_down( k_srbind_maccept ) ){
          vg_info( "chose board from skateshop (%u)\n", 
                      global_skateshop.selected_board_id );
 
index 45ebbbf4930a979fc3078b66b486437c9e7b51f4..eff63869b4708116e681485dd3015ef918e18473 100644 (file)
Binary files a/maps_src/mp_mtzero/main.mdl and b/maps_src/mp_mtzero/main.mdl differ
index e256775dc7c2101ace0d57be787399ea2fd8ab1f..ba1d847912f425f02572168305dc1bdd7d9790db 100644 (file)
Binary files a/maps_src/mp_spawn/main.mdl and b/maps_src/mp_spawn/main.mdl differ
index 0c76d8df5496117dedfcde8e235279d1c35c10b1..b55187588a65b2c1a8c0afeb12dd544bf7450602 100644 (file)
@@ -240,6 +240,35 @@ VG_STATIC void player__cam_iterate( player_instance *player )
    player->cam.fov = vg_lerpf( player->cam.fov, player->cam_override_fov, 
                                player->cam_override_strength );
 
+
+   if( cl_cinema >= 0.0001f ){
+      ent_camera *cam = NULL;
+      f32 min_dist = cl_cinema;
+
+      world_instance *world = player->viewable_world;
+      for( u32 i=0; i<mdl_arrcount(&world->ent_camera); i++ ){
+         ent_camera *c = mdl_arritm(&world->ent_camera,i);
+
+         f32 dist = v3_dist( c->transform.co, player->rb.co );
+
+         if( dist < min_dist ){
+            min_dist = dist;
+            cam = c;
+         }
+      }
+
+      if( cam ){
+         player->cam.fov = cam->fov;
+         v3_copy( cam->transform.co, player->cam.pos );
+         v3f v0;
+         if( cl_cinema_fixed )
+            mdl_transform_vector( &cam->transform, (v3f){0.0f,-1.0f,0.0f}, v0 );
+         else v3_sub( player->rb.co, cam->transform.co, v0 );
+         m3x3_mulv( player->invbasis, v0, v0 );
+         player_vector_angles( player->cam.angles, v0, 1.0f, 0.0f );
+      }
+   }
+
    /* portal transitions */
    player_camera_portal_correction( player );
 }
index 603e98a8b6281c85ab4c91d5487fbd65aeacf387..50e780f898811a3be394cf2338b5e55648f60630 100644 (file)
@@ -14,7 +14,7 @@
 #if 1
 
 #define SR_NETWORKED
-#define VG_DEVWINDOW
+//#define VG_DEVWINDOW
 
 /* 
  *     system headers