Difference between revisions of "Menu Asset (BO1)"

From COD Engine Research
Jump to: navigation, search
(Created page with "__NOTOC__ Category:Assets Category:BO1 <source lang="cpp"> enum expDataType { VAL_INT = 0x0, VAL_FLOAT = 0x1, VAL_STRING = 0x2, }; union operandInternalDataUnion {...")
 
 
Line 9: Line 9:
 
VAL_STRING = 0x2,
 
VAL_STRING = 0x2,
 
};
 
};
 
+
 
union operandInternalDataUnion
 
union operandInternalDataUnion
 
{
 
{
Line 16: Line 16:
 
const char *string;
 
const char *string;
 
};
 
};
 
+
 
struct Operand
 
struct Operand
 
{
 
{
Line 22: Line 22:
 
operandInternalDataUnion internals;
 
operandInternalDataUnion internals;
 
};
 
};
 
+
union entryInternalData
+
union expressionRpnDataUnion
 
{
 
{
// if expressionEntry.type == 0
 
expFunctionEnum op;
 
// else
 
 
Operand operand;
 
Operand operand;
 +
void *cmd;
 +
int cmdIdx;
 
};
 
};
 
+
 
struct expressionRpn
 
struct expressionRpn
 
{
 
{
 
int type;
 
int type;
entryInternalData data;
+
expressionRpnDataUnion data;
 
};
 
};
 
+
 
struct ExpressionStatement // size = 0x10
 
struct ExpressionStatement // size = 0x10
 
{
 
{
char *string1;
+
char *filename;
int unknown;
+
int line;
int numEntries;
+
int numRpn;
 
expressionRpn *rpn; // count = unk1Count;
 
expressionRpn *rpn; // count = unk1Count;
 
};
 
};
 
+
struct rectExpData_t // size = 0x40
+
struct rectData_t // size = 0x40
 
{
 
{
 
ExpressionStatement rectXExp;
 
ExpressionStatement rectXExp;
Line 52: Line 51:
 
ExpressionStatement rectHExp;
 
ExpressionStatement rectHExp;
 
};
 
};
 
+
struct gameMsgDef_t // 8
+
struct gameMsgDef_s // 8
 
{
 
{
int gamemsgwindowindex;
+
int gameMsgWindowIndex;
int gamemsgwindowmode;
+
int gameMsgWindowMode;
 
};
 
};
 
+
 
struct focusItemDef_t;
 
struct focusItemDef_t;
 
+
 
union textData_t
 
union textData_t
 
{
 
{
 
focusItemDef_t *focusItemDef; // 3,4,5,7,8,9,10,11,12,13,14,16,20,21,22,30
 
focusItemDef_t *focusItemDef; // 3,4,5,7,8,9,10,11,12,13,14,16,20,21,22,30
 
gameMsgDef_t *gameMsgDef; // 15
 
gameMsgDef_t *gameMsgDef; // 15
 +
void *data;
 
};
 
};
  
struct textDef_t // 0xD4
+
struct textExp_s
 +
{
 +
ExpressionStatement textExp;
 +
};
 +
 +
struct textDef_s // 0xD4
 
{
 
{
 
rectDef_s textRect[4];
 
rectDef_s textRect[4];
 
int alignment;
 
int alignment;
 
int fontEnum;
 
int fontEnum;
int textSaveGameInfo;
+
int itemFlags;
 
int textAlignMode;
 
int textAlignMode;
 
float textalignx;
 
float textalignx;
Line 87: Line 92:
 
float shadowOffset;
 
float shadowOffset;
 
int unknown;
 
int unknown;
char *text;
+
const char *text;
ExpressionStatement *textExpData;
+
textExp_s *textExpData;
textData_t textData;
+
textDefData_t textData;
 
};
 
};
 
+
 
struct MenuCell // 0xC
 
struct MenuCell // 0xC
 
{
 
{
int unknown1;
+
int type;
int stringSize;
+
int maxChars;
char *stringValue; // size = stringSize
+
char *stringValue; // size = maxChars
 
};
 
};
 
