small updates and api changes
[carveJwlIkooP6JGAAIwe30JlM.git] / entity.h
index da2341e5618149e1788acb63febdbb821607adf3..ce9424ab1f9ed46de28a4f76dbdc3f8aa9369c01 100644 (file)
--- a/entity.h
+++ b/entity.h
@@ -26,7 +26,10 @@ typedef struct ent_camera ent_camera;
 typedef struct ent_swspreview ent_swspreview;
 typedef struct ent_worldinfo ent_worldinfo;
 typedef struct ent_ccmd ent_ccmd;
+typedef struct ent_objective ent_objective;
 typedef struct ent_challenge ent_challenge;
+typedef struct ent_relay ent_relay;
+typedef struct ent_cubemap ent_cubemap;
 
 enum entity_alias{
    k_ent_none        = 0,
@@ -47,8 +50,10 @@ enum entity_alias{
    k_ent_menuitem    = 15,
    k_ent_worldinfo   = 16,
    k_ent_ccmd        = 17,
-   k_ent_challenge   = 18,
-   k_ent_relay       = 19
+   k_ent_objective   = 18,
+   k_ent_challenge   = 19,
+   k_ent_relay       = 20,
+   k_ent_cubemap     = 21
 };
 
 static u32 mdl_entity_id_type( u32 entity_id ){
@@ -108,6 +113,7 @@ enum ent_gate_flag{
                                        NOTE: if set, it adds the flip flag. */
    k_ent_gate_flip        = 0x4, /* flip direction 180* for exiting portal */
    k_ent_gate_custom_mesh = 0x8, /* use a custom submesh instead of default */
+   k_ent_gate_locked      = 0x10,/* has to be unlocked to be useful */
 };
 
 struct ent_gate{
@@ -237,7 +243,7 @@ struct ent_marker{
 enum skateshop_type{
    k_skateshop_type_boardshop,
    k_skateshop_type_charshop,
-   k_skateshop_type_worldshop
+   k_skateshop_type_worldshop,
 };
 
 struct ent_skateshop{
@@ -292,7 +298,8 @@ enum ent_menuitem_type{
    k_ent_menuitem_type_page_button  = 2,
    k_ent_menuitem_type_toggle       = 3,
    k_ent_menuitem_type_slider       = 4,
-   k_ent_menuitem_type_page         = 5
+   k_ent_menuitem_type_page         = 5,
+   k_ent_menuitem_type_disabled     = 90
 };
 
 typedef struct ent_menuitem ent_menuitem;
@@ -311,6 +318,11 @@ struct ent_menuitem{
    };
 
    union{
+      struct{
+         u32 pstr_name;
+      }
+      visual;
+
       struct{
          u32 id_min,    /* ent_marker */
              id_max,    /* . */
@@ -395,15 +407,73 @@ struct ent_ccmd{
    u32 pstr_command;
 };
 
-struct ent_challenge{
+enum ent_objective_filter{
+   k_ent_objective_filter_none            = 0x00000000,
+   k_ent_objective_filter_trick_shuvit    = 0x00000001,
+   k_ent_objective_filter_trick_kickflip  = 0x00000002,
+   k_ent_objective_filter_trick_treflip   = 0x00000004,
+   k_ent_objective_filter_trick_any       = 
+      k_ent_objective_filter_trick_shuvit|
+      k_ent_objective_filter_trick_treflip|
+      k_ent_objective_filter_trick_kickflip,
+   k_ent_objective_filter_flip_back       = 0x00000008,
+   k_ent_objective_filter_flip_front      = 0x00000010,
+   k_ent_objective_filter_flip_any        =
+      k_ent_objective_filter_flip_back|
+      k_ent_objective_filter_flip_front,
+   k_ent_objective_filter_grind_truck_any = 0x00000020,
+   k_ent_objective_filter_grind_board_any = 0x00000040,
+   k_ent_objective_filter_grind_any       =
+      k_ent_objective_filter_grind_truck_any|
+      k_ent_objective_filter_grind_board_any,
+   k_ent_objective_filter_footplant       = 0x00000080,
+   k_ent_objective_filter_passthrough     = 0x00000100
+};
+
+enum ent_objective_flag {
+   k_ent_objective_hidden = 0x1,
+   k_ent_objective_passed = 0x2
+};
+
+struct ent_objective{
    mdl_transform transform;
    u32 submesh_start,
        submesh_count,
+       flags,
        id_next,
-       filter;
+       filter,filter2,
+       id_win,
+       win_event;
    f32 time_limit;
 };
 
+enum ent_challenge_flag {
+   k_ent_challenge_timelimit = 0x1
+};
+
+struct ent_challenge{
+   mdl_transform transform;
+   u32 pstr_alias,
+       flags,
+       target,
+       target_event,
+       reset,
+       reset_event,
+       first,
+       camera,
+       status;
+};
+
+struct ent_relay {
+   u32 targets[4][2];
+};
+
+struct ent_cubemap {
+   v3f co;
+   u32 resolution, live, texture_id, 
+       framebuffer_id, renderbuffer_id, placeholder[2];
+};
+
 typedef struct ent_call ent_call;
 struct ent_call{
    u32 id, function;