Menu Asset (WaW): Difference between revisions

From COD Engine Research
No edit summary
mNo edit summary
 
Line 3: Line 3:
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.
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.


enum operationEnum
<syntaxhighlight lang="cpp">
{
enum operationEnum
  OP_NOOP = 0x0,
{
  OP_RIGHTPAREN = 0x1,
  OP_NOOP = 0x0,
  OP_MULTIPLY = 0x2,
  OP_RIGHTPAREN = 0x1,
  OP_DIVIDE = 0x3,
  OP_MULTIPLY = 0x2,
  OP_MODULUS = 0x4,
  OP_DIVIDE = 0x3,
  OP_ADD = 0x5,
  OP_MODULUS = 0x4,
  OP_SUBTRACT = 0x6,
  OP_ADD = 0x5,
  OP_NOT = 0x7,
  OP_SUBTRACT = 0x6,
  OP_LESSTHAN = 0x8,
  OP_NOT = 0x7,
  OP_LESSTHANEQUALTO = 0x9,
  OP_LESSTHAN = 0x8,
  OP_GREATERTHAN = 0xA,
  OP_LESSTHANEQUALTO = 0x9,
  OP_GREATERTHANEQUALTO = 0xB,
  OP_GREATERTHAN = 0xA,
  OP_EQUALS = 0xC,
  OP_GREATERTHANEQUALTO = 0xB,
  OP_NOTEQUAL = 0xD,
  OP_EQUALS = 0xC,
  OP_AND = 0xE,
  OP_NOTEQUAL = 0xD,
  OP_OR = 0xF,
  OP_AND = 0xE,
  OP_LEFTPAREN = 0x10,
  OP_OR = 0xF,
  OP_COMMA = 0x11,
  OP_LEFTPAREN = 0x10,
  OP_BITWISEAND = 0x12,
  OP_COMMA = 0x11,
  OP_BITWISEOR = 0x13,
  OP_BITWISEAND = 0x12,
  OP_BITWISENOT = 0x14,
  OP_BITWISEOR = 0x13,
  OP_BITSHIFTLEFT = 0x15,
  OP_BITWISENOT = 0x14,
  OP_BITSHIFTRIGHT = 0x16,
  OP_BITSHIFTLEFT = 0x15,
  OP_FIRSTFUNCTIONCALL = 0x17,
  OP_BITSHIFTRIGHT = 0x16,
  OP_SIN = 0x17,
  OP_FIRSTFUNCTIONCALL = 0x17,
  OP_COS = 0x18,
  OP_SIN = 0x17,
  OP_MIN = 0x19,
  OP_COS = 0x18,
  OP_MAX = 0x1A,
  OP_MIN = 0x19,
  OP_MILLISECONDS = 0x1B,
  OP_MAX = 0x1A,
  OP_DVARINT = 0x1C,
  OP_MILLISECONDS = 0x1B,
  OP_DVARBOOL = 0x1D,
  OP_DVARINT = 0x1C,
  OP_DVARFLOAT = 0x1E,
  OP_DVARBOOL = 0x1D,
  OP_DVARSTRING = 0x1F,
  OP_DVARFLOAT = 0x1E,
  OP_STAT = 0x20,
  OP_DVARSTRING = 0x1F,
  OP_UIACTIVE = 0x21,
  OP_STAT = 0x20,
  OP_FLASHBANGED = 0x22,
  OP_UIACTIVE = 0x21,
  OP_SCOPED = 0x23,
  OP_FLASHBANGED = 0x22,
  OP_SCOREBOARDVISIBLE = 0x24,
  OP_SCOPED = 0x23,
  OP_INKILLCAM = 0x25,
  OP_SCOREBOARDVISIBLE = 0x24,
  OP_PLAYERFIELD = 0x26,
  OP_INKILLCAM = 0x25,
  OP_SELECTINGLOCATION = 0x27,
  OP_PLAYERFIELD = 0x26,
  OP_TEAMFIELD = 0x28,
  OP_SELECTINGLOCATION = 0x27,
  OP_OTHERTEAMFIELD = 0x29,
  OP_TEAMFIELD = 0x28,
  OP_MARINESFIELD = 0x2A,
  OP_OTHERTEAMFIELD = 0x29,
  OP_OPFORFIELD = 0x2B,
  OP_MARINESFIELD = 0x2A,
  OP_MENUISOPEN = 0x2C,
  OP_OPFORFIELD = 0x2B,
  OP_WRITINGDATA = 0x2D,
  OP_MENUISOPEN = 0x2C,
  OP_INLOBBY = 0x2E,
  OP_WRITINGDATA = 0x2D,
  OP_INPRIVATEPARTY = 0x2F,
  OP_INLOBBY = 0x2E,
  OP_PRIVATEPARTYHOST = 0x30,
  OP_INPRIVATEPARTY = 0x2F,
  OP_PRIVATEPARTYHOSTINLOBBY = 0x31,
  OP_PRIVATEPARTYHOST = 0x30,
  OP_ALONEINPARTY = 0x32,
  OP_PRIVATEPARTYHOSTINLOBBY = 0x31,
  OP_ADSJAVELIN = 0x33,
  OP_ALONEINPARTY = 0x32,
  OP_WEAPLOCKBLINK = 0x34,
  OP_ADSJAVELIN = 0x33,
  OP_WEAPATTACKTOP = 0x35,
  OP_WEAPLOCKBLINK = 0x34,
  OP_WEAPATTACKDIRECT = 0x36,
  OP_WEAPATTACKTOP = 0x35,
  OP_SECONDSASTIME = 0x37,
  OP_WEAPATTACKDIRECT = 0x36,
  OP_TABLELOOKUP = 0x38,
  OP_SECONDSASTIME = 0x37,
  OP_LOCALIZESTRING = 0x39,
  OP_TABLELOOKUP = 0x38,
  OP_LOCALVARINT = 0x3A,
  OP_LOCALIZESTRING = 0x39,
  OP_LOCALVARBOOL = 0x3B,
  OP_LOCALVARINT = 0x3A,
  OP_LOCALVARFLOAT = 0x3C,
  OP_LOCALVARBOOL = 0x3B,
  OP_LOCALVARSTRING = 0x3D,
  OP_LOCALVARFLOAT = 0x3C,
  OP_TIMELEFT = 0x3E,
  OP_LOCALVARSTRING = 0x3D,
  OP_SECONDSASCOUNTDOWN = 0x3F,
  OP_TIMELEFT = 0x3E,
  OP_TOINT = 0x40,
  OP_SECONDSASCOUNTDOWN = 0x3F,
  OP_TOSTRING = 0x41,
  OP_TOINT = 0x40,
  OP_TOFLOAT = 0x42,
  OP_TOSTRING = 0x41,
  OP_GAMETYPENAME = 0x43,
  OP_TOFLOAT = 0x42,
  OP_GAMETYPE = 0x44,
  OP_GAMETYPENAME = 0x43,
  OP_GAMETYPEDESCRIPTION = 0x45,
  OP_GAMETYPE = 0x44,
  OP_SCORE = 0x46,
  OP_GAMETYPEDESCRIPTION = 0x45,
  OP_FRIENDSONLINE = 0x47,
  OP_SCORE = 0x46,
  OP_FOLLOWING = 0x48,
  OP_FRIENDSONLINE = 0x47,
  OP_STATRANGEBITSSET = 0x49,
  OP_FOLLOWING = 0x48,
  OP_KEYBINDING = 0x4A,
  OP_STATRANGEBITSSET = 0x49,
  OP_ACTIONSLOTUSABLE = 0x4B,
  OP_KEYBINDING = 0x4A,
  OP_HUDFADE = 0x4C,
  OP_ACTIONSLOTUSABLE = 0x4B,
  OP_MAXRECOMMENDEDPLAYERS = 0x4D,
  OP_HUDFADE = 0x4C,
  OP_ACCEPTINGINVITE = 0x4E,
  OP_MAXRECOMMENDEDPLAYERS = 0x4D,
  OP_GAMEHOST = 0x4F,
  OP_ACCEPTINGINVITE = 0x4E,
  OP_ISSPLITSCREEN = 0x50,
  OP_GAMEHOST = 0x4F,
  OP_ISSPLITSCREENHOST = 0x51,
  OP_ISSPLITSCREEN = 0x50,
  OP_SPLITSCREENNUM = 0x52,
  OP_ISSPLITSCREENHOST = 0x51,
  OP_ISCINEMATICFINISHED = 0x53,
  OP_SPLITSCREENNUM = 0x52,
  OP_ISSQUADLEADER = 0x54,
  OP_ISCINEMATICFINISHED = 0x53,
  OP_GETSQUADID = 0x55,
  OP_ISSQUADLEADER = 0x54,
  OP_ISARTILLERY = 0x56,
  OP_GETSQUADID = 0x55,
  OP_GETPLAYERSQUADID = 0x57,
  OP_ISARTILLERY = 0x56,
  OP_HASFRIENDS = 0x58,
  OP_GETPLAYERSQUADID = 0x57,
  OP_HASPENDINGFRIENDS = 0x59,
  OP_HASFRIENDS = 0x58,
  OP_HASINVITES = 0x5A,
  OP_HASPENDINGFRIENDS = 0x59,
  OP_SQUADINVITESENT = 0x5B,
  OP_HASINVITES = 0x5A,
  OP_ISINTERMISSION = 0x5C,
  OP_SQUADINVITESENT = 0x5B,
  NUM_OPERATORS = 0x5D,
  OP_ISINTERMISSION = 0x5C,
};
  NUM_OPERATORS = 0x5D,
};
enum expDataType
 