+
 
struct MenuRow // 0x18
 
struct MenuRow // 0x18
 
{
 
{
 
MenuCell *cells; // count = listBoxDef_s.count1
 
MenuCell *cells; // count = listBoxDef_s.count1
const char *eventName;
+
char *eventName;
const char *onFocusEventName;
+
char *onFocusEventName;
char unknown[0x10];
+
bool disableArg;
 +
int status;
 +
int name;
 
};
 
};
  
 +
struct columnInfo_s
 +
{
 +
int elementStyle;
 +
int maxChars;
 +
rectDef_s rect;
 +
};
 +
 
struct listBoxDef_t // 0x2BC
 
struct listBoxDef_t // 0x2BC
 
{
 
{
char unknown1[0x14];
+
int mousePos;
 +
#ifdef PC
 +
int cursorPos;
 +
int startPos;
 +
int endPos;
 +
#else
 +
int cursorPos[4];
 +
int startPos[4];
 +
int endPos[4];
 +
#endif
 +
int drawPadding;
 
float elementwidth;
 
float elementwidth;
 
float elementheight;
 
float elementheight;
char unknown2[8];
+
int numColumns;
int elementtype;
+
float special;
char unknown3[0x21C];
+
columnInfo_s columnInfo[16];
 
int notselectable;
 
int notselectable;
 
int noScrollBars;
 
int noScrollBars;
Line 126: Line 150:
 
Material *backgroundItemListBox;
 
Material *backgroundItemListBox;
 
Material *highlightTexture;
 
Material *highlightTexture;
int bNoBlinkingHighlight;
+
int noBlinkingHighlight;
 
MenuRow *rows; // count = numRows
 
MenuRow *rows; // count = numRows
int numRows;
+
int maxRows;
int unknown4;
+
int rowCount;
 
};
 
};
 
+
struct multiDef_t // 0x18C
+
struct multiDef_s // 0x18C
 
