Menu Asset (BO2): Difference between revisions

From COD Engine Research
mNo edit summary
No edit summary
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,
};
 
/* 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;
};
};


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;
};
};


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


struct expressionRpn
struct expressionRpn
{
{
int type;
  int 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
struct listBoxDef_s
{
{
char unknown1[0x14];
  int mousePos;
float elementwidth;
#ifdef _XBOX || PS3 || WII_U //Note: PC only has 1 cursor, but consoles can have 4 controllers connected
float elementheight;
  int cursorPos[4];
char unknown2[8];
  int startPos[4];
int elementtype;
  int endPos[4];
char unknown3[0x21C];
#elif
int notselectable;
  int cursorPos[1];
int noScrollBars;
  int startPos[1];
int usePaging;
  int endPos[1];
float selectBorder[4];
#endif
float disableColor[4];
  int drawPadding;
float focusColor[4];
  float elementWidth;
float elementHighlightColor[4];
  float elementHeight;
float elementBackgroundColor[4];
  int numColumns;
Material *selectIcon;
  float special;
Material *backgroundItemListBox;
  columnInfo_s columnInfo[16];
Material *highlightTexture;
  int notselectable;
int bNoBlinkingHighlight;
  int noScrollBars;
MenuRow *rows;
  int usePaging;
int numRows;
  vec4_t selectBorder;
int unknown4;
  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_t
struct multiDef_s
{
{
char *dvarList[32];
  const char *dvarList[32];
char *dvarStr[32];
  const char *dvarStr[32];
float dvarValue[32];
  float dvarValue[32];
char unknown[0xC];
  int count;
  int actionOnEnterPressOnly;
  int strDef;
};
};


struct profileDef_t
struct profileMultiDef_s
{
{
char *profileStrList[32];
  const char *profileVarList[32];
char *profileFloatList[32];
  const char *profileVarStr[32];
float profileFloat[32];
  float profileVarValue[32];
char unknown[0xC];
  int count;
  int actionOnEnterPressOnly;
  int strDef;
};
};


struct editFieldDef_t
struct editFieldDef_s
{
{
char unknown1[0x14];
  int cursorPos[1];
int maxChars;
  float minVal;
int maxCharsGotoNext;
  float maxVal;
int maxPaintChars;
  float defVal;
char unknown2[0x10];
  float range;
  int maxChars;
  int maxCharsGotoNext;
  int maxPaintChars;
  int paintOffset;
};
};


struct enumDvarDef_t
struct enumDvarDef_s
{
{
char *enumDvarName;
  const char *enumDvarName;
};
};


union itemDefData_t
union focusDefData_t
{
{
listBoxDef_t *listBox; // 4
  listBoxDef_s *listBox;
multiDef_t *multiDef; // 10
  multiDef_s *multi;
profileDef_t *profileDef; // 22
  profileMultiDef_s *profileMulti;
editFieldDef_t *editField; // 5,7,8,9,12,13,14,16,30
  editFieldDef_s *editField;
enumDvarDef_t *enumDvarDef; // 11
  enumDvarDef_s *enumDvar;
void *data;
  void *data;
};
};


struct ScriptCondition
struct focusItemDef_s
{
{
char unknown[0xC];
  const char *mouseEnterText;
ScriptCondition *next;
  const char *mouseExitText;
  const char *mouseEnter;
  const char *mouseExit;
  ItemKeyHandler *onKey;
  focusDefData_t focusTypeData;
};
};


struct GenericEventScript
struct gameMsgDef_s
{
{
ScriptCondition *prerequisites;
  int gameMsgWindowIndex;
char unknown1[0x18];
  int gameMsgWindowMode;
char *string1;
char unknown2[0xC];
GenericEventScript *next;
};
};


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


struct focusItemDef_t
struct textDef_s
{
{
const char *string1;
#ifdef _XBOX || PS3 || WII_U //Note: PC only has 1 cursor, but consoles can have 4 controllers connected
const char *string2;
  rectDef_s textRect[4];
const char *string3;
#elif
const char *string4;
  rectDef_s textRect[1];
GenericEventHandler *onKey;
#endif
itemDefData_t typeData;
  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;
};
};


union itemData_t
struct imageDef_s
{
{
textDef_t *textData; // 1,3,4,5,7,8,9,10,11,12,13,14,15,16,18,20,22
  ExpressionStatement materialExp;
ExpressionStatement *imageDef; // 2
ExpressionStatement *ownerDrawDef; // 6
focusItemDef_t *focusItemDef; // 19, 21
void *data;
};
};


struct ItemKeyHandler
struct ownerDrawDef_s
{
{
const char *keyName;
  ExpressionStatement dataExp;
GenericEventScript *keyScript;
ItemKeyHandler *next;
};
};


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


struct UIAnimInfo
struct windowDef_t
{
{
int count;
  const char *name;
animParamsDef_t *animStates;
  rectDef_s rect;
char unknown[0xE4];
  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;
};
};


/* dynamicFlags */
struct animParamsDef_t
#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;
  const char *name;
float y;
  rectDef_s rectClient;
float w;
  float borderSize;
float h;
  vec4_t foreColor;
int horzAlign;
  vec4_t backColor;
int vertAlign;
  vec4_t borderColor;
  vec4_t outlineColor;
  float textScale;
  float rotation;
  GenericEventHandler *onEvent;
};
};


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


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];
#ifdef _XBOX || PS3 || WII_U //Note: PC only has 1 cursor, but consoles can have 4 controllers connected
int fadeCycle;
  int cursorItem[4];
int priority;
#elif
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>

Revision as of 01:58, 22 December 2014

enum expDataType
{
  VAL_INT = 0x0,
  VAL_FLOAT = 0x1,
  VAL_STRING = 0x2,
  VAL_ADDRESS = 0x3,
  VAL_DVAR = 0x4,
};

/* 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;
};

union operandInternalDataUnion
{
  int intVal;
  float floatVal;
  const char *string;
  dvar_t *dvar;
};

struct Operand
{
  expDataType dataType;
  operandInternalDataUnion internals;
};

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

struct expressionRpn
{
  int 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;
#ifdef _XBOX || PS3 || WII_U			//Note: PC only has 1 cursor, but consoles can have 4 controllers connected
  int cursorPos[4];
  int startPos[4];
  int endPos[4];
#elif
  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
{
#ifdef _XBOX || PS3 || WII_U			//Note: PC only has 1 cursor, but consoles can have 4 controllers connected
  rectDef_s textRect[4];
#elif
  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;
};

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;
#ifdef _XBOX || PS3 || WII_U			//Note: PC only has 1 cursor, but consoles can have 4 controllers connected
  int cursorItem[4];
#elif
  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;
};