Menu Asset (CoD4): Difference between revisions

From COD Engine Research
No edit summary
No edit summary
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
__NOTOC__
[[Category:Assets]]
[[Category:Assets]]
[[Category:CoD4]]
[[Category:CoD4]]
Menu asset's store information for most menu's you see in the game. Each menu is made up of many item's such as labels, menu options, images, etc. Both menu's and items use their own data structure, each having info such as color, text, font, and more.
<syntaxhighlight lang="cpp">
enum operationEnum
enum operationEnum
{
{
  OP_NOOP = 0x0,
  OP_NOOP = 0x0,
  OP_RIGHTPAREN = 0x1,
  OP_RIGHTPAREN = 0x1,
  OP_MULTIPLY = 0x2,
  OP_MULTIPLY = 0x2,
  OP_DIVIDE = 0x3,
  OP_DIVIDE = 0x3,
  OP_MODULUS = 0x4,
  OP_MODULUS = 0x4,
  OP_ADD = 0x5,
  OP_ADD = 0x5,
  OP_SUBTRACT = 0x6,
  OP_SUBTRACT = 0x6,
  OP_NOT = 0x7,
  OP_NOT = 0x7,
  OP_LESSTHAN = 0x8,
  OP_LESSTHAN = 0x8,
  OP_LESSTHANEQUALTO = 0x9,
  OP_LESSTHANEQUALTO = 0x9,
  OP_GREATERTHAN = 0xA,
  OP_GREATERTHAN = 0xA,
  OP_GREATERTHANEQUALTO = 0xB,
  OP_GREATERTHANEQUALTO = 0xB,
  OP_EQUALS = 0xC,
  OP_EQUALS = 0xC,
  OP_NOTEQUAL = 0xD,
  OP_NOTEQUAL = 0xD,
  OP_AND = 0xE,
  OP_AND = 0xE,
  OP_OR = 0xF,
  OP_OR = 0xF,
  OP_LEFTPAREN = 0x10,
  OP_LEFTPAREN = 0x10,
  OP_COMMA = 0x11,
  OP_COMMA = 0x11,
  OP_BITWISEAND = 0x12,
  OP_BITWISEAND = 0x12,
  OP_BITWISEOR = 0x13,
  OP_BITWISEOR = 0x13,
  OP_BITWISENOT = 0x14,
  OP_BITWISENOT = 0x14,
  OP_BITSHIFTLEFT = 0x15,
  OP_BITSHIFTLEFT = 0x15,
  OP_BITSHIFTRIGHT = 0x16,
  OP_BITSHIFTRIGHT = 0x16,
  OP_SIN = 0x17,
  OP_SIN = 0x17,
  OP_FIRSTFUNCTIONCALL = 0x17,
  OP_FIRSTFUNCTIONCALL = 0x17,
  OP_COS = 0x18,
  OP_COS = 0x18,
  OP_MIN = 0x19,
  OP_MIN = 0x19,
  OP_MAX = 0x1A,
  OP_MAX = 0x1A,
  OP_MILLISECONDS = 0x1B,
  OP_MILLISECONDS = 0x1B,
  OP_DVARINT = 0x1C,
  OP_DVARINT = 0x1C,
  OP_DVARBOOL = 0x1D,
  OP_DVARBOOL = 0x1D,
  OP_DVARFLOAT = 0x1E,
  OP_DVARFLOAT = 0x1E,
  OP_DVARSTRING = 0x1F,
  OP_DVARSTRING = 0x1F,
  OP_STAT = 0x20,
  OP_STAT = 0x20,
  OP_UIACTIVE = 0x21,
  OP_UIACTIVE = 0x21,
  OP_FLASHBANGED = 0x22,
  OP_FLASHBANGED = 0x22,
  OP_SCOPED = 0x23,
  OP_SCOPED = 0x23,
  OP_SCOREBOARDVISIBLE = 0x24,
  OP_SCOREBOARDVISIBLE = 0x24,
  OP_INKILLCAM = 0x25,
  OP_INKILLCAM = 0x25,
  OP_PLAYERFIELD = 0x26,
  OP_PLAYERFIELD = 0x26,
  OP_SELECTINGLOCATION = 0x27,
  OP_SELECTINGLOCATION = 0x27,
  OP_TEAMFIELD = 0x28,
  OP_TEAMFIELD = 0x28,
  OP_OTHERTEAMFIELD = 0x29,
  OP_OTHERTEAMFIELD = 0x29,
  OP_MARINESFIELD = 0x2A,
  OP_MARINESFIELD = 0x2A,
  OP_OPFORFIELD = 0x2B,
  OP_OPFORFIELD = 0x2B,
  OP_MENUISOPEN = 0x2C,
  OP_MENUISOPEN = 0x2C,
  OP_WRITINGDATA = 0x2D,
  OP_WRITINGDATA = 0x2D,
  OP_INLOBBY = 0x2E,
  OP_INLOBBY = 0x2E,
  OP_INPRIVATEPARTY = 0x2F,
  OP_INPRIVATEPARTY = 0x2F,
  OP_PRIVATEPARTYHOST = 0x30,
  OP_PRIVATEPARTYHOST = 0x30,
  OP_PRIVATEPARTYHOSTINLOBBY = 0x31,
  OP_PRIVATEPARTYHOSTINLOBBY = 0x31,
  OP_ALONEINPARTY = 0x32,
  OP_ALONEINPARTY = 0x32,
  OP_ADSJAVELIN = 0x33,
  OP_ADSJAVELIN = 0x33,
  OP_WEAPLOCKBLINK = 0x34,
  OP_WEAPLOCKBLINK = 0x34,
  OP_WEAPATTACKTOP = 0x35,
  OP_WEAPATTACKTOP = 0x35,
  OP_WEAPATTACKDIRECT = 0x36,
  OP_WEAPATTACKDIRECT = 0x36,
  OP_SECONDSASTIME = 0x37,
  OP_SECONDSASTIME = 0x37,
  OP_TABLELOOKUP = 0x38,
  OP_TABLELOOKUP = 0x38,
  OP_LOCALIZESTRING = 0x39,
  OP_LOCALIZESTRING = 0x39,
  OP_LOCALVARINT = 0x3A,
  OP_LOCALVARINT = 0x3A,
  OP_LOCALVARBOOL = 0x3B,
  OP_LOCALVARBOOL = 0x3B,
  OP_LOCALVARFLOAT = 0x3C,
  OP_LOCALVARFLOAT = 0x3C,
  OP_LOCALVARSTRING = 0x3D,
  OP_LOCALVARSTRING = 0x3D,
  OP_TIMELEFT = 0x3E,
  OP_TIMELEFT = 0x3E,
  OP_SECONDSASCOUNTDOWN = 0x3F,
  OP_SECONDSASCOUNTDOWN = 0x3F,
  OP_TOINT = 0x40,
  OP_TOINT = 0x40,
  OP_TOSTRING = 0x41,
  OP_TOSTRING = 0x41,
  OP_TOFLOAT = 0x42,
  OP_TOFLOAT = 0x42,
  OP_GAMETYPENAME = 0x43,
  OP_GAMETYPENAME = 0x43,
  OP_GAMETYPE = 0x44,
  OP_GAMETYPE = 0x44,
  OP_GAMETYPEDESCRIPTION = 0x45,
  OP_GAMETYPEDESCRIPTION = 0x45,
  OP_SCORE = 0x46,
  OP_SCORE = 0x46,
  OP_FRIENDSONLINE = 0x47,
  OP_FRIENDSONLINE = 0x47,
  OP_FOLLOWING = 0x48,
  OP_FOLLOWING = 0x48,
  OP_STATRANGEBITSSET = 0x49,
  OP_STATRANGEBITSSET = 0x49,
  NUM_OPERATORS = 0x4A,
  NUM_OPERATORS = 0x4A,
};
};
 
