small compression
[carveJwlIkooP6JGAAIwe30JlM.git] / world.h
diff --git a/world.h b/world.h
index d3bc38863c7a1a33d1f49caaaa7697a8750c504b..98b9df90bc7e120bfea347fcad2e088037b444cc 100644 (file)
--- 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;
 
@@ -191,11 +199,12 @@ struct world_instance {
    glmesh mesh_geo, 
           mesh_no_collide,
           mesh_water;
+   u32 cubemap_cooldown, cubemap_side;
 
    rb_object rb_geo;
 
-   ent_challenge *challenge_target;
-   f32 challenge_timer;
+   /* leaderboards */
+   struct leaderboard_cache *leaderboard_cache;
 };
 
 struct world_static {
@@ -211,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,
@@ -228,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 */