{
enum expDataType
  VAL_INT = 0x0,
{
  VAL_FLOAT = 0x1,
  VAL_INT = 0x0,
  VAL_STRING = 0x2,
  VAL_FLOAT = 0x1,
};
  VAL_STRING = 0x2,
};
struct listBoxDef_s
 
{
struct listBoxDef_s
  int startPos[4];
{
  int endPos[4];
  int startPos[4];
  int drawPadding;
  int endPos[4];
  float elementWidth;
  int drawPadding;
  float elementHeight;
  float elementWidth;
  int elementStyle;
  float elementHeight;
  int numColumns;
  int elementStyle;
  columnInfo_s columnInfo[16];
  int numColumns;
  const char *doubleClick;
  columnInfo_s columnInfo[16];
  int notselectable;
  const char *doubleClick;
  int noScrollBars;
  int notselectable;
  int usePaging;
  int noScrollBars;
  float selectBorder[4];
  int usePaging;
  float disableColor[4];
  float selectBorder[4];
  float focusColor[4];
  float disableColor[4];
  Material *selectIcon;
  float focusColor[4];
  Material *backgroundItemListbox;
  Material *selectIcon;
  Material *highlightTexture;
  Material *backgroundItemListbox;
};
  Material *highlightTexture;
};
struct editFieldDef_s
 
