Menu Asset (BO2): Difference between revisions

From COD Engine Research
mNo edit summary
Therifboy (talk | contribs)
mNo edit summary
 
(3 intermediate revisions by 3 users not shown)
Line 4: Line 4:
enum expDataType
enum expDataType
{
{
VAL_INT = 0x0,
  VAL_INT = 0x0,
VAL_FLOAT = 0x1,
  VAL_FLOAT = 0x1,
VAL_STRING = 0x2,
  VAL_STRING = 0x2,
  VAL_ADDRESS = 0x3,
  VAL_DVAR = 0x4,
};
};
union operandInternalDataUnion
union operandInternalDataUnion
{
{
int intVal;
  int intVal;
float floatVal;
  float floatVal;
const char *string;
  const char *string;
  dvar_t *dvar;
};
};


struct Operand
struct Operand
{
{
expDataType dataType;
  expDataType dataType;
operandInternalDataUnion internals;
  operandInternalDataUnion internals;
};
 
enum expOperationEnum
{
  OP_NOOP = 0x0,
  OP_RIGHTPAREN = 0x1,
  OP_MULTIPLY = 0x2,
  OP_DIVIDE = 0x3,
  OP_MODULUS = 0x4,
  OP_ADD = 0x5,
  OP_SUBTRACT = 0x6,
  OP_NEGATE = 0x7,
  OP_NOT = 0x8,
  OP_LESSTHAN = 0x9,
  OP_LESSTHANEQUALTO = 0xA,
  OP_GREATERTHAN = 0xB,
  OP_GREATERTHANEQUALTO = 0xC,
  OP_EQUALS = 0xD,
  OP_NOTEQUAL = 0xE,
  OP_AND = 0xF,
  OP_OR = 0x10,
  OP_LEFTPAREN = 0x11,
  OP_COMMA = 0x12,
  OP_BITWISEAND = 0x13,
  OP_BITWISEOR = 0x14,
  OP_BITWISENOT = 0x15,
  OP_BITSHIFTLEFT = 0x16,
  OP_BITSHIFTRIGHT = 0x17,
  NUM_EXPRESSION_OPERATORS = 0x18,
  MAX_OPERATOR_VALUE = 0x4000,
};
 
union expressionRpnDataUnion
{
  Operand constant;
  void *cmd;
  int cmdIdx;
};
};


union entryInternalData
enum expressionRpnEnum
{
{
int op;
  RPN_CONSTANT = 0x0,
Operand operand;
  RPN_CMD_IDX = 0x1,
  RPN_CMD = 0x2,
  RPN_END = 0x3,
};
};


struct expressionRpn
struct expressionRpn
{
{
int type;
  expressionRpnEnum type;
entryInternalData data;
  expressionRpnDataUnion data;
};
};


struct ExpressionStatement
struct ExpressionStatement
{
{
char *string1;
  char *filename;
int unknown;
  int line;
int numEntries;
  int numRpn;
expressionRpn *rpn;
  expressionRpn *rpn;
};
};


struct rectExpData_t
struct ScriptCondition
{
{
ExpressionStatement rectXExp;
  bool fireOnTrue;
ExpressionStatement rectYExp;
  int constructID;
ExpressionStatement rectWExp;
  int blockID;
ExpressionStatement rectHExp;
  ScriptCondition *next;
};
};


struct gameMsgDef_t
struct GenericEventScript
{
{
int gamemsgwindowindex;
  ScriptCondition *prerequisites;
int gamemsgwindowmode;
  ExpressionStatement condition;
  int type;
  bool fireOnTrue;
  const char *action;
  int blockID;
  int constructID;
  GenericEventScript *next;
};
};


struct focusItemDef_t;
struct ItemKeyHandler
{
  int key;
  GenericEventScript *keyScript;
  ItemKeyHandler *next;
};


union textData_t
struct textExp_s
{
{
focusItemDef_t *focusItemDef; // 3,4,5,7,8,9,10,11,12,13,14,16,20,21,22,30
  ExpressionStatement textExp;
gameMsgDef_t *gameMsgDef; // 15
};
};