struct listBoxDef_s
enum expDataType
{
{
  int startPos[4];
  VAL_INT = 0x0,
  int endPos[4];
  VAL_FLOAT = 0x1,
  int drawPadding;
  VAL_STRING = 0x2,
  float elementWidth;
};
  float elementHeight;
 
  int elementStyle;
struct columnInfo_s
  int numColumns;
{
  columnInfo_s columnInfo[16];
  int pos;
  const char *doubleClick;
  int width;
  int notselectable;
  int maxChars;
  int noScrollBars;
  int alignment;
  int usePaging;
};
  float selectBorder[4];
 
  float disableColor[4];
struct listBoxDef_s
  Material *selectIcon;
{
};
  int startPos[4];
  int endPos[4];
struct editFieldDef_s
  int drawPadding;
{
  float elementWidth;
  float minVal;
  float elementHeight;
  float maxVal;
  int elementStyle;
  float defVal;
  int numColumns;
  float range;
  columnInfo_s columnInfo[16];
  int maxChars;
  const char *doubleClick;
  int maxCharsGotoNext;
  int notselectable;
  int maxPaintChars;
  int noScrollBars;
  int paintOffset;
  int usePaging;
};
  float selectBorder[4];
  float disableColor[4];
struct multiDef_s
  Material *selectIcon;
{
};
  const char *dvarList[32];
 
