X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world.h;h=0a67abf855df6d9216424243f9730770e945acda;hb=1c56bc84c9ad3da49c9d2447ec97aaf7f6038601;hp=d35f0646b6ec1e8ed76b4d789e2f57bac4a74793;hpb=99376ce8eaf30125fb08dd5dc8b534800580fe47;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world.h b/world.h index d35f064..0a67abf 100644 --- a/world.h +++ b/world.h @@ -6,6 +6,7 @@ #define WORLD_H #include "render.h" +#include "network_msg.h" /* types */ @@ -17,10 +18,18 @@ enum world_geo_type{ }; enum world_purpose{ - k_world_purpose_hub, - k_world_purpose_client -} -purpose; + k_world_purpose_invalid = -1, + k_world_purpose_hub = 0, + k_world_purpose_client = 1, + k_world_max +}; + +struct leaderboard_cache { + enum request_status status; + f64 cache_time; + u8 *data; + u32 data_len; +}; typedef struct world_instance world_instance; @@ -54,6 +63,8 @@ struct world_instance { * ------------------------------------------------------- */ + v4f player_co; + void *heap; enum world_status{ k_world_status_unloaded = 0, @@ -168,7 +179,14 @@ struct world_instance { ent_objective, ent_challenge, ent_relay, - ent_cubemap; + ent_cubemap, + ent_miniworld, + ent_prop; + + enum skybox { + k_skybox_default, + k_skybox_space + } skybox; ent_gate *rendering_gate; @@ -194,6 +212,9 @@ struct world_instance { u32 cubemap_cooldown, cubemap_side; rb_object rb_geo; + + /* leaderboards */ + struct leaderboard_cache *leaderboard_cache; }; struct world_static { @@ -209,8 +230,10 @@ struct world_static { u32 active_trigger_volumes[8]; u32 active_trigger_volume_count; - world_instance instances[4]; - i32 active_instance; + addon_reg *instance_addons[ k_world_max ]; + world_instance instances[ k_world_max ]; + + enum world_purpose active_instance; u32 focused_entity; /* like skateshop, challenge.. */ f32 focus_strength; camera focus_cam; @@ -219,9 +242,6 @@ struct world_static { ent_objective *challenge_target; f32 challenge_timer; - addon_reg *addon_hub, - *addon_client; - enum world_loader_state{ k_world_loader_none, k_world_loader_preload, @@ -233,6 +253,6 @@ static world_static; static void world_init(void); static world_instance *world_current_instance(void); -static void world_set_active_instance( u32 index ); +static void world_switch_instance( u32 index ); #endif /* WORLD_H */