struct textDef_t
struct columnInfo_s
{
{
rectDef_s textRect[4];
  int elementStyle;
int alignment;
  int maxChars;
int fontEnum;
  rectDef_s rect;
int textSaveGameInfo;
int textAlignMode;
float textalignx;
float textaligny;
float textscale;
int textpadding;
int textstyle;
float fontColor[4];
float glowColor[4];
float shadowColor[4];
float fontBlur;
float glowRadius;
float shadowSize;
float shadowOffset;
int unknown;
char *text;
ExpressionStatement *textExpData;
textData_t textData;
};
};


struct MenuCell
struct MenuCell
{
{
int unknown1;
  int type;
int stringSize;
  int maxChars;
char *stringValue;
  char *stringValue;
};
};


struct MenuRow
struct MenuRow
{
{
MenuCell *cells;
  MenuCell *cells;
const char *eventName;
  char *eventName;
const char *onFocusEventName;
  char *onFocusEventName;
char unknown[0x10];
  bool disableArg;
};
  int status;
 
  int name;
struct listBoxDef_t
{
char unknown1[0x14];
float elementwidth;
float elementheight;
char unknown2[8];
int elementtype;
char unknown3[0x21C];
int notselectable;
int noScrollBars;
int usePaging;
float selectBorder[4];
float disableColor[4];
float focusColor[4];
float elementHighlightColor[4];
float elementBackgroundColor[4];
Material *selectIcon;
Material *backgroundItemListBox;
Material *highlightTexture;
int bNoBlinkingHighlight;
MenuRow *rows;
int numRows;
int unknown4;
};
};


struct multiDef_t
struct listBoxDef_s
{
{
char *dvarList[32];
  int mousePos;
char *dvarStr[32];
#ifndef PC //Note: PC only has 1 cursor, but consoles can have 4 controllers connected
float dvarValue[32];
  int cursorPos[4];
char unknown[0xC];
  int startPos[4];
  int endPos[4];
#else
  int cursorPos[1];
  int startPos[1];
  int endPos[1];
#endif
  int drawPadding;
  float elementWidth;
  float elementHeight;
  int numColumns;
  float special;
  columnInfo_s columnInfo[16];
  int notselectable;
  int noScrollBars;
  int usePaging;
  vec4_t selectBorder;
  vec4_t disableColor;
  vec4_t focusColor;
  vec4_t elementHighlightColor;
  vec4_t elementBackgroundColor;
  Material *selectIcon;
  Material *backgroundItemListbox;
  Material *highlightTexture;
  int noBlinkingHighlight;
  MenuRow *rows;
  int maxRows;
  int rowCount;
};
};


struct profileDef_t
struct multiDef_s
{
{
char *profileStrList[32];
  const char *dvarList[32];
char *profileFloatList[32];
  const char *dvarStr[32];
float profileFloat[32];
  float dvarValue[32];
char unknown[0xC];
  int count;
  int actionOnEnterPressOnly;
  int strDef;
};
};


struct editFieldDef_t
struct profileMultiDef_s
{
{
char unknown1[0x14];
  const char *profileVarList[32];
int maxChars;
  const char *profileVarStr[32];
int maxCharsGotoNext;
  float profileVarValue[32];
int maxPaintChars;
  int count;
char unknown2[0x10];
  int actionOnEnterPressOnly;
  int strDef;
};
};


struct enumDvarDef_t
struct editFieldDef_s
{
{
char *enumDvarName;
  int cursorPos[1];
  float minVal;
  float maxVal;
  float defVal;
  float range;
  int maxChars;
  int maxCharsGotoNext;
  int maxPaintChars;
  int paintOffset;
};
};