  const char *dvarStr[32];
struct editFieldDef_s
  float dvarValue[32];
{
  int count;
  float minVal;
  int strDef;
  float maxVal;
};
  float defVal;
  float range;
union itemDefData_t
  int maxChars;
{
  int maxCharsGotoNext;
  listBoxDef_s *listBox;
  int maxPaintChars;
  editFieldDef_s *editField;
  int paintOffset;
  multiDef_s *multi;
};
  const char *enumDvarName;
 
  void *data;
struct multiDef_s
};
{
  const char *dvarList[32];
union operandInternalDataUnion
  const char *dvarStr[32];
{
  float dvarValue[32];
  int intVal;
  int count;
  float floatVal;
  int strDef;
  const char *string;
};
};
 
union itemDefData_t
struct Operand
{
{
  listBoxDef_s *listBox;
  expDataType dataType;
  editFieldDef_s *editField;
  operandInternalDataUnion internals;
  multiDef_s *multi;
};
  const char *enumDvarName;
  void *data;
union entryInternalData
};
{
 
  operationEnum op;
union operandInternalDataUnion
  Operand operand;
{
};
  int intVal;
  float floatVal;
struct expressionEntry
  const char *string;
{
};
  int type;
 
  entryInternalData data;
struct Operand
};
{
  expDataType dataType;
struct statement_s
  operandInternalDataUnion internals;
{
};
  int numEntries;
 
  expressionEntry **entries;
union entryInternalData
};
{
  operationEnum op;
struct ItemKeyHandler
  Operand operand;
{
};
  int key;
 
  const char *action;
struct expressionEntry
  ItemKeyHandler *next;
{
};
  int type;
  entryInternalData data;
struct rectDef_s
};
{
 
  float x;
struct statement_s
  float y;
{
  float w;
  int numEntries;
  float h;
  expressionEntry **entries;
  int horzAlign;
};
  int vertAlign;
 
};
struct ItemKeyHandler
{
struct windowDef_t
  int key;
{
  const char *action;
  const char *name;
  ItemKeyHandler *next;
  rectDef_s rect;
};
  rectDef_s rectClient;
 
  const char *group;
union itemDefData_t
  int style;
{
  int border;
  listBoxDef_s *listBox;
  int ownerDraw;
  editFieldDef_s *editField;
  int ownerDrawFlags;
  multiDef_s *multi;
  float borderSize;
  const char *enumDvarName;
  int staticFlags;
  void *data;
  int dynamicFlags[4];
};
  int nextTime;
 