{
struct editFieldDef_s
  float minVal;
{
  float maxVal;
  float minVal;
  float defVal;
  float maxVal;
  float range;
  float defVal;
  int maxChars;
  float range;
  int maxCharsGotoNext;
  int maxChars;
  int maxPaintChars;
  int maxCharsGotoNext;
  int paintOffset;
  int maxPaintChars;
};
  int paintOffset;
};
struct multiDef_s
 
{
struct multiDef_s
  const char *dvarList[32];
{
  const char *dvarStr[32];
  const char *dvarList[32];
  float dvarValue[32];
  const char *dvarStr[32];
  int count;
  float dvarValue[32];
  int strDef;
  int count;
};
  int strDef;
};
union itemDefData_t
 
{
union itemDefData_t
  listBoxDef_s *listBox;
{
  editFieldDef_s *editField;
  listBoxDef_s *listBox;
  multiDef_s *multi;
  editFieldDef_s *editField;
  const char *enumDvarName;
  multiDef_s *multi;
  void *data;
  const char *enumDvarName;
};
  void *data;
};
union operandInternalDataUnion
 
{
union operandInternalDataUnion
  int intVal;
{
  float floatVal;
  int intVal;
  const char *string;
  float floatVal;
};
  const char *string;
};
struct Operand
 