union itemDefData_t
struct enumDvarDef_s
{
{
listBoxDef_t *listBox; // 4
  const char *enumDvarName;
multiDef_t *multiDef; // 10
profileDef_t *profileDef; // 22
editFieldDef_t *editField; // 5,7,8,9,12,13,14,16,30
enumDvarDef_t *enumDvarDef; // 11
void *data;
};
};


struct ScriptCondition
union focusDefData_t
{
{
char unknown[0xC];
  listBoxDef_s *listBox;
ScriptCondition *next;
  multiDef_s *multi;
  profileMultiDef_s *profileMulti;
  editFieldDef_s *editField;
  enumDvarDef_s *enumDvar;
  void *data;
};
};


struct GenericEventScript
struct focusItemDef_s
{
{
ScriptCondition *prerequisites;
  const char *mouseEnterText;
char unknown1[0x18];
  const char *mouseExitText;
char *string1;
  const char *mouseEnter;
char unknown2[0xC];
  const char *mouseExit;
GenericEventScript *next;
  ItemKeyHandler *onKey;
  focusDefData_t focusTypeData;
};
};


struct GenericEventHandler
struct gameMsgDef_s
{
{
int unknown;
  int gameMsgWindowIndex;
GenericEventScript *eventScript;
  int gameMsgWindowMode;
GenericEventHandler *next;
};
};


struct focusItemDef_t
union textDefData_t
{
{
const char *string1;
  focusItemDef_s *focusItemDef; // 3,4,5,7,8,9,10,11,12,13,14,16,20,21,22,30
const char *string2;
  gameMsgDef_s *gameMsgDef; // 15
const char *string3;
  void *data;
const char *string4;
GenericEventHandler *onKey;
itemDefData_t typeData;
};
};


union itemData_t
struct textDef_s
{
{
textDef_t *textData; // 1,3,4,5,7,8,9,10,11,12,13,14,15,16,18,20,22
#ifndef PC //Note: PC only has 1 cursor, but consoles can have 4 controllers connected
ExpressionStatement *imageDef; // 2
  rectDef_s textRect[4];
ExpressionStatement *ownerDrawDef; // 6
#else
focusItemDef_t *focusItemDef; // 19, 21
  rectDef_s textRect[1];
void *data;
#endif
  int alignment;
  int fontEnum;
  int itemFlags;
  int textAlignMode;
  float textalignx;
  float textaligny;
  float textscale;
  float textpadding;
  int textStyle;
  vec4_t fontColor;
  vec4_t glowColor;
  vec4_t shadowColor;
  float fontBlur;
  float glowSize;
  float shadowSize;
  vec2_t shadowOffset;
  const char *text;
  textExp_s *textExpData;
  textDefData_t textTypeData;
};
};


struct ItemKeyHandler
struct imageDef_s
{
{
const char *keyName;
  ExpressionStatement materialExp;
GenericEventScript *keyScript;
ItemKeyHandler *next;
};
};


struct animParamsDef_t
struct ownerDrawDef_s
{
{
const char *state;
  ExpressionStatement dataExp;
char unknown[0x64];
ItemKeyHandler *onEvent;
};
};


struct UIAnimInfo
union itemData_t
{
{
int count;
  textDef_s *textDef; // 1,3,4,5,7,8,9,10,11,12,13,14,15,16,18,20,22
animParamsDef_t *animStates;
  imageDef_s *imageDef; // 2
char unknown[0xE4];
  ownerDrawDef_s *ownerDrawDef; // 6
  focusItemDef_s *blankButtonDef; // 19, 21
  void *data;
};
};


Line 250: Line 311:
struct rectDef_s
struct rectDef_s
{
{
float x;
  float x;
float y;
  float y;
float w;
  float w;
float h;
  float h;
int horzAlign;
  int horzAlign;
int vertAlign;
  int vertAlign;
};
};