  float foreColor[4];
struct rectDef_s
  float backColor[4];
{
  float borderColor[4];
  float x;
  float outlineColor[4];
  float y;
  Material *background;
  float w;
};
  float h;
  int horzAlign;
struct itemDef_s
  int vertAlign;
{
};
  windowDef_t window;
 
  rectDef_s textRect[4];
struct windowDef_t
  int type;
{
  int dataType;
  const char *name;
  int alignment;
  rectDef_s rect;
  int fontEnum;
  rectDef_s rectClient;
  int textAlignMode;
  const char *group;
  float textalignx;
  int style;
  float textaligny;
  int border;
  float textscale;
  int ownerDraw;
  int textStyle;
  int ownerDrawFlags;
  int gameMsgWindowIndex;
  float borderSize;
  int gameMsgWindowMode;
  int staticFlags;
  const char *text;
  int dynamicFlags[4];
  int textSavegameInfo;
  int nextTime;
  menuDef_t *parent;
  float foreColor[4];
  const char *mouseEnterText;
  float backColor[4];
  const char *mouseExitText;
  float borderColor[4];
  const char *mouseEnter;
  float outlineColor[4];
  const char *mouseExit;
  Material *background;
  const char *action;
};
  const char *onAccept;
 
  const char *onFocus;
struct itemDef_s
  const char *leaveFocus;
{
  const char *dvar;
  windowDef_t window;
  const char *dvarTest;
  rectDef_s textRect[4];
  ItemKeyHandler *onKey;
  int type;
  const char *enableDvar;
  int dataType;
  int dvarFlags;
  int alignment;
  snd_alias_list_t *focusSound;
  int fontEnum;
  float special;
  int textAlignMode;
  int cursorPos[4];
  float textalignx;
  itemDefData_t typeData;
  float textaligny;
  int imageTrack;
  float textscale;
  statement_s visibleExp;
  int textStyle;
  statement_s textExp;
  int gameMsgWindowIndex;
  statement_s materialExp;
  int gameMsgWindowMode;
  statement_s rectXExp;
  const char *text;
  statement_s rectYExp;
  int textSavegameInfo;
  statement_s rectWExp;
  menuDef_t *parent;
  statement_s rectHExp;
  const char *mouseEnterText;
};
  const char *mouseExitText;
  const char *mouseEnter;
struct menuDef_t
  const char *mouseExit;
{
  const char *action;
  windowDef_t window;
  const char *onAccept;
  const char *font;
  const char *onFocus;
  int fullScreen;
  const char *leaveFocus;
  int itemCount;
  const char *dvar;
  int fontIndex;
  const char *dvarTest;
  int cursorItem[4];
  ItemKeyHandler *onKey;
  int fadeCycle;
  const char *enableDvar;
  float fadeClamp;
  int dvarFlags;
  float fadeAmount;
  snd_alias_list_t *focusSound;
  float fadeInAmount;
  float special;
  float blurRadius;
  int cursorPos[4];
  const char *onOpen;
  itemDefData_t typeData;
  const char *onClose;
  int imageTrack;
  const char *onESC;
  statement_s visibleExp;
  ItemKeyHandler *onKey;
  statement_s textExp;
  statement_s visibleExp;
  statement_s materialExp;
  const char *allowedBinding;
  statement_s rectXExp;
  const char *soundName;
  statement_s rectYExp;
  int imageTrack;
  statement_s rectWExp;
  float focusColor[4];
  statement_s rectHExp;
  float disableColor[4];
};
  statement_s rectXExp;
 
