X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=skaterift.h;h=c13c78b7fb3d455a35955f9ffdb7a43243b83372;hb=fdd41609e59c7df548682b25001f0015dc1acbea;hp=b2d208c96ede3378878602445e89cb6d3396ddc3;hpb=a8ba9cc44e1ae9aeca62fb579a3105c625e59133;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/skaterift.h b/skaterift.h index b2d208c..c13c78b 100644 --- a/skaterift.h +++ b/skaterift.h @@ -1,7 +1,17 @@ #ifndef SKATERIFT_H #define SKATERIFT_H +#define SKATERIFT_APPID 2103940 + +#define VG_TIMESTEP_FIXED (1.0/60.0) +#define VG_3D +#define VG_GAME +#define VG_MSG_V1_SUPPORT +#include "vg/vg.h" + #include "common.h" +#include "world.h" +#include "addon.h" struct{ enum async_operation{ @@ -9,32 +19,33 @@ struct{ k_async_op_clientloading, k_async_op_world_preloading, k_async_op_world_loading, + k_async_op_world_scan, + k_async_op_world_load_preview, + k_async_op_board_scan, + k_async_op_board_load, + k_async_op_write_savedata, 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 } async_op; } static skaterift = { .async_op = k_async_op_clientloading }; - /* Skaterift api */ - -static void skaterift_change_world( const char *world_path ); +static void skaterift_change_world_start( void ); static int skaterift_change_world_command( int argc, const char *argv[] ); - - - - /* * 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( vg_thread_purpose() == k_thread_purpose_loader ){ + vg_fatal_error( "Can't do that here\n" ); + } + 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 ); @@ -57,13 +68,23 @@ VG_STATIC void skaterift_shift_op( enum async_operation op ) vg_info( "Shifting to op( %d )\n", op ); } +VG_STATIC void skaterift_end_op(void); +VG_STATIC void async_skaterift_end_op( void *data, u32 size ){ + skaterift_end_op(); +} + /* * 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; + if( vg_thread_purpose() == k_thread_purpose_loader ){ + vg_async_call( async_skaterift_end_op, NULL, 0 ); + } + else{ + vg_info( "Finishing op( %d )\n", skaterift.async_op ); + skaterift.async_op = k_async_op_none; + } } #endif /* SKATERIFT_H */