{
struct Operand
  expDataType dataType;
{
  operandInternalDataUnion internals;
  expDataType dataType;
};
  operandInternalDataUnion internals;
};
union entryInternalData
 
{
union entryInternalData
  operationEnum op;
{
  Operand operand;
  operationEnum op;
};
  Operand operand;
};
struct expressionEntry
 
{
struct expressionEntry
  int type;
{
  entryInternalData data;
  int type;
};
  entryInternalData data;
};
struct statement_s
 
{
struct statement_s
  int numEntries;
{
  expressionEntry **entries;
  int numEntries;
};
  expressionEntry **entries;
};
struct ItemKeyHandler
 
{
struct ItemKeyHandler
  int key;
{
  const char *action;
  int key;
  ItemKeyHandler *next;
  const char *action;
};
  ItemKeyHandler *next;
};
struct rectDef_s
 
{
struct rectDef_s
  float x;
{
  float y;
  float x;
  float w;
  float y;
  float h;
  float w;
  int horzAlign;
  float h;
  int vertAlign;
  int horzAlign;
};
  int vertAlign;
};
struct windowDef_t
 
{
struct windowDef_t
  const char *name;
{
  rectDef_s rect;
  const char *name;
  rectDef_s rectClient;
  rectDef_s rect;
  const char *group;
  rectDef_s rectClient;
  int style;
  const char *group;
  int border;
  int style;
  int ownerDraw;
  int border;
  int ownerDrawFlags;
  int ownerDraw;
  float borderSize;
  int ownerDrawFlags;
  int staticFlags;
  float borderSize;
  int dynamicFlags[4];
  int staticFlags;
  int nextTime;
  int dynamicFlags[4];
  float foreColor[4];
  int nextTime;
  float backColor[4];
  float foreColor[4];
  float borderColor[4];
  float backColor[4];
  float outlineColor[4];
  float borderColor[4];
  Material *background;
  float outlineColor[4];
};
  Material *background;
};
struct itemDef_s
 
{
struct itemDef_s
  windowDef_t window;
{
  rectDef_s textRect[4];
  windowDef_t window;
  int type;
  rectDef_s textRect[4];
  int dataType;
  int type;
  int alignment;
  int dataType;
  int fontEnum;
  int alignment;
  int textAlignMode;
  int fontEnum;
  float textalignx;
  int textAlignMode;
  float textaligny;
  float textalignx;
  float textscale;
  float textaligny;
  int textStyle;
  float textscale;
  int gameMsgWindowIndex;
  int textStyle;
  int gameMsgWindowMode;
  int gameMsgWindowIndex;
  const char *text;
  int gameMsgWindowMode;
  int textSavegameInfo;
  const char *text;
  menuDef_t *parent;
  int textSavegameInfo;
  const char *mouseEnterText;
  menuDef_t *parent;
  const char *mouseExitText;
  const char *mouseEnterText;
  const char *mouseEnter;
  const char *mouseExitText;
  const char *mouseExit;
  const char *mouseEnter;
  const char *action;
  const char *mouseExit;
  const char *onAccept;
  const char *action;
  const char *onFocus;
  const char *onAccept;
  const char *leaveFocus;
  const char *onFocus;
  const char *dvar;
  const char *leaveFocus;
  const char *dvarTest;
  const char *dvar;
  const char *onListboxSelectionChange;
  const char *dvarTest;
  ItemKeyHandler *onKey;
  const char *onListboxSelectionChange;
  const char *enableDvar;
  ItemKeyHandler *onKey;
  int dvarFlags;
  const char *enableDvar;
  snd_alias_list_t *focusSound;
  int dvarFlags;
  float special;
  snd_alias_list_t *focusSound;
  int cursorPos[4];
  float special;
  itemDefData_t typeData;
  int cursorPos[4];
  int imageTrack;
  itemDefData_t typeData;
  statement_s visibleExp;
  int imageTrack;
  statement_s textExp;
  statement_s visibleExp;
  statement_s materialExp;
  statement_s textExp;
  statement_s rectXExp;
  statement_s materialExp;
  statement_s rectYExp;
  statement_s rectXExp;
  statement_s rectWExp;
  statement_s rectYExp;
  statement_s rectHExp;
  statement_s rectWExp;
  statement_s foreColorAExp;
  statement_s rectHExp;
};
  statement_s foreColorAExp;
};
struct menuDef_t
 