  statement_s rectYExp;
struct menuDef_t
  itemDef_s **items;
{
};
  windowDef_t window;
  const char *font;
  int fullScreen;
  int itemCount;
  int fontIndex;
  int cursorItem[4];
  int fadeCycle;
  float fadeClamp;
  float fadeAmount;
  float fadeInAmount;
  float blurRadius;
  const char *onOpen;
  const char *onClose;
  const char *onESC;
  ItemKeyHandler *onKey;
  statement_s visibleExp;
  const char *allowedBinding;
  const char *soundName;
  int imageTrack;
  float focusColor[4];
  float disableColor[4];
  statement_s rectXExp;
  statement_s rectYExp;
  itemDef_s **items;
};
</syntaxhighlight>

Latest revision as of 19:06, 17 March 2014

enum operationEnum
{
  OP_NOOP = 0x0,
  OP_RIGHTPAREN = 0x1,
  OP_MULTIPLY = 0x2,
  OP_DIVIDE = 0x3,
  OP_MODULUS = 0x4,
  OP_ADD = 0x5,
  OP_SUBTRACT = 0x6,
  OP_NOT = 0x7,
  OP_LESSTHAN = 0x8,
  OP_LESSTHANEQUALTO = 0x9,
  OP_GREATERTHAN = 0xA,
  OP_GREATERTHANEQUALTO = 0xB,
  OP_EQUALS = 0xC,
  OP_NOTEQUAL = 0xD,
  OP_AND = 0xE,
  OP_OR = 0xF,
  OP_LEFTPAREN = 0x10,
  OP_COMMA = 0x11,
  OP_BITWISEAND = 0x12,
  OP_BITWISEOR = 0x13,
  OP_BITWISENOT = 0x14,
  OP_BITSHIFTLEFT = 0x15,
  OP_BITSHIFTRIGHT = 0x16,
  OP_SIN = 0x17,
  OP_FIRSTFUNCTIONCALL = 0x17,
  OP_COS = 0x18,
  OP_MIN = 0x19,
  OP_MAX = 0x1A,
  OP_MILLISECONDS = 0x1B,
  OP_DVARINT = 0x1C,
  OP_DVARBOOL = 0x1D,
  OP_DVARFLOAT = 0x1E,
  OP_DVARSTRING = 0x1F,
  OP_STAT = 0x20,
  OP_UIACTIVE = 0x21,
  OP_FLASHBANGED = 0x22,
  OP_SCOPED = 0x23,
  OP_SCOREBOARDVISIBLE = 0x24,
  OP_INKILLCAM = 0x25,
  OP_PLAYERFIELD = 0x26,
  OP_SELECTINGLOCATION = 0x27,
  OP_TEAMFIELD = 0x28,
  OP_OTHERTEAMFIELD = 0x29,
  OP_MARINESFIELD = 0x2A,
  OP_OPFORFIELD = 0x2B,
  OP_MENUISOPEN = 0x2C,
  OP_WRITINGDATA = 0x2D,
  OP_INLOBBY = 0x2E,
  OP_INPRIVATEPARTY = 0x2F,
  OP_PRIVATEPARTYHOST = 0x30,
  OP_PRIVATEPARTYHOSTINLOBBY = 0x31,
  OP_ALONEINPARTY = 0x32,
  OP_ADSJAVELIN = 0x33,
  OP_WEAPLOCKBLINK = 0x34,
  OP_WEAPATTACKTOP = 0x35,
  OP_WEAPATTACKDIRECT = 0x36,
  OP_SECONDSASTIME = 0x37,
  OP_TABLELOOKUP = 0x38,
  OP_LOCALIZESTRING = 0x39,
  OP_LOCALVARINT = 0x3A,
  OP_LOCALVARBOOL = 0x3B,
  OP_LOCALVARFLOAT = 0x3C,
  OP_LOCALVARSTRING = 0x3D,
  OP_TIMELEFT = 0x3E,
  OP_SECONDSASCOUNTDOWN = 0x3F,
  OP_TOINT = 0x40,
  OP_TOSTRING = 0x41,
  OP_TOFLOAT = 0x42,
  OP_GAMETYPENAME = 0x43,
  OP_GAMETYPE = 0x44,
  OP_GAMETYPEDESCRIPTION = 0x45,
  OP_SCORE = 0x46,
  OP_FRIENDSONLINE = 0x47,
  OP_FOLLOWING = 0x48,
  OP_STATRANGEBITSSET = 0x49,
  NUM_OPERATORS = 0x4A,
};

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