struct windowDef_t
struct windowDef_t
{
{
const char *name;
  const char *name;
rectDef_s rect;
  rectDef_s rect;
rectDef_s rectClient;
  rectDef_s rectClient;
const char *group;
  const char *group;
char style;
  char style;
char border;
  char border;
char modal;
  char modal;
char frameSide;
  char frameSides;
float frame[2];
  float frameTexSize;
int ownerDraw;
  float frameSize;
int ownerDrawFlag;
  int ownerDraw;
float borderSize;
  int ownerDrawFlags;
int staticFlags;
  float borderSize;
int dynamicFlags[4];
  int staticFlags;
int nextTime;
  int dynamicFlags[1];
float foreColor[4];
  int nextTime;
float backColor[4];
  vec4_t foreColor;
float borderColor[4];
  vec4_t backColor;
float outlineColor[4];
  vec4_t borderColor;
float rotation;
  vec4_t outlineColor;
Material *background;
  float rotation;
  Material *background;
};
 
struct animParamsDef_t
{
  const char *name;
  rectDef_s rectClient;
  float borderSize;
  vec4_t foreColor;
  vec4_t backColor;
  vec4_t borderColor;
  vec4_t outlineColor;
  float textScale;
  float rotation;
  GenericEventHandler *onEvent;
};
 
struct UIAnimInfo
{
  int animStateCount;
  animParamsDef_t **animStates;
  animParamsDef_t currentAnimState;
  animParamsDef_t nextAnimState;
  int animating;
  int animStartTime;
  int animDuration;
};
};


struct itemDef_t
struct itemDef_t
{
{
windowDef_t window;
  windowDef_t window;
int type;
  int type;
int dataType;
  int dataType;
int unknown4;
  int imageTrack;
const char *dvar;
  const char *dvar;
const char *profile;
  const char *profileVar;
const char *dvarTest;
  const char *dvarTest;
const char *enableDvar;
  const char *enableDvar;
int enableFlags; // 1=enableDvar, 2=disableDvar, 4=showDvar, 8=hideDvar, 16=focusDvar
  int dvarFlags; // 1=enableDvar, 2=disableDvar, 4=showDvar, 8=hideDvar, 16=focusDvar
itemData_t typeData;
  itemDefData_t typeData;
menuDef_t *parent;
  menuDef_t *parent;
rectExpData_t *rectExpData;
  rectData_s *rectExpData;
ExpressionStatement visibleExp;
  ExpressionStatement visibleExp;
int unknown1;
  unsigned __int64 showBits;
int visibilityBits[4];
  unsigned __int64 hideBits;
ExpressionStatement foreColorExp;
  ExpressionStatement forecolorAExp;
int ui3dWindowId;
  int ui3dWindowId;
ItemKeyHandler *onEvent;
  GenericEventHandler *onEvent;
UIAnimInfo *animInfo;
  UIAnimInfo *animInfo;
int unknown2;
};
};


struct menuDef_t
struct menuDef_t
{
{
windowDef_t window;
  windowDef_t window;
char *font;
  const char *font;
int fullscreen;
  int fullScreen;
int ui3dWindowId;
  int ui3dWindowId;
int itemCount;
  int itemCount;
int fontIndex;
  int fontIndex;
int cursorItem[4];
#ifndef PC //Note: PC only has 1 cursor, but consoles can have 4 controllers connected
int fadeCycle;
  int cursorItem[4];
int priority;
#else
float fadeClamp;
  int cursorItem[1];
float fadeAmount;
#endif
float fadeInAmount;
  int fadeCycle;
float blurRadius;
  int priority;
int openSlideSpeed;
  float fadeClamp;
int closeSlideSpeed;
  float fadeAmount;
int openSlideDirection;
  float fadeInAmount;
int closeSlideDirection;
  float blurRadius;
rectDef_s unknownRect;
  int openSlideSpeed;
int closeFadingTime;
  int closeSlideSpeed;
int openFadingTime;
  int openSlideDirection;
char unknown2[0x8];
  int closeSlideDirection;
ItemKeyHandler *onKey;
  rectDef_s initialRectInfo;
GenericEventHandler *onEvent;
  int openFadingTime;
ExpressionStatement visibleExp;
  int closeFadingTime;
int unknown3;
  int fadeTimeCounter;
int visibilityBits[4];
  int slideTimeCounter;
char *allowedBinding;
  GenericEventHandler *onEvent;
char *soundLoop;
  ItemKeyHandler *onKey;
int unknown4;
  ExpressionStatement visibleExp;
int control;
  unsigned __int64 showBits;
float focusColor[4];
  unsigned __int64 hideBits;
float disableColor[4];
  const char *allowedBinding;
ExpressionStatement rectYExp;
  const char *soundName;
ExpressionStatement rectXExp;
  int imageTrack;
itemDef_t **items;
  int control;
  vec4_t focusColor;
  vec4_t disableColor;
  ExpressionStatement rectXExp;
  ExpressionStatement rectYExp;
  itemDef_s **items;
int unknown5;
int unknown5;
};
};
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 15:05, 12 January 2015

