active ragdolls
[carveJwlIkooP6JGAAIwe30JlM.git] / skaterift.h
index 5d250a1fe7e0978afcdd278bde4f436823065d95..a21e6ab423642b4b86903b8c7490cff9471df3a6 100644 (file)
@@ -1,64 +1,82 @@
 #ifndef SKATERIFT_H
 #define SKATERIFT_H
 
-#include "common.h"
+#define SKATERIFT_APPID 2103940
+
+#define VG_TIMESTEP_FIXED (1.0/60.0)
+#define VG_3D
+#define VG_GAME
+#define VG_MSG_V1_SUPPORT
+#define VG_LOG_SOURCE_INFO
+#include "vg/vg.h"
+#include "world.h"
+#include "addon.h"
+
+enum skaterift_rt {
+   k_skaterift_rt_workshop_preview,
+   k_skaterift_rt_server_status,
+   k_skaterift_rt_max
+};
 
 struct{
    enum async_operation{
       k_async_op_none,
       k_async_op_clientloading,
-      k_async_op_world_preloading,
-      k_async_op_world_loading,
       k_async_op_world_scan,
-      k_workshop_form_op_loading_model,
-      k_workshop_form_op_downloading_submission,
-      k_workshop_form_op_publishing_update,
-      k_workshop_op_item_scan,
-      k_workshop_op_item_load
+      k_async_op_world_load_preview,
+      k_async_op_board_scan,
+      k_async_op_player_scan,
+      k_async_op_board_load,
+      k_async_op_write_savedata,
    }
-   async_op;
-}
-static skaterift = { .async_op = k_async_op_clientloading };
+   op;
 
-/* Skaterift api */
-static void skaterift_change_world( const char *world_path );
-static int  skaterift_change_world_command( int argc, const char *argv[] );
+   f32 time_rate;
+   camera cam;
+   
+   replay_buffer replay;
+   replay_frame *resume_target;
+   f64 resume_begin;
+   f32 resume_transition;
 
-/*
- * Start a new operation or crash if we are already running one. you can avoid
- * crashing the game by checking the async status yourself before calling.
- */
-VG_STATIC void skaterift_begin_op( enum async_operation op )
-{
-   if( skaterift.async_op != k_async_op_none ){
-      vg_fatal_error( "Async executing op(%d), tried to start op(%d)\n", 
-                       skaterift.async_op, op );
+   enum replay_control {
+      k_replay_control_scrub,
+      k_replay_control_play,
+      k_replay_control_resume
    }
-   
-   skaterift.async_op = op;
-   vg_info( "Starting op( %d )\n", op );
-}
+   replay_control;
+   f32 track_velocity;
+   struct gui_helper *helper_resume, *helper_freecam;
 
-/*
- * Switch operation for those who have multiple parts
- */
-VG_STATIC void skaterift_shift_op( enum async_operation op )
-{
-   if( skaterift.async_op == k_async_op_none ){
-      vg_fatal_error( "No current op, cannot shift operation (%d)\n", op );
+   camera replay_freecam;
+   i32 freecam;
+   v3f freecam_v, freecam_w;
+
+   enum skaterift_activity {
+      k_skaterift_default    = 0x00,
+      k_skaterift_replay     = 0x01,
+      k_skaterift_ent_focus  = 0x02,
+      k_skaterift_menu       = 0x04,
+      k_skaterift_world_map  = 0x08,
    }
-   
-   skaterift.async_op = op;
-   vg_info( "Shifting to op( %d )\n", op );
-}
+   activity;
+
+   f64 last_autosave;
+   GLuint rt_textures[k_skaterift_rt_max];
 
-/*
- * Finished operation, otheres can now run
- */
-VG_STATIC void skaterift_end_op(void)
-{
-   vg_info( "Finishing op( %d )\n", skaterift.async_op );
-   skaterift.async_op = k_async_op_none;
+   u32 achievements;
+   int demo_mode;
+
+   audio_channel *aud_air;
+   const char *hub_world;
 }
+static skaterift = { 
+   .op = k_async_op_clientloading, .time_rate = 1.0f, .demo_mode = 1,
+   .hub_world = "maps/dev_hub"
+};
+
+/* Skaterift api */
+static void skaterift_change_world_start( addon_reg *reg );
+static int  skaterift_change_world_command( int argc, const char *argv[] );
 
 #endif /* SKATERIFT_H */