Menu Asset (MW3)

From COD Engine Research
Revision as of 04:58, 22 December 2014 by CraigChrist8239 (talk | contribs)

Notice Ghosts didn't change a single thing in this asset because Ghosts uses LuaFiles for it's menus now and so this is basically an unused asset now.

struct expression_s;
struct statement_s;

struct localVar_t
{
	int dvar;
	char *dvarName;
};

struct localData_t
{
	int numExpressions;
	expression_s **expressions;
	int numStaticVars;
	localVar_t **staticVars;
	int numStrings;
	char **strings;
};

enum expDataType 
{
	VAL_INT = 0x0,
	VAL_FLOAT = 0x1,
	VAL_STRING = 0x2,
	VAL_EXPRESSION = 0x3,
};

struct OperationStruct
{
	operationEnum op;
	int unknown;
};

union operandInternalDataUnion 
{
	int intVal;
	float floatVal;
	const char *string;
	expression_s *expression;
};

struct Operand
{
	expDataType dataType;
	operandInternalDataUnion internals;
};

struct entryInternalData
{
	OperationStruct op;
	Operand operand;
};

struct expressionEntry
{
	int type;
	entryInternalData data;
};

struct expression_s	// 0x50
{
	int numEntries;
	expressionEntry *entries;
	localData_t *loadFrom;
	char unknown[0x44];	// ?
};

struct dvarExpression_t 
{
	char *dvarName;
	expression_s *expression;
};

struct statementExpression_t 
{
	statement_s *statement;
	expression_s *expression;	// loads this first
};

union statementInternalDataUnion // 4
{
	char *data;
	statementExpression_t *statementExpression;
	statement_s *statement;
	dvarExpression_t *dvarExpression;
};

#pragma pack(push, 4)
struct statementEntry 	// 8
{
	statementInternalDataUnion data;
	char type;
};
#pragma pack(pop)

struct statement_s 	// 8
{
	int numEntries;
	statementEntry **entry;
};

struct ItemKeyHandler
{
	int key;
	statement_s *action;
	ItemKeyHandler *next;
};

#pragma pack(push, 4)
struct rectDef_s
{
	float x;
	float y;
	float w;
	float h;
	char horzAlign;
	char vertAlign;
};
#pragma pack(pop)

typedef rectDef_s Rectangle;

// sizeof = 0xB0
struct windowDef_t
{
	const char *name;	// 0x00
	Rectangle rect;
	Rectangle rectClient;
	char *group;		// 0x2C
	int style;
	int border;
	int ownerDraw;
	int ownerDrawFlags;
	float borderSize;
	int staticFlags;
	int dynamicFlags[4];
	int nextTime;
	vec4_t foreColor;
	vec4_t backColor;
	vec4_t borderColor;
	vec4_t outlineColor;
	vec4_t disableColor;
	Material *background;	// 0xAC
};

struct component_t
{
	int type;
	expression_s *expressions;
};

struct editFieldDef_s 
{
	float minVal;
	float maxVal;
	float defVal;
	float range;
	int maxChars;
	int maxCharsGotoNext;
	int maxPaintChars;
	int paintOffset;
};

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

struct listBoxDef_s	// 0x1DC
{
	char unknown1[0x1B4];
	statement_s *doubleClick;
	char unknown2[0x1C];
	Material *selectIcon;
	expression_s *expression;
};

struct newsTicker_s
{
	int textSource;
	int speed;
	int spacing;
};

union itemDefData_t
{
	listBoxDef_s *listBox;
	editFieldDef_s *editField;
	newsTicker_s *newsTicker;
	multiDef_s *multiDef;
	const char *enumDvarName;
	int *textScroll;
	void *data;
};

struct itemDef_t 	// 0x1D4
{
	windowDef_t window;
	const char *text;
	int textSaveGameInfo;
	menuDef_t *parent;
	statement_s *mouseEnterText;
	statement_s *mouseExitText;
	statement_s *mouseEnter;
	statement_s *mouseExit;
	statement_s *action;
	statement_s *accept;
	statement_s *onFocus;
	statement_s *leaveFocus;
	statement_s *unknown9;
	const char *dvar;
	const char *dvarTest;
	ItemKeyHandler *onKey;
	const char *unknown12;
	const char *unknown13;
	int dvarFlags;
	snd_alias_list_t *focusSound;
	float special;
	int cursorPos[4];
	itemDefData_t typeData;
	int numComponents;
	component_t *components;
	expression_s *visibleExp;
	expression_s *disabledExp;
	expression_s *textExp;
	expression_s *materialExp;
	char unknown[0x28];
	expression_s *unknown24;
};

// sizeof = 0x200
struct menuData_t 
{
	int fullscreen;
	int fadeCycle;
	float fadeClamp;
	float fadeAmount;
	float fadeInAmount;
	float blurRadius;
	statement_s *onOpen;
	statement_s *onRequestClose;		// loaded after onClose?
	statement_s *onClose;
	statement_s *onEsc;
	statement_s *unknown5;
	ItemKeyHandler *onKey;
	expression_s *visibleExp;
	const char *allowedBinding;
	const char *soundName;
	vec4_t focusColor;
	expression_s *unknown6;	
	expression_s *unknown7;
	expression_s *unknown8;
	expression_s *unknown9;
	expression_s *unknown10;
	expression_s *unknown11;
	expression_s *unknown12;
	int cursorItems[4];
	localData_t *localData;		// loaded first
};

// sizeof = 0xBC
struct menuDef_t 
{
	menuData_t *menuStruct;
	windowDef_t window;
	int itemCount;
	itemDef_t **items;
};