enum expDataType
{
  VAL_INT = 0x0,
  VAL_FLOAT = 0x1,
  VAL_STRING = 0x2,
  VAL_ADDRESS = 0x3,
  VAL_DVAR = 0x4,
};
union operandInternalDataUnion
{
  int intVal;
  float floatVal;
  const char *string;
  dvar_t *dvar;
};

struct Operand
{
  expDataType dataType;
  operandInternalDataUnion internals;
};

enum expOperationEnum
{
  OP_NOOP = 0x0,
  OP_RIGHTPAREN = 0x1,
  OP_MULTIPLY = 0x2,
  OP_DIVIDE = 0x3,
  OP_MODULUS = 0x4,
  OP_ADD = 0x5,
  OP_SUBTRACT = 0x6,
  OP_NEGATE = 0x7,
  OP_NOT = 0x8,
  OP_LESSTHAN = 0x9,
  OP_LESSTHANEQUALTO = 0xA,
  OP_GREATERTHAN = 0xB,
  OP_GREATERTHANEQUALTO = 0xC,
  OP_EQUALS = 0xD,
  OP_NOTEQUAL = 0xE,
  OP_AND = 0xF,
  OP_OR = 0x10,
  OP_LEFTPAREN = 0x11,
  OP_COMMA = 0x12,
  OP_BITWISEAND = 0x13,
  OP_BITWISEOR = 0x14,
  OP_BITWISENOT = 0x15,
  OP_BITSHIFTLEFT = 0x16,
  OP_BITSHIFTRIGHT = 0x17,
  NUM_EXPRESSION_OPERATORS = 0x18,
  MAX_OPERATOR_VALUE = 0x4000,
};

union expressionRpnDataUnion
{
  Operand constant;
  void *cmd;
  int cmdIdx;
};

enum expressionRpnEnum
{
  RPN_CONSTANT = 0x0,
  RPN_CMD_IDX = 0x1,
  RPN_CMD = 0x2,
  RPN_END = 0x3,
};

struct expressionRpn
{
  expressionRpnEnum type;
  expressionRpnDataUnion data;
};

struct ExpressionStatement
{
  char *filename;
  int line;
  int numRpn;
  expressionRpn *rpn;
};

struct ScriptCondition
{
  bool fireOnTrue;
  int constructID;
  int blockID;
  ScriptCondition *next;
};

struct GenericEventScript
{
  ScriptCondition *prerequisites;
  ExpressionStatement condition;
  int type;
  bool fireOnTrue;
  const char *action;
  int blockID;
  int constructID;
  GenericEventScript *next;
};

struct ItemKeyHandler
{
  int key;
  GenericEventScript *keyScript;
  ItemKeyHandler *next;
};

struct textExp_s
{
  ExpressionStatement textExp;
};

struct columnInfo_s
{
  int elementStyle;
  int maxChars;
  rectDef_s rect;
};

struct MenuCell
{
  int type;
  int maxChars;
  char *stringValue;
};

struct MenuRow
{
  MenuCell *cells;
  char *eventName;
  char *onFocusEventName;
  bool disableArg;
  int status;
  int name;
};