{
struct menuDef_t
  windowDef_t window;
{
  const char *font;
  windowDef_t window;
  int fullScreen;
  const char *font;
  int itemCount;
  int fullScreen;
  int fontIndex;
  int itemCount;
  int cursorItem[4];
  int fontIndex;
  int fadeCycle;
  int cursorItem[4];
  float fadeClamp;
  int fadeCycle;
  float fadeAmount;
  float fadeClamp;
  float fadeInAmount;
  float fadeAmount;
  float blurRadius;
  float fadeInAmount;
  const char *onOpen;
  float blurRadius;
  const char *onFocus;
  const char *onOpen;
  const char *onClose;
  const char *onFocus;
  const char *onESC;
  const char *onClose;
  ItemKeyHandler *onKey;
  const char *onESC;
  statement_s visibleExp;
  ItemKeyHandler *onKey;
  const char *allowedBinding;
  statement_s visibleExp;
  const char *soundName;
  const char *allowedBinding;
  int imageTrack;
  const char *soundName;
  float focusColor[4];
  int imageTrack;
  float disableColor[4];
  float focusColor[4];
  statement_s rectXExp;
  float disableColor[4];
  statement_s rectYExp;
  statement_s rectXExp;
  itemDef_s **items;
  statement_s rectYExp;
};
  itemDef_s **items;
};
</syntaxhighlight>

Latest revision as of 10:48, 12 January 2014

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.

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_FIRSTFUNCTIONCALL = 0x17,
  OP_SIN = 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,
  OP_KEYBINDING = 0x4A,
  OP_ACTIONSLOTUSABLE = 0x4B,
  OP_HUDFADE = 0x4C,
  OP_MAXRECOMMENDEDPLAYERS = 0x4D,
  OP_ACCEPTINGINVITE = 0x4E,
  OP_GAMEHOST = 0x4F,
  OP_ISSPLITSCREEN = 0x50,
  OP_ISSPLITSCREENHOST = 0x51,
  OP_SPLITSCREENNUM = 0x52,
  OP_ISCINEMATICFINISHED = 0x53,
  OP_ISSQUADLEADER = 0x54,
  OP_GETSQUADID = 0x55,
  OP_ISARTILLERY = 0x56,
  OP_GETPLAYERSQUADID = 0x57,
  OP_HASFRIENDS = 0x58,
  OP_HASPENDINGFRIENDS = 0x59,
  OP_HASINVITES = 0x5A,
  OP_SQUADINVITESENT = 0x5B,
  OP_ISINTERMISSION = 0x5C,
  NUM_OPERATORS = 0x5D,
};

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

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];
  float focusColor[4];
  Material *selectIcon;
  Material *backgroundItemListbox;
  Material *highlightTexture;
};

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

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;
  const char *onListboxSelectionChange;
  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;
  statement_s foreColorAExp;
};

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