{
 
{
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 // 0x18C
+
struct editFieldDef_s // 0x30
{
+
char *profileStrList[32];
+
char *profileFloatList[32];
+
float profileFloat[32];
+
char unknown[0xC];
+
};
+
 
+
struct editFieldDef_t // 0x30
+
 
{
 
{
char unknown1[0x14];
+
#ifdef PC
 +
int cursorPos[1];
 +
#else
 +
int cursorPos[4];
 +
#endif
 +
float minVal;
 +
float maxVal;
 +
float defVal;
 +
float range;
 
int maxChars;
 
int maxChars;
 
int maxCharsGotoNext;
 
int maxCharsGotoNext;
 
int maxPaintChars;
 
int maxPaintChars;
char unknown2[0x10];
+
int paintOffset;
 
};
 
};
 
+
struct enumDvarDef_t
+
struct enumDvarDef_s
 
{
 
{
 
char *enumDvarName;
 
char *enumDvarName;
 
};
 
};
 
+
union itemDefData_t
+
union focusDefData_t
 
{
 
{
listBoxDef_t *listBox; // 4
+
listBoxDef_s *listBox; // 4
multiDef_t *multiDef; // 10
+
multiDef_s *multiDef; // 10
profileDef_t *profileDef; // 22
+
editFieldDef_s *editField; // 5,7,8,9,12,13,14,16,22,30
editFieldDef_t *editField; // 5,7,8,9,12,13,14,16,30
+
enumDvarDef_s *enumDvarDef; // 11
enumDvarDef_t *enumDvarDef; // 11
+
 
void *data;
 
void *data;
 
};
 
};
 
+
 
struct ScriptCondition // 0x10
 
struct ScriptCondition // 0x10
 
{
 
{
char unknown[0xC];
+
bool fireOnTrue;
 +
int constructId;
 +
int blockId;
 
ScriptCondition *next;
 
ScriptCondition *next;
 
};
 
};
 
+
 
struct GenericEventScript // 0x2C
 
struct GenericEventScript // 0x2C
 
{
 
{
 
ScriptCondition *prerequisites;
 
ScriptCondition *prerequisites;
char unknown1[0x18];
+
ExpressionStatement condition;
char *string1;
+
int type;
char unknown2[0xC];
+
bool fireOnTrue;
 +
const char *action;
 +
int blockId;
 +
int constructId;
 
GenericEventScript *next;
 
GenericEventScript *next;
 
};
 
};
 
+
 
struct GenericEventHandler // 0xC
 
struct GenericEventHandler // 0xC
 
{
 
{
int unknown;
+
const char *name;
 
GenericEventScript *eventScript;
 
GenericEventScript *eventScript;
 
GenericEventHandler *next;
 
GenericEventHandler *next;
 
};
 
};
  
 +
 
struct focusItemDef_t // 0x18
 
struct focusItemDef_t // 0x18
 
{
 
{
char *string1;
+
const char *mouseEnterText;
char *string2;
+
const char *mouseExitText;
char *string3;
+
const char *mouseEnter;
char *string4;
+
const char *mouseExit;
 
GenericEventHandler *onKey;
 
GenericEventHandler *onKey;
itemDefData_t typeData;
+
focusDefData_t typeData;
 
};
 
};
  
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 ownerDrawDef_s
 +
{
 +
ExpressionStatement dataExp;
 +
};
 +
 +
union itemDefData_t
 +
{
 +
textDef_s *textData; // 1,3,4,5,7,8,9,10,11,12,13,14,15,16,18,20,22
 +
imageDef_s *imageDef; // 2
 +
focusItemDef_s *blankButtonDef; // 19, 21
 +
ownerDrawDef_s *ownerDrawDef; // 6
 +
void *data;
 +
};
 +
 
struct ItemKeyHandler // size = 0xC
 
struct ItemKeyHandler // size = 0xC
 
{
 
{
Line 219: Line 260:
 
ItemKeyHandler *next;
 
ItemKeyHandler *next;
 
};
 
};
 
+
 
struct animParamsDef_t // size = 0x6C
 
struct animParamsDef_t // size = 0x6C
 
{
 
{
const char *state;
+
const char *name;
char unknown[0x64];
+
rectDef_s rectClient;
 +
float borderSize;
 +
float foreColor[4];
 +
float backColor[4];
 +
float borderColor[4];
 +
float outlineColor[4];
 +
float textScale;
 +
float rotation;
 
ItemKeyHandler *onEvent;
 
ItemKeyHandler *onEvent;
 
};
 
};
 
+
 
struct UIAnimInfo // 0xEC
 
struct UIAnimInfo // 0xEC
 
{
 
{
 
int count;
 
int count;
 
animParamsDef_t *animStates;
 
animParamsDef_t *animStates;
char unknown[0xE4];
+
animParamsDef_t currentAnimState;
 +
animParamsDef_t nextAnimState;
 +
int animating;
 +
int animStartTime;
 +
int animDuration;
 
};
 
};
 
+
 
/* dynamicFlags */
 
/* dynamicFlags */
 
#define WINDOWDYNAMIC_VISIBLE 0x00000004
 
#define WINDOWDYNAMIC_VISIBLE 0x00000004
 
#define WINDOWDYNAMIC_CHECKMASK 0x000FFFFF
 
#define WINDOWDYNAMIC_CHECKMASK 0x000FFFFF
 
+
 
/* staticFlags */
 
/* staticFlags */
 
#define WINDOWSTATIC_DECORATION 0x00100000
 
#define WINDOWSTATIC_DECORATION 0x00100000
Line 250: Line 302:
 
#define WINDOWSTATIC_HIDDENDURINGUI 0x40000000
 
#define WINDOWSTATIC_HIDDENDURINGUI 0x40000000
 
#define WINDOWSTATIC_CHECKMASK 0xFFF00000
 
#define WINDOWSTATIC_CHECKMASK 0xFFF00000
 
+
 
struct rectDef_s
 
struct rectDef_s
 
{
 
{
Line 260: Line 312:
 
int vertAlign;
 
int vertAlign;
 
};
 
};
 
+
 
struct windowDef_t // 0xB0
 
struct windowDef_t // 0xB0
 
{
 
{
Line 270: Line 322:
 
char border;
 
char border;
 
char modal;
 
char modal;
char frameSide;
+
char frameSides;
float frame[2];
+
float frameTexSize;
 +
float frameSize;
 
int ownerDraw;
 
int ownerDraw;
 
int ownerDrawFlag;
 
int ownerDrawFlag;
 
float borderSize;
 
float borderSize;
 
int staticFlags;
 
int staticFlags;
 +
#ifdef PC
 +
int dynamicFlags[1];
 +
#else
 
int dynamicFlags[4];
 
int dynamicFlags[4];
 +
#endif
 
int nextTime;
 
int nextTime;
 
float foreColor[4];
 
float foreColor[4];
Line 285: Line 342:
 
Material *background;
 
Material *background;
 
};
 
};
 
+
 
struct itemDef_t // size = 0x118
 
struct itemDef_t // size = 0x118
 
{
 
{
Line 291: Line 348:
 
int type;
 
int type;
 
int dataType;
 
int dataType;
int unknown1;
+
int imageTrack;
 
const char *dvar;
 
const char *dvar;
const char *profile;
 
 
const char *dvarTest;
 
const char *dvarTest;
int enableFlags; // (1=enableDvar,2=disableDvar,4=showDvar,8=hideDvar,16=focusDvar)
+
const char *enableDvar;
itemData_t typeData;
+
int dvarFlags; // (1=enableDvar,2=disableDvar,4=showDvar,8=hideDvar,16=focusDvar)
 +
itemDefData_t typeData;
 
menuDef_t *parent;
 
menuDef_t *parent;
rectExpData_t *rectExpData;
+
rectData_s *rectExpData;
 
ExpressionStatement visibleExp;
 
ExpressionStatement visibleExp;
int visibilityBits[4];
+
unsigned __int64 showBits;
 +
unsigned __int64 hideBits;
 
ExpressionStatement foreColorExp;
 
ExpressionStatement foreColorExp;
 
int ui3dWindowId;
 
int ui3dWindowId;
Line 308: Line 366:
 
};
 
};
  
 +
#pragma pack(push, 8)
 
struct menuDef_t // size = 0x1A8
 
struct menuDef_t // size = 0x1A8
 
{
 
{
Line 316: Line 375:
 
int itemCount;
 
int itemCount;
 
int fontIndex;
 
int fontIndex;
 +
#ifdef
 +
int cursorItem[1];
 +
#else
 
int cursorItem[4];
 
int cursorItem[4];
 +
#endif
 
int fadeCycle;
 
int fadeCycle;
 
int priority;
 
int priority;
Line 327: Line 390:
 
int openSlideDirection;
 
int openSlideDirection;
 
int closeSlideDirection;
 
int closeSlideDirection;
rectDef_s unknownRect;
+
rectDef_s initalRectInfo;
int closeFadingTime;
+
 
int openFadingTime;
 
int openFadingTime;
char unknown2[0x8];
+
int closeFadingTime;
ItemKeyHandler *onKey;
+
int fadeTimeCounter;
 +
int slideTimeCounter;
 
GenericEventHandler *onEvent;
 
GenericEventHandler *onEvent;
 +
ItemKeyHandler *onKey;
 
ExpressionStatement visibleExp;
 
ExpressionStatement visibleExp;
int unknown3;
+
// 4 byte padding
int visibilityBits[4];
+
unsigned __int64 showBits;
 +
unsigned __int64 hideBits;
 
const char *allowedBinding;
 
const char *allowedBinding;
 
const char *soundLoop;
 
const char *soundLoop;
int unknown4;
+
int imageTrack;
 
int control;
 
int control;
 
float focusColor[4];
 
float focusColor[4];
Line 345: Line 410:
 
ExpressionStatement rectXExp;
 
ExpressionStatement rectXExp;
 
itemDef_t **items;
 
itemDef_t **items;
int unknown5;
+
// 4 byte padding
 
};
 
};
 +
#pragma pack(pop)
 
</source>
 
</source>

Latest revision as of 13:57, 25 December 2014

enum expDataType
{
	VAL_INT = 0x0,
	VAL_FLOAT = 0x1,
	VAL_STRING = 0x2,
};
 
union operandInternalDataUnion
{
	int intVal;
	float floatVal;
	const char *string;
};
 
struct Operand
{
	expDataType dataType;
	operandInternalDataUnion internals;
};
 
union expressionRpnDataUnion
{
	Operand operand;
	void *cmd;
	int cmdIdx;
};
 
struct expressionRpn
{
	int type;
	expressionRpnDataUnion data;
};
 
struct ExpressionStatement	// size = 0x10
{
	char *filename;
	int line;
	int numRpn;
	expressionRpn *rpn;	// count = unk1Count;
};
 
struct rectData_t	// size = 0x40
{
	ExpressionStatement rectXExp;
	ExpressionStatement rectYExp;
	ExpressionStatement rectWExp;
	ExpressionStatement rectHExp;
};
 
struct gameMsgDef_s	// 8
{
	int gameMsgWindowIndex;
	int gameMsgWindowMode;
};
 
struct focusItemDef_t;
 
union textData_t
{
	focusItemDef_t *focusItemDef;	// 3,4,5,7,8,9,10,11,12,13,14,16,20,21,22,30
	gameMsgDef_t *gameMsgDef;	// 15
	void *data;
};
 
struct textExp_s
{
	ExpressionStatement textExp;
};
 
struct textDef_s	// 0xD4
{
	rectDef_s textRect[4];
	int alignment;
	int fontEnum;
	int itemFlags;
	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;
	const char *text;
	textExp_s *textExpData;
	textDefData_t textData;
};
 
struct MenuCell	// 0xC
{
	int type;
	int maxChars;
	char *stringValue;	// size = maxChars
};
 
struct MenuRow	// 0x18
{
	MenuCell *cells;	// count = listBoxDef_s.count1
	char *eventName;
	char *onFocusEventName;
	bool disableArg;
	int status;
	int name;
};
 
struct columnInfo_s
{
	int elementStyle;
	int maxChars;
	rectDef_s rect;
};
 
struct listBoxDef_t	// 0x2BC
{
	int mousePos;
#ifdef PC
	int cursorPos;
	int startPos;
	int endPos;
#else
	int cursorPos[4];
	int startPos[4];
	int endPos[4];
#endif
	int drawPadding;
	float elementwidth;
	float elementheight;
	int numColumns;
	float special;
	columnInfo_s columnInfo[16];
	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 noBlinkingHighlight;
	MenuRow *rows;	// count = numRows
	int maxRows;
	int rowCount;
};
 
struct multiDef_s	// 0x18C
{
	const char *dvarList[32];
	const char *dvarStr[32];
	float dvarValue[32];
	int count;
	int actionOnEnterPressOnly;
	int strDef;
};
 
struct editFieldDef_s	// 0x30
{
#ifdef PC
	int cursorPos[1];
#else
	int cursorPos[4];
#endif
	float minVal;
	float maxVal;
	float defVal;
	float range;
	int maxChars;
	int maxCharsGotoNext;
	int maxPaintChars;
	int paintOffset;
};
 
struct enumDvarDef_s
{
	char *enumDvarName;
};
 
union focusDefData_t
{
	listBoxDef_s *listBox;		// 4
	multiDef_s *multiDef;		// 10
	editFieldDef_s *editField;	// 5,7,8,9,12,13,14,16,22,30
	enumDvarDef_s *enumDvarDef;	// 11
	void *data;
};
 
struct ScriptCondition // 0x10
{
	bool fireOnTrue;
	int constructId;
	int blockId;
	ScriptCondition *next;
};
 
struct GenericEventScript	// 0x2C
{
	ScriptCondition *prerequisites;
	ExpressionStatement condition;
	int type;
	bool fireOnTrue;
	const char *action;
	int blockId;
	int constructId;
	GenericEventScript *next;
};
 
struct GenericEventHandler // 0xC
{
	const char *name;
	GenericEventScript *eventScript;
	GenericEventHandler *next;
};
 
 
struct focusItemDef_t	// 0x18
{
	const char *mouseEnterText;
	const char *mouseExitText;
	const char *mouseEnter;
	const char *mouseExit;
	GenericEventHandler *onKey;
	focusDefData_t typeData;
};
 
struct imageDef_s
{
	ExpressionStatement materialExp;
};
 
struct ownerDrawDef_s
{
	ExpressionStatement dataExp;
};
 
union itemDefData_t
{
	textDef_s *textData;	// 1,3,4,5,7,8,9,10,11,12,13,14,15,16,18,20,22
	imageDef_s *imageDef;		// 2
	focusItemDef_s *blankButtonDef;	// 19, 21
	ownerDrawDef_s *ownerDrawDef;	// 6
	void *data;
};
 
struct ItemKeyHandler	// size = 0xC
{
	const char *keyName;
	GenericEventScript *keyScript;
	ItemKeyHandler *next;
};
 
struct animParamsDef_t	// size = 0x6C
{
	const char *name;
	rectDef_s rectClient;
	float borderSize;
	float foreColor[4];
	float backColor[4];
	float borderColor[4];
	float outlineColor[4];
	float textScale;
	float rotation;
	ItemKeyHandler *onEvent;
};
 
struct UIAnimInfo	// 0xEC
{
	int count;
	animParamsDef_t *animStates;
	animParamsDef_t currentAnimState;
	animParamsDef_t nextAnimState;
	int animating;
	int animStartTime;
	int animDuration;
};
 
/* 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	// 0xB0
{
	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 ownerDrawFlag;
	float borderSize;
	int staticFlags;
#ifdef PC
	int dynamicFlags[1];
#else
	int dynamicFlags[4];
#endif
	int nextTime;
	float foreColor[4];
	float backColor[4];
	float borderColor[4];
	float outlineColor[4];
	float rotation;
	Material *background;
};
 
struct itemDef_t	// size = 0x118
{
	windowDef_t window;
	int type;
	int dataType;
	int imageTrack;
	const char *dvar;
	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 foreColorExp;
	int ui3dWindowId;
	ItemKeyHandler *onEvent;
	UIAnimInfo *animInfo;
	int unknown2;
};
 
#pragma pack(push, 8)
struct menuDef_t	// size = 0x1A8
{
	windowDef_t window;
	const char *font;
	int fullscreen;
	int ui3dWindowId;
	int itemCount;
	int fontIndex;
#ifdef 
	int cursorItem[1];
#else
	int cursorItem[4];
#endif
	int fadeCycle;
	int priority;
	float fadeClamp;
	float fadeAmount;
	float fadeInAmount;
	float blurRadius;
	int openSlideSpeed;
	int closeSlideSpeed;
	int openSlideDirection;
	int closeSlideDirection;
	rectDef_s initalRectInfo;
	int openFadingTime;
	int closeFadingTime;
	int fadeTimeCounter;
	int slideTimeCounter;
	GenericEventHandler *onEvent;
	ItemKeyHandler *onKey;
	ExpressionStatement visibleExp;
	// 4 byte padding
	unsigned __int64 showBits;
	unsigned __int64 hideBits;
	const char *allowedBinding;
	const char *soundLoop;
	int imageTrack;
	int control;
	float focusColor[4];
	float disableColor[4];
	ExpressionStatement rectYExp;
	ExpressionStatement rectXExp;
	itemDef_t **items;
	// 4 byte padding
};
#pragma pack(pop)