struct listBoxDef_s
{
  int mousePos;
#ifndef PC			//Note: PC only has 1 cursor, but consoles can have 4 controllers connected
  int cursorPos[4];
  int startPos[4];
  int endPos[4];
#else
  int cursorPos[1];
  int startPos[1];
  int endPos[1];
#endif
  int drawPadding;
  float elementWidth;
  float elementHeight;
  int numColumns;
  float special;
  columnInfo_s columnInfo[16];
  int notselectable;
  int noScrollBars;
  int usePaging;
  vec4_t selectBorder;
  vec4_t disableColor;
  vec4_t focusColor;
  vec4_t elementHighlightColor;
  vec4_t elementBackgroundColor;
  Material *selectIcon;
  Material *backgroundItemListbox;
  Material *highlightTexture;
  int noBlinkingHighlight;
  MenuRow *rows;
  int maxRows;
  int rowCount;
};

struct multiDef_s
{
  const char *dvarList[32];
  const char *dvarStr[32];
  float dvarValue[32];
  int count;
  int actionOnEnterPressOnly;
  int strDef;
};

struct profileMultiDef_s
{
  const char *profileVarList[32];
  const char *profileVarStr[32];
  float profileVarValue[32];
  int count;
  int actionOnEnterPressOnly;
  int strDef;
};

struct editFieldDef_s
{
  int cursorPos[1];
  float minVal;
  float maxVal;
  float defVal;
  float range;
  int maxChars;
  int maxCharsGotoNext;
  int maxPaintChars;
  int paintOffset;
};

struct enumDvarDef_s
{
  const char *enumDvarName;
};

union focusDefData_t
{
  listBoxDef_s *listBox;
  multiDef_s *multi;
  profileMultiDef_s *profileMulti;
  editFieldDef_s *editField;
  enumDvarDef_s *enumDvar;
  void *data;
};

struct focusItemDef_s
{
  const char *mouseEnterText;
  const char *mouseExitText;
  const char *mouseEnter;
  const char *mouseExit;
  ItemKeyHandler *onKey;
  focusDefData_t focusTypeData;
};

struct gameMsgDef_s
{
  int gameMsgWindowIndex;
  int gameMsgWindowMode;
};

union textDefData_t
{
  focusItemDef_s *focusItemDef;	// 3,4,5,7,8,9,10,11,12,13,14,16,20,21,22,30
  gameMsgDef_s *gameMsgDef;	// 15
  void *data;
};

struct textDef_s
{
#ifndef PC			//Note: PC only has 1 cursor, but consoles can have 4 controllers connected
  rectDef_s textRect[4];
#else
  rectDef_s textRect[1];
#endif
  int alignment;
  int fontEnum;
  int itemFlags;
  int textAlignMode;
  float textalignx;
  float textaligny;
  float textscale;
  float textpadding;
  int textStyle;
  vec4_t fontColor;
  vec4_t glowColor;
  vec4_t shadowColor;
  float fontBlur;
  float glowSize;
  float shadowSize;
  vec2_t shadowOffset;
  const char *text;
  textExp_s *textExpData;
  textDefData_t textTypeData;
};

struct imageDef_s
{
  ExpressionStatement materialExp;
};

struct ownerDrawDef_s
{
  ExpressionStatement dataExp;
};

union itemData_t
{
  textDef_s *textDef;	// 1,3,4,5,7,8,9,10,11,12,13,14,15,16,18,20,22
  imageDef_s *imageDef;		// 2
  ownerDrawDef_s *ownerDrawDef;	// 6
  focusItemDef_s *blankButtonDef;		// 19, 21
  void *data;
};

/* dynamicFlags */
#define WINDOWDYNAMIC_VISIBLE		0x00000004
#define WINDOWDYNAMIC_CHECKMASK	0x000FFFFF

