point maps (wip)
[carveJwlIkooP6JGAAIwe30JlM.git] / skaterift.h
1 #ifndef SKATERIFT_H
2 #define SKATERIFT_H
3
4 #include "common.h"
5
6 struct{
7 enum async_operation{
8 k_async_op_none,
9 k_async_op_clientloading,
10 k_async_op_world_preloading,
11 k_async_op_world_loading,
12 k_async_op_cloud_loading,
13 k_workshop_form_op_loading_model,
14 k_workshop_form_op_downloading_submission,
15 k_workshop_form_op_publishing_update,
16 k_workshop_op_item_scan,
17 k_workshop_op_item_load
18 }
19 async_op;
20 }
21 static skaterift = { .async_op = k_async_op_clientloading };
22
23 /* Skaterift api */
24 static void skaterift_change_world( const char *world_path );
25 static int skaterift_change_world_command( int argc, const char *argv[] );
26
27 /*
28 * Start a new operation or crash if we are already running one. you can avoid
29 * crashing the game by checking the async status yourself before calling.
30 */
31 VG_STATIC void skaterift_begin_op( enum async_operation op )
32 {
33 if( skaterift.async_op != k_async_op_none ){
34 vg_fatal_error( "Async executing op(%d), tried to start op(%d)\n",
35 skaterift.async_op, op );
36 }
37
38 skaterift.async_op = op;
39 vg_info( "Starting op( %d )\n", op );
40 }
41
42 /*
43 * Switch operation for those who have multiple parts
44 */
45 VG_STATIC void skaterift_shift_op( enum async_operation op )
46 {
47 if( skaterift.async_op == k_async_op_none ){
48 vg_fatal_error( "No current op, cannot shift operation (%d)\n", op );
49 }
50
51 skaterift.async_op = op;
52 vg_info( "Shifting to op( %d )\n", op );
53 }
54
55 /*
56 * Finished operation, otheres can now run
57 */
58 VG_STATIC void skaterift_end_op(void)
59 {
60 vg_info( "Finishing op( %d )\n", skaterift.async_op );
61 skaterift.async_op = k_async_op_none;
62 }
63
64 #endif /* SKATERIFT_H */