struct columnInfo_s
{
  int pos;
  int width;
  int maxChars;
  int alignment;
};

struct listBoxDef_s
{
  int startPos[4];
  int endPos[4];
  int drawPadding;
  float elementWidth;
  float elementHeight;
  int elementStyle;
  int numColumns;
  columnInfo_s columnInfo[16];
  const char *doubleClick;
  int notselectable;
  int noScrollBars;
  int usePaging;
  float selectBorder[4];
  float disableColor[4];
  Material *selectIcon;
};

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

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

union itemDefData_t
{
  listBoxDef_s *listBox;
  editFieldDef_s *editField;
  multiDef_s *multi;
  const char *enumDvarName;
  void *data;
};

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

struct Operand
{
  expDataType dataType;
  operandInternalDataUnion internals;
};

union entryInternalData
{
  operationEnum op;
  Operand operand;
};

struct expressionEntry
{
  int type;
  entryInternalData data;
};

struct statement_s
{
  int numEntries;
  expressionEntry **entries;
};

struct ItemKeyHandler
{
  int key;
  const char *action;
  ItemKeyHandler *next;
};

union itemDefData_t
{
  listBoxDef_s *listBox;
  editFieldDef_s *editField;
  multiDef_s *multi;
  const char *enumDvarName;
  void *data;
};

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;
  int style;
  int border;
  int ownerDraw;
  int ownerDrawFlags;
  float borderSize;
  int staticFlags;
  int dynamicFlags[4];
  int nextTime;
  float foreColor[4];
  float backColor[4];
  float borderColor[4];
  float outlineColor[4];
  Material *background;
};

struct itemDef_s
{
  windowDef_t window;
  rectDef_s textRect[4];
  int type;
  int dataType;
  int alignment;
  int fontEnum;
  int textAlignMode;
  float textalignx;
  float textaligny;
  float textscale;
  int textStyle;
  int gameMsgWindowIndex;
  int gameMsgWindowMode;
  const char *text;
  int textSavegameInfo;
  menuDef_t *parent;
  const char *mouseEnterText;
  const char *mouseExitText;
  const char *mouseEnter;
  const char *mouseExit;
  const char *action;
  const char *onAccept;
  const char *onFocus;
  const char *leaveFocus;
  const char *dvar;
  const char *dvarTest;
  ItemKeyHandler *onKey;
  const char *enableDvar;
  int dvarFlags;
  snd_alias_list_t *focusSound;
  float special;
  int cursorPos[4];
  itemDefData_t typeData;
  int imageTrack;
  statement_s visibleExp;
  statement_s textExp;
  statement_s materialExp;
  statement_s rectXExp;
  statement_s rectYExp;
  statement_s rectWExp;
  statement_s rectHExp;
};

struct menuDef_t
{
  windowDef_t window;
  const char *font;
  int fullScreen;
  int itemCount;
  int fontIndex;
  int cursorItem[4];
  int fadeCycle;
  float fadeClamp;
  float fadeAmount;
  float fadeInAmount;
  float blurRadius;
  const char *onOpen;
  const char *onClose;
  const char *onESC;
  ItemKeyHandler *onKey;
  statement_s visibleExp;
  const char *allowedBinding;
  const char *soundName;
  int imageTrack;
  float focusColor[4];
  float disableColor[4];
  statement_s rectXExp;
  statement_s rectYExp;
  itemDef_s **items;
};