Menu Asset (BO2)

From COD Engine Research
Revision as of 23:13, 7 January 2014 by Aerosoul94 (talk | contribs)
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 entryInternalData
{
	int op;
	Operand operand;
};

struct expressionRpn
{
	int type;
	entryInternalData data;
};

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

struct rectExpData_t
{
	ExpressionStatement rectXExp;
	ExpressionStatement rectYExp;
	ExpressionStatement rectWExp;
	ExpressionStatement rectHExp;
};

struct gameMsgDef_t
{
	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
};

struct textDef_t
{
	rectDef_s textRect[4];
	int alignment;
	int fontEnum;
	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
{
	int unknown1;
	int stringSize;
	char *stringValue;
};

struct MenuRow
{
	MenuCell *cells;
	const char *eventName;
	const char *onFocusEventName;
	char unknown[0x10];
};

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
{
	char *dvarList[32];
	char *dvarStr[32];
	float dvarValue[32];
	char unknown[0xC];
};

struct profileDef_t
{
	char *profileStrList[32];
	char *profileFloatList[32];
	float profileFloat[32];
	char unknown[0xC];
};

struct editFieldDef_t
{
	char unknown1[0x14];
	int maxChars;
	int maxCharsGotoNext;
	int maxPaintChars;
	char unknown2[0x10];
};

struct enumDvarDef_t
{
	char *enumDvarName;
};

union itemDefData_t
{
	listBoxDef_t *listBox;		// 4
	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
{
	char unknown[0xC];
	ScriptCondition *next;
};

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

struct GenericEventHandler
{
	int unknown;
	GenericEventScript *eventScript;
	GenericEventHandler *next;
};

struct focusItemDef_t
{
	const char *string1;
	const char *string2;
	const char *string3;
	const char *string4;
	GenericEventHandler *onKey;
	itemDefData_t typeData;
};

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

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

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

struct UIAnimInfo
{
	int count;
	animParamsDef_t *animStates;
	char unknown[0xE4];
};

/* 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 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
{
	windowDef_t window;
	int type;
	int dataType;
	int unknown4;
	const char *dvar;
	const char *profile;
	const char *dvarTest;
	const char *enableDvar;
	int enableFlags;		// 1=enableDvar, 2=disableDvar, 4=showDvar, 8=hideDvar, 16=focusDvar
	itemData_t typeData;
	menuDef_t *parent;
	rectExpData_t *rectExpData;
	ExpressionStatement visibleExp;
	int unknown1;
	int visibilityBits[4];
	ExpressionStatement foreColorExp;
	int ui3dWindowId;
	ItemKeyHandler *onEvent;
	UIAnimInfo *animInfo;
	int unknown2;
};

struct menuDef_t
{
	windowDef_t window;
	char *font;
	int fullscreen;
	int ui3dWindowId;
	int itemCount;
	int fontIndex;
	int cursorItem[4];
	int fadeCycle;
	int priority;
	float fadeClamp;
	float fadeAmount;
	float fadeInAmount;
	float blurRadius;
	int openSlideSpeed;
	int closeSlideSpeed;
	int openSlideDirection;
	int closeSlideDirection;
	rectDef_s unknownRect;
	int closeFadingTime;
	int openFadingTime;
	char unknown2[0x8];
	ItemKeyHandler *onKey;
	GenericEventHandler *onEvent;
	ExpressionStatement visibleExp;
	int unknown3;
	int visibilityBits[4];
	char *allowedBinding;
	char *soundLoop;
	int unknown4;
	int control;
	float focusColor[4];
	float disableColor[4];
	ExpressionStatement rectYExp;
	ExpressionStatement rectXExp;
	itemDef_t **items;
	int unknown5;
};