X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world.h;h=98b9df90bc7e120bfea347fcad2e088037b444cc;hb=137d40d96fe923600d8378b8e138e3c276f27ff4;hp=9c1a1cf800c107e11764fdc538654a16a690630e;hpb=c52dacb7bc07e300312e45d605d206222dcbb181;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world.h b/world.h index 9c1a1cf..98b9df9 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,17 @@ enum world_geo_type{ }; enum world_purpose{ - k_world_purpose_hub, - k_world_purpose_client -} -purpose; + 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; @@ -165,8 +173,8 @@ struct world_instance { ent_camera, ent_swspreview, ent_ccmd, + ent_objective, ent_challenge, - ent_unlock, ent_relay, ent_cubemap; @@ -195,8 +203,8 @@ struct world_instance { rb_object rb_geo; - ent_challenge *challenge_target; - f32 challenge_timer; + /* leaderboards */ + struct leaderboard_cache *leaderboard_cache; }; struct world_static { @@ -212,11 +220,17 @@ 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; - addon_reg *addon_hub, - *addon_client; + /* challenges */ + ent_objective *challenge_target; + f32 challenge_timer; enum world_loader_state{ k_world_loader_none, @@ -229,5 +243,6 @@ static world_static; static void world_init(void); static world_instance *world_current_instance(void); +static void world_set_active_instance( u32 index ); #endif /* WORLD_H */