/* staticFlags */
#define WINDOWSTATIC_DECORATION		0x00100000
#define WINDOWSTATIC_HORIZONTALSCROLL		0x00200000
#define WINDOWSTATIC_AUTOWRAPPED		0x00800000
#define WINDOWSTATIC_POPUP 			0x01000000
#define WINDOWSTATIC_OUTOFBOUNDSCLICK 		0x02000000
#define WINDOWSTATIC_LEGACYSPLITSCREENSCALE	0x04000000
#define WINDOWSTATIC_ALLOWSIGNIN		0x08000000
#define WINDOWSTATIC_HIDDENDURINGFLASHBANG	0x10000000
#define WINDOWSTATIC_HIDDENDURINGSCOPE		0x20000000
#define WINDOWSTATIC_HIDDENDURINGUI		0x40000000
#define WINDOWSTATIC_CHECKMASK			0xFFF00000

struct rectDef_s
{
  float x;
  float y;
  float w;
  float h;
  int horzAlign;
  int vertAlign;
};

struct windowDef_t
{
  const char *name;
  rectDef_s rect;
  rectDef_s rectClient;
  const char *group;
  char style;
  char border;
  char modal;
  char frameSides;
  float frameTexSize;
  float frameSize;
  int ownerDraw;
  int ownerDrawFlags;
  float borderSize;
  int staticFlags;
  int dynamicFlags[1];
  int nextTime;
  vec4_t foreColor;
  vec4_t backColor;
  vec4_t borderColor;
  vec4_t outlineColor;
  float rotation;
  Material *background;
};

struct animParamsDef_t
{
  const char *name;
  rectDef_s rectClient;
  float borderSize;
  vec4_t foreColor;
  vec4_t backColor;
  vec4_t borderColor;
  vec4_t outlineColor;
  float textScale;
  float rotation;
  GenericEventHandler *onEvent;
};

struct UIAnimInfo
{
  int animStateCount;
  animParamsDef_t **animStates;
  animParamsDef_t currentAnimState;
  animParamsDef_t nextAnimState;
  int animating;
  int animStartTime;
  int animDuration;
};

struct itemDef_t
{
  windowDef_t window;
  int type;
  int dataType;
  int imageTrack;
  const char *dvar;
  const char *profileVar;
  const char *dvarTest;
  const char *enableDvar;
  int dvarFlags;		// 1=enableDvar, 2=disableDvar, 4=showDvar, 8=hideDvar, 16=focusDvar
  itemDefData_t typeData;
  menuDef_t *parent;
  rectData_s *rectExpData;
  ExpressionStatement visibleExp;
  unsigned __int64 showBits;
  unsigned __int64 hideBits;
  ExpressionStatement forecolorAExp;
  int ui3dWindowId;
  GenericEventHandler *onEvent;
  UIAnimInfo *animInfo;
};

struct menuDef_t
{
  windowDef_t window;
  const char *font;
  int fullScreen;
  int ui3dWindowId;
  int itemCount;
  int fontIndex;
#ifndef PC			//Note: PC only has 1 cursor, but consoles can have 4 controllers connected
  int cursorItem[4];
#else
  int cursorItem[1];
#endif
  int fadeCycle;
  int priority;
  float fadeClamp;
  float fadeAmount;
  float fadeInAmount;
  float blurRadius;
  int openSlideSpeed;
  int closeSlideSpeed;
  int openSlideDirection;
  int closeSlideDirection;
  rectDef_s initialRectInfo;
  int openFadingTime;
  int closeFadingTime;
  int fadeTimeCounter;
  int slideTimeCounter;
  GenericEventHandler *onEvent;
  ItemKeyHandler *onKey;
  ExpressionStatement visibleExp;
  unsigned __int64 showBits;
  unsigned __int64 hideBits;
  const char *allowedBinding;
  const char *soundName;
  int imageTrack;
  int control;
  vec4_t focusColor;
  vec4_t disableColor;
  ExpressionStatement rectXExp;
  ExpressionStatement rectYExp;
  itemDef_s **items;
	int unknown5;
};