X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=skaterift.h;h=c13c78b7fb3d455a35955f9ffdb7a43243b83372;hb=fdd41609e59c7df548682b25001f0015dc1acbea;hp=5d250a1fe7e0978afcdd278bde4f436823065d95;hpb=63b5ac44f74599b21c4b9b18398c29b797337bea;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/skaterift.h b/skaterift.h index 5d250a1..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{ @@ -10,18 +20,20 @@ struct{ 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[] ); /* @@ -30,6 +42,10 @@ static int skaterift_change_world_command( int argc, const char *argv[] ); */ 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 ); @@ -52,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 */