X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world.h;h=98b9df90bc7e120bfea347fcad2e088037b444cc;hb=1d8d9366022c064ef56d80d463c90a79721c6243;hp=ddb82e1be7c2b0e7547e14eea9d3ee3f6d876a75;hpb=cb1d2f9fbec8a274aaf7a80c5fb552b928148b1e;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world.h b/world.h index ddb82e1..98b9df9 100644 --- a/world.h +++ b/world.h @@ -6,6 +6,7 @@ #define WORLD_H #include "render.h" +#include "network_msg.h" /* types */ @@ -16,8 +17,24 @@ enum world_geo_type{ k_world_geo_type_water = 2 }; +enum world_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; +static void skaterift_world_get_save_path( enum world_purpose which, + char buf[128] ); + /* submodule headers */ #include "world_entity.h" #include "world_gate.h" @@ -155,7 +172,11 @@ struct world_instance { ent_marker, ent_camera, ent_swspreview, - ent_ccmd; + ent_ccmd, + ent_objective, + ent_challenge, + ent_relay, + ent_cubemap; ent_gate *rendering_gate; @@ -169,17 +190,21 @@ struct world_instance { scene_lines; /* spacial mappings */ - bh_tree *audio_bh, - *volume_bh, - *geo_bh; + bh_tree *geo_bh, + *entity_bh; + u32 *entity_list; /* graphics */ glmesh mesh_route_lines; glmesh mesh_geo, mesh_no_collide, mesh_water; + u32 cubemap_cooldown, cubemap_side; rb_object rb_geo; + + /* leaderboards */ + struct leaderboard_cache *leaderboard_cache; }; struct world_static { @@ -195,12 +220,29 @@ struct world_static { u32 active_trigger_volumes[8]; u32 active_trigger_volume_count; - world_instance worlds[4]; - i32 active_world; + 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; + + /* challenges */ + ent_objective *challenge_target; + f32 challenge_timer; + + enum world_loader_state{ + k_world_loader_none, + k_world_loader_preload, + k_world_loader_load + } + load_state; } 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 */