Menu Asset (MW2): Difference between revisions

From COD Engine Research
No edit summary
mNo edit summary
Line 1: Line 1:
[[Category:Assets]]
[[Category:Assets]]
[[Category:MW2]]
[[Category:MW2]]
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_STATICDVARINT = 0x17,
  OP_BITSHIFTRIGHT = 0x16,
  OP_STATICDVARBOOL = 0x18,
  OP_STATICDVARINT = 0x17,
  OP_STATICDVARFLOAT = 0x19,
  OP_STATICDVARBOOL = 0x18,
  OP_STATICDVARSTRING = 0x1A,
  OP_STATICDVARFLOAT = 0x19,
  OP_INT = 0x1B,
  OP_STATICDVARSTRING = 0x1A,
  OP_STRING = 0x1C,
  OP_INT = 0x1B,
  OP_FLOAT = 0x1D,
  OP_STRING = 0x1C,
  OP_SIN = 0x1E,
  OP_FLOAT = 0x1D,
  OP_COS = 0x1F,
  OP_SIN = 0x1E,
  OP_MIN = 0x20,
  OP_COS = 0x1F,
  OP_MAX = 0x21,
  OP_MIN = 0x20,
  OP_MILLISECONDS = 0x22,
  OP_MAX = 0x21,
  OP_DVARINT = 0x23,
  OP_MILLISECONDS = 0x22,
  OP_DVARBOOL = 0x24,
  OP_DVARINT = 0x23,
  OP_DVARFLOAT = 0x25,
  OP_DVARBOOL = 0x24,
  OP_DVARSTRING = 0x26,
  OP_DVARFLOAT = 0x25,
  OP_STAT = 0x27,
  OP_DVARSTRING = 0x26,
  OP_UIACTIVE = 0x28,
  OP_STAT = 0x27,
  OP_FLASHBANGED = 0x29,
  OP_UIACTIVE = 0x28,
  OP_USINGVEHICLE = 0x2A,
  OP_FLASHBANGED = 0x29,
  OP_MISSILECAM = 0x2B,
  OP_USINGVEHICLE = 0x2A,
  OP_SCOPED = 0x2C,
  OP_MISSILECAM = 0x2B,
  OP_SCOPEDTHERMAL = 0x2D,
  OP_SCOPED = 0x2C,
  OP_SCOREBOARDVISIBLE = 0x2E,
  OP_SCOPEDTHERMAL = 0x2D,
  OP_INKILLCAM = 0x2F,
  OP_SCOREBOARDVISIBLE = 0x2E,
  OP_INKILLCAMNPC = 0x30,
  OP_INKILLCAM = 0x2F,
  OP_PLAYERFIELD = 0x31,
  OP_INKILLCAMNPC = 0x30,
  OP_GETPERK = 0x32,
  OP_PLAYERFIELD = 0x31,
  OP_SELECTINGLOCATION = 0x33,
  OP_GETPERK = 0x32,
  OP_SELECTINGDIRECTION = 0x34,
  OP_SELECTINGLOCATION = 0x33,
  OP_TEAMFIELD = 0x35,
  OP_SELECTINGDIRECTION = 0x34,
  OP_OTHERTEAMFIELD = 0x36,
  OP_TEAMFIELD = 0x35,
  OP_MARINESFIELD = 0x37,
  OP_OTHERTEAMFIELD = 0x36,
  OP_OPFORFIELD = 0x38,
  OP_MARINESFIELD = 0x37,
  OP_MENUISOPEN = 0x39,
  OP_OPFORFIELD = 0x38,
  OP_WRITINGDATA = 0x3A,
  OP_MENUISOPEN = 0x39,
  OP_INLOBBY = 0x3B,
  OP_WRITINGDATA = 0x3A,
  OP_INPRIVATEPARTY = 0x3C,
  OP_INLOBBY = 0x3B,
  OP_PRIVATEPARTYHOST = 0x3D,
  OP_INPRIVATEPARTY = 0x3C,
  OP_PRIVATEPARTYHOSTINLOBBY = 0x3E,
  OP_PRIVATEPARTYHOST = 0x3D,
  OP_ALONEINPARTY = 0x3F,
  OP_PRIVATEPARTYHOSTINLOBBY = 0x3E,
  OP_ADSJAVELIN = 0x40,
  OP_ALONEINPARTY = 0x3F,
  OP_WEAPLOCKBLINK = 0x41,
  OP_ADSJAVELIN = 0x40,
  OP_WEAPATTACKTOP = 0x42,
  OP_WEAPLOCKBLINK = 0x41,
  OP_WEAPATTACKDIRECT = 0x43,
  OP_WEAPATTACKTOP = 0x42,
  OP_WEAPLOCKING = 0x44,
  OP_WEAPATTACKDIRECT = 0x43,
  OP_WEAPLOCKED = 0x45,
  OP_WEAPLOCKING = 0x44,
  OP_WEAPLOCKTOOCLOSE = 0x46,
  OP_WEAPLOCKED = 0x45,
  OP_WEAPLOCKSCREENPOSX = 0x47,
  OP_WEAPLOCKTOOCLOSE = 0x46,
  OP_WEAPLOCKSCREENPOSY = 0x48,
  OP_WEAPLOCKSCREENPOSX = 0x47,
  OP_SECONDSASTIME = 0x49,
  OP_WEAPLOCKSCREENPOSY = 0x48,
  OP_TABLELOOKUP = 0x4A,
  OP_SECONDSASTIME = 0x49,
  OP_TABLELOOKUPBYROW = 0x4B,
  OP_TABLELOOKUP = 0x4A,
  OP_TABLEGETROWNUM = 0x4C,
  OP_TABLELOOKUPBYROW = 0x4B,
  OP_LOCALIZESTRING = 0x4D,
  OP_TABLEGETROWNUM = 0x4C,
  OP_LOCALVARINT = 0x4E,
  OP_LOCALIZESTRING = 0x4D,
  OP_LOCALVARBOOL = 0x4F,
  OP_LOCALVARINT = 0x4E,
  OP_LOCALVARFLOAT = 0x50,
  OP_LOCALVARBOOL = 0x4F,
  OP_LOCALVARSTRING = 0x51,
  OP_LOCALVARFLOAT = 0x50,
  OP_TIMELEFT = 0x52,
  OP_LOCALVARSTRING = 0x51,
  OP_SECONDSASCOUNTDOWN = 0x53,
  OP_TIMELEFT = 0x52,
  OP_GAMEMSGWNDACTIVE = 0x54,
  OP_SECONDSASCOUNTDOWN = 0x53,
  OP_GAMETYPENAME = 0x55,
  OP_GAMEMSGWNDACTIVE = 0x54,
  OP_GAMETYPE = 0x56,
  OP_GAMETYPENAME = 0x55,
  OP_GAMETYPEDESCRIPTION = 0x57,
  OP_GAMETYPE = 0x56,
  OP_SCORE = 0x58,
  OP_GAMETYPEDESCRIPTION = 0x57,
  OP_FRIENDSONLINE = 0x59,
  OP_SCORE = 0x58,
  OP_SPECTATINGCLIENT = 0x5A,
  OP_FRIENDSONLINE = 0x59,
  OP_SPECTATINGFREE = 0x5B,
  OP_SPECTATINGCLIENT = 0x5A,
  OP_STATRANGEBITSSET = 0x5C,
  OP_SPECTATINGFREE = 0x5B,
  OP_KEYBINDING = 0x5D,
  OP_STATRANGEBITSSET = 0x5C,
  OP_ACTIONSLOTUSABLE = 0x5E,
  OP_KEYBINDING = 0x5D,
  OP_HUDFADE = 0x5F,
  OP_ACTIONSLOTUSABLE = 0x5E,
  OP_MAXRECOMMENDEDPLAYERS = 0x60,
  OP_HUDFADE = 0x5F,
  OP_ACCEPTINGINVITE = 0x61,
  OP_MAXRECOMMENDEDPLAYERS = 0x60,
  OP_ISINTERMISSION = 0x62,
  OP_ACCEPTINGINVITE = 0x61,
  OP_GAMEHOST = 0x63,
  OP_ISINTERMISSION = 0x62,
  OP_PARTYISMISSINGMAPPACK = 0x64,
  OP_GAMEHOST = 0x63,
  OP_PARTYMISSINGMAPPACKERROR = 0x65,
  OP_PARTYISMISSINGMAPPACK = 0x64,
  OP_ANYNEWMAPPACKS = 0x66,
  OP_PARTYMISSINGMAPPACKERROR = 0x65,
  OP_AMISELECTED = 0x67,
  OP_ANYNEWMAPPACKS = 0x66,
  OP_PARTYSTATUSSTRING = 0x68,
  OP_AMISELECTED = 0x67,
  OP_ATTACHEDCONTROLLERCOUNT = 0x69,
  OP_PARTYSTATUSSTRING = 0x68,
  OP_ISSPLITSCREENONLINEPOSSIBLE = 0x6A,
  OP_ATTACHEDCONTROLLERCOUNT = 0x69,
  OP_SPLITSCREENPLAYERCOUNT = 0x6B,
  OP_ISSPLITSCREENONLINEPOSSIBLE = 0x6A,
  OP_GETPLAYERDATA = 0x6C,
  OP_SPLITSCREENPLAYERCOUNT = 0x6B,
  OP_GETPLAYERDATASPLITSCREEN = 0x6D,
  OP_GETPLAYERDATA = 0x6C,
  OP_EXPERIENCEFORLEVEL = 0x6E,
  OP_GETPLAYERDATASPLITSCREEN = 0x6D,
  OP_LEVELFOREXPERIENCE = 0x6F,
  OP_EXPERIENCEFORLEVEL = 0x6E,
  OP_ISITEMUNLOCKED = 0x70,
  OP_LEVELFOREXPERIENCE = 0x6F,
  OP_ISITEMUNLOCKEDSPLITSCREEN = 0x71,
  OP_ISITEMUNLOCKED = 0x70,
  OP_DEBUGPRINT = 0x72,
  OP_ISITEMUNLOCKEDSPLITSCREEN = 0x71,
  OP_GETPLAYERDATAANYBOOLTRUE = 0x73,
  OP_DEBUGPRINT = 0x72,
  OP_WEAPONCLASSNEW = 0x74,
  OP_GETPLAYERDATAANYBOOLTRUE = 0x73,
  OP_WEAPONNAME = 0x75,
  OP_WEAPONCLASSNEW = 0x74,
  OP_ISRELOADING = 0x76,
  OP_WEAPONNAME = 0x75,
  OP_SAVEGAMEAVAILABLE = 0x77,
  OP_ISRELOADING = 0x76,
  OP_UNLOCKEDITEMCOUNT = 0x78,
  OP_SAVEGAMEAVAILABLE = 0x77,
  OP_UNLOCKEDITEMCOUNTSPLITSCREEN = 0x79,
  OP_UNLOCKEDITEMCOUNT = 0x78,
  OP_UNLOCKEDITEM = 0x7A,
  OP_UNLOCKEDITEMCOUNTSPLITSCREEN = 0x79,
  OP_UNLOCKEDITEMSPLITSCREEN = 0x7B,
  OP_UNLOCKEDITEM = 0x7A,
  OP_MAILSUBJECT = 0x7C,
  OP_UNLOCKEDITEMSPLITSCREEN = 0x7B,
  OP_MAILFROM = 0x7D,
  OP_MAILSUBJECT = 0x7C,
  OP_MAILRECEIVED = 0x7E,
  OP_MAILFROM = 0x7D,
  OP_MAILBODY = 0x7F,
  OP_MAILRECEIVED = 0x7E,
  OP_MAILLOOTLOCALIZED = 0x80,
  OP_MAILBODY = 0x7F,
  OP_MAILGIVESLOOT = 0x81,
  OP_MAILLOOTLOCALIZED = 0x80,
  OP_ANYNEWMAIL = 0x82,
  OP_MAILGIVESLOOT = 0x81,
  OP_MAILTIMETOFOLLOWUP = 0x83,
  OP_ANYNEWMAIL = 0x82,
  OP_MAILLOOTTYPE = 0x84,
  OP_MAILTIMETOFOLLOWUP = 0x83,
  OP_MAILRANLOTTERY = 0x85,
  OP_MAILLOOTTYPE = 0x84,
  OP_LOTTERYLOOTLOCALIZED = 0x86,
  OP_MAILRANLOTTERY = 0x85,
  OP_RADARISJAMMED = 0x87,
  OP_LOTTERYLOOTLOCALIZED = 0x86,
  OP_RADARJAMINTENSITY = 0x88,
  OP_RADARISJAMMED = 0x87,
  OP_RADARISENABLED = 0x89,
  OP_RADARJAMINTENSITY = 0x88,
  OP_ISEMPJAMMED = 0x8A,
  OP_RADARISENABLED = 0x89,
  OP_PLAYERADS = 0x8B,
  OP_ISEMPJAMMED = 0x8A,
  OP_WEAPONHEATACTIVE = 0x8C,
  OP_PLAYERADS = 0x8B,
  OP_WEAPONHEATVALUE = 0x8D,
  OP_WEAPONHEATACTIVE = 0x8C,
  OP_WEAPONHEATOVERHEATED = 0x8E,
  OP_WEAPONHEATVALUE = 0x8D,
  OP_GETSPLASHTEXT = 0x8F,
  OP_WEAPONHEATOVERHEATED = 0x8E,
  OP_GETSPLASHDESCRIPTION = 0x90,
  OP_GETSPLASHTEXT = 0x8F,
  OP_GETSPLASHMATERIAL = 0x91,
  OP_GETSPLASHDESCRIPTION = 0x90,
  OP_SPLASHHASICON = 0x92,
  OP_GETSPLASHMATERIAL = 0x91,
  OP_SPLASHROWNUM = 0x93,
  OP_SPLASHHASICON = 0x92,
  OP_GETFOCUSEDITEMNAME = 0x94,
  OP_SPLASHROWNUM = 0x93,
  OP_GETFOCUSEDITEMX = 0x95,
  OP_GETFOCUSEDITEMNAME = 0x94,
  OP_GETFOCUSEDITEMY = 0x96,
  OP_GETFOCUSEDITEMX = 0x95,
  OP_GETFOCUSEDITEMWIDTH = 0x97,
  OP_GETFOCUSEDITEMY = 0x96,
  OP_GETFOCUSEDITEMHEIGHT = 0x98,
  OP_GETFOCUSEDITEMWIDTH = 0x97,
  OP_GETITEMX = 0x99,
  OP_GETFOCUSEDITEMHEIGHT = 0x98,
  OP_GETITEMY = 0x9A,
  OP_GETITEMX = 0x99,
  OP_GETITEMWIDTH = 0x9B,
  OP_GETITEMY = 0x9A,
  OP_GETITEMHEIGHT = 0x9C,
  OP_GETITEMWIDTH = 0x9B,
  OP_PLAYLIST = 0x9D,
  OP_GETITEMHEIGHT = 0x9C,
  OP_SCOREBOARDEXTERNALMUTENOTICE = 0x9E,
  OP_PLAYLIST = 0x9D,
  OP_GETCLIENTMATCHDATA = 0x9F,
  OP_SCOREBOARDEXTERNALMUTENOTICE = 0x9E,
  OP_GETCLIENTMATCHDATADEF = 0xA0,
  OP_GETCLIENTMATCHDATA = 0x9F,
  OP_GETMAPNAME = 0xA1,
  OP_GETCLIENTMATCHDATADEF = 0xA0,
  OP_GETMAPIMAGE = 0xA2,
  OP_GETMAPNAME = 0xA1,
  OP_GETMAPCUSTOM = 0xA3,
  OP_GETMAPIMAGE = 0xA2,
  OP_GETMIGRATIONSTATUS = 0xA4,
  OP_GETMAPCUSTOM = 0xA3,
  OP_GETPLAYERCARDINFO = 0xA5,
  OP_GETMIGRATIONSTATUS = 0xA4,
  OP_ISOFFLINEPROFILESELECTED = 0xA6,
  OP_GETPLAYERCARDINFO = 0xA5,
  OP_COOPPLAYER = 0xA7,
  OP_ISOFFLINEPROFILESELECTED = 0xA6,
  OP_ISCOOP = 0xA8,
  OP_COOPPLAYER = 0xA7,
  OP_GETPARTYSTATUS = 0xA9,
  OP_ISCOOP = 0xA8,
  OP_GETSEARCHPARAMS = 0xAA,
  OP_GETPARTYSTATUS = 0xA9,
  OP_GETTIMEPLAYED = 0xAB,
  OP_GETSEARCHPARAMS = 0xAA,
  OP_ISSELECTEDPLAYERFRIEND = 0xAC,
  OP_GETTIMEPLAYED = 0xAB,
  OP_GETCHARBYINDEX = 0xAD,
  OP_ISSELECTEDPLAYERFRIEND = 0xAC,
  OP_GETPROFILEDATA = 0xAE,
  OP_GETCHARBYINDEX = 0xAD,
  OP_ISPROFILESIGNEDIN = 0xAF,
  OP_GETPROFILEDATA = 0xAE,
  OP_GETWAITPOPUPSTATUS = 0xB0,
  OP_ISPROFILESIGNEDIN = 0xAF,
  OP_GETNATTYPE = 0xB1,
  OP_GETWAITPOPUPSTATUS = 0xB0,
  OP_GETLOCALIZEDNATTYPE = 0xB2,
  OP_GETNATTYPE = 0xB1,
  OP_GETADJUSTEDSAFEAREAHORIZONTAL = 0xB3,
  OP_GETLOCALIZEDNATTYPE = 0xB2,
  OP_GETADJUSTEDSAFEAREAVERTICAL = 0xB4,
  OP_GETADJUSTEDSAFEAREAHORIZONTAL = 0xB3,
  OP_CONNECTIONINFO = 0xB5,
  OP_GETADJUSTEDSAFEAREAVERTICAL = 0xB4,
  OP_OFFLINEPROFILECANSAVE = 0xB6,
  OP_CONNECTIONINFO = 0xB5,
  OP_ALLSPLITSCREENPROFILESCANSAVE = 0xB7,
  OP_OFFLINEPROFILECANSAVE = 0xB6,
  OP_ALLSPLITSCREENPROFILESARESIGNEDIN = 0xB8,
  OP_ALLSPLITSCREENPROFILESCANSAVE = 0xB7,
  OP_DOWEHAVEMAPPACK = 0xB9,
  OP_ALLSPLITSCREENPROFILESARESIGNEDIN = 0xB8,
};
  OP_DOWEHAVEMAPPACK = 0xB9,
};
enum expDataType  
 
{
enum expDataType  
  VAL_INT = 0x0,
{
  VAL_FLOAT = 0x1,
  VAL_INT = 0x0,
  VAL_STRING = 0x2,
  VAL_FLOAT = 0x1,
  VAL_EXPRESSION = 0x3,
  VAL_STRING = 0x2,
};
  VAL_EXPRESSION = 0x3,
};
struct statement_s;
 
struct expression_s;
struct statement_s;
struct localData_t;
struct expression_s;
struct localData_t;
union operandInternalDataUnion  
 
{
union operandInternalDataUnion  
  int intVal;
{
  float floatVal;
  int intVal;
  const char *string;
  float floatVal;
  expression_s *expression;
  const char *string;
};
  expression_s *expression;
};
struct Operand  
 
{
struct Operand  
  expDataType dataType;
{
  operandInternalDataUnion internals;
  expDataType dataType;
};
  operandInternalDataUnion internals;
};
struct OperationStruct  
 
{
struct OperationStruct  
  operationEnum op;
{
  int unknown;
  operationEnum op;
};
  int unknown;
};
union entryInternalData  
 
{
union entryInternalData  
  OperationStruct op;
{
  Operand operand;
  OperationStruct op;
};
  Operand operand;
};
struct dvarExpression_t  
 
{
struct dvarExpression_t  
  char *dvarName;
{
  expression_s *expression;
  char *dvarName;
};
  expression_s *expression;
};
struct statementExpression_t  
 
{
struct statementExpression_t  
  statement_s *statement;
{
  expression_s *expression;  // loads this first
  statement_s *statement;
};
  expression_s *expression;  // loads this first
};
struct expressionEntry  
 
{
struct expressionEntry  
  int type;
{
  entryInternalData data;
  int type;
};
  entryInternalData data;
};
struct expression_s  
 
{
struct expression_s  
  int numEntries;
{
  expressionEntry *entries;
  int numEntries;
  localData_t *loadFrom;
  expressionEntry *entries;
  char unused[0xC];
  localData_t *loadFrom;
};
  char unused[0xC];
};
struct component_t
 
{
struct component_t
  int numEntries;
{
  expression_s *expressions;
  int numEntries;
};
  expression_s *expressions;
};
union statementInternalDataUnion  
 
{
union statementInternalDataUnion  
  char *data;
{
  statementExpression_t *statementExpression;
  char *data;
  statement_s *statement;
  statementExpression_t *statementExpression;
  dvarExpression_t *dvarExpression;
  statement_s *statement;
};
  dvarExpression_t *dvarExpression;
};
#pragma pack(push, 4)
 
struct statementEntry  
#pragma pack(push, 4)
{
struct statementEntry  
  statementInternalDataUnion data;
{
  char type;
  statementInternalDataUnion data;
};
  char type;
#pragma pack(pop)
};
#pragma pack(pop)
struct statement_s  
 
{
struct statement_s  
  int numEntries;
{
  statementEntry **statements;
  int numEntries;
};
  statementEntry **statements;
};
struct ItemKeyHandler
 
{
struct ItemKeyHandler
  int key;
{
  statement_s *statement;
  int key;
  ItemKeyHandler *next;
  statement_s *statement;
};
  ItemKeyHandler *next;
};
struct newsTicker_s
 
{
struct newsTicker_s
  int textSource;    // 0 = text input, 1 = motd
{
  int speed;
  int textSource;    // 0 = text input, 1 = motd
  int spacing;
  int speed;
  char unknown[0x10];
  int spacing;
};
  char unknown[0x10];
};
#define MAX_LB_COLUMNS 16
 
#define MAX_LB_COLUMNS 16
struct columnInfo_s  
 
{
struct columnInfo_s  
  int pos;
{
  int width;
  int pos;
  int maxChars;
  int width;
  int alignment;
  int maxChars;
};
  int alignment;
};
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[MAX_LB_COLUMNS];
  int numColumns;
  statement_s* doubleClick;
  columnInfo_s columnInfo[MAX_LB_COLUMNS];
  int notselectable;
  statement_s* doubleClick;
  int noscrollbars;
  int notselectable;
  int usepaging;
  int noscrollbars;
  vec4_t selectBorder;
  int usepaging;
  Material *selectIcon;
  vec4_t selectBorder;
};
  Material *selectIcon;
};
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;
};
#define MAX_MULTI_DVARS 32
 
#define MAX_MULTI_DVARS 32
struct multiDef_s  
 
{
struct multiDef_s  
  char *dvarList[MAX_MULTI_DVARS];
{
  char *dvarStr[MAX_MULTI_DVARS];
  char *dvarList[MAX_MULTI_DVARS];
  float dvarValue[MAX_MULTI_DVARS];
  char *dvarStr[MAX_MULTI_DVARS];
  int count;
  float dvarValue[MAX_MULTI_DVARS];
  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;
  newsTicker_s *newsTicker;
  const char *enumDvarName;
  int *textScroll; // ?
  newsTicker_s *newsTicker;
  void *data;
  int *textScroll; // ?
};
  void *data;
};
#define WINDOWDYNAMIC_VISIBLE 0x00000004
 
#define WINDOWDYNAMIC_HASFORECOLOR 0x00010000
#define WINDOWDYNAMIC_VISIBLE 0x00000004
#define WINDOWDYNAMIC_HASFORECOLOR 0x00010000
#define WINDOWSTATIC_DECORATION 0x00100000
 
#define WINDOWSTATIC_HORIZONTALSCROLL 0x00200000
#define WINDOWSTATIC_DECORATION 0x00100000
#define WINDOWSTATIC_SCREENSPACE 0x00400000
#define WINDOWSTATIC_HORIZONTALSCROLL 0x00200000
#define WINDOWSTATIC_AUTOWRAPPED 0x00800000
#define WINDOWSTATIC_SCREENSPACE 0x00400000
#define WINDOWSTATIC_POPUP 0x01000000
#define WINDOWSTATIC_AUTOWRAPPED 0x00800000
#define WINDOWSTATIC_OUTOFBOUNDSCLICK 0x02000000
#define WINDOWSTATIC_POPUP 0x01000000
#define WINDOWSTATIC_LEGACYSPLITSCREENSCALE 0x04000000
#define WINDOWSTATIC_OUTOFBOUNDSCLICK 0x02000000
#define WINDOWSTATIC_HIDDENDURINGFLASH 0x10000000
#define WINDOWSTATIC_LEGACYSPLITSCREENSCALE 0x04000000
#define WINDOWSTATIC_HIDDENDURINGSCOPE 0x20000000
#define WINDOWSTATIC_HIDDENDURINGFLASH 0x10000000
#define WINDOWSTATIC_HIDDENDURINGUI 0x40000000
#define WINDOWSTATIC_HIDDENDURINGSCOPE 0x20000000
#define WINDOWSTATIC_TEXTONLYFOCUS 0x80000000
#define WINDOWSTATIC_HIDDENDURINGUI 0x40000000
#define WINDOWSTATIC_TEXTONLYFOCUS 0x80000000
#pragma pack(push, 4)
 
struct rectDef_s  
#pragma pack(push, 4)
{
struct rectDef_s  
  float x;
{
  float y;
  float x;
  float w;
  float y;
  float h;
  float w;
  char horzAlign;
  float h;
  char vertAlign;
  char horzAlign;
};
  char vertAlign;
#pragma pack(pop)
};
#pragma pack(pop)
typedef rectDef_s Rectangle;
 
typedef rectDef_s Rectangle;
struct windowDef_t
 
{
struct windowDef_t
  const char *name;
{
  Rectangle rect;
  const char *name;
  Rectangle rectClient;
  Rectangle rect;
  const char *group;
  Rectangle 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];
  vec4_t foreColor;
  int nextTime;
  vec4_t backColor;
  vec4_t foreColor;
  vec4_t borderColor;
  vec4_t backColor;
  vec4_t outlineColor;
  vec4_t borderColor;
  vec4_t disableColor;
  vec4_t outlineColor;
  Material *background;
  vec4_t disableColor;
};
  Material *background;
};
typedef windowDef_t Window;
 
typedef windowDef_t Window;
struct itemDef_s  
 
{
struct itemDef_s  
  Window window;
{
  Rectangle textRect[4];
  Window window;
  int type;
  Rectangle textRect[4];
  int dataType;
  int type;
  int align;
  int dataType;
  int fontEnum;
  int align;
  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;
  statement_s *mouseEnterText;
  menuDef_t *parent;
  statement_s *mouseExitText;
  statement_s *mouseEnterText;
  statement_s *mouseEnter;
  statement_s *mouseExitText;
  statement_s *mouseExit;
  statement_s *mouseEnter;
  statement_s *action;
  statement_s *mouseExit;
  statement_s *accept;
  statement_s *action;
  statement_s *onFocus;
  statement_s *accept;
  statement_s *leaveFocus;
  statement_s *onFocus;
  const char *dvar;
  statement_s *leaveFocus;
  const char *dvarTest;
  const char *dvar;
  ItemKeyHandler *onKey;
  const char *dvarTest;
  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;
  int numExpressions;
  int imageTrack;
  component_t *componentExpressions;
  int numExpressions;
  expression_s *visibleExp;
  component_t *componentExpressions;
  expression_s *disabledExp;
  expression_s *visibleExp;
  expression_s *textExp;
  expression_s *disabledExp;
  expression_s *materialExp;
  expression_s *textExp;
  vec4_t glowColor;
  expression_s *materialExp;
  int decodeEffect;
  vec4_t glowColor;
  int field_1B8;
  int decodeEffect;
  int field_1BC;
  int field_1B8;
  int field_1C0;
  int field_1BC;
  int field_1C4;
  int field_1C0;
  int field_1C8;
  int field_1C4;
};
  int field_1C8;
};
struct localVar_t
 
{
struct localVar_t
  int unknown;
{
  const char *dvarName;
  int unknown;
};
  const char *dvarName;
};
struct localData_t  
 
{
struct localData_t  
  int numExpressions;
{
  expression_s **expressions;
  int numExpressions;
  int numStaticVars;
  expression_s **expressions;
  localVar_t **staticVars;
  int numStaticVars;
  int numStrings;
  localVar_t **staticVars;
  const char **strings;
  int numStrings;
};
  const char **strings;
};
struct menuDef_t  
 
{
struct menuDef_t  
  Window window;
{
  const char *font;
  Window window;
  int fullscreen;
  const char *font;
  int itemCount;
  int fullscreen;
  int fontIndex;
  int itemCount;
  int cursorItems[4];
  int fontIndex;
  int fadeCycle;
  int cursorItems[4];
  float fadeClamp;
  int fadeCycle;
  float fadeAmount;
  float fadeClamp;
  float fadeInAmount;
  float fadeAmount;
  float blurRadius;
  float fadeInAmount;
  statement_s *onOpen;
  float blurRadius;
  statement_s *onRequestClose;
  statement_s *onOpen;
  statement_s *onClose;
  statement_s *onRequestClose;
  statement_s *onEsc;
  statement_s *onClose;
  ItemKeyHandler *execKeys;
  statement_s *onEsc;
  expression_s *visibleExp;
  ItemKeyHandler *execKeys;
  const char *allowedBinding;
  expression_s *visibleExp;
  const char *soundName;
  const char *allowedBinding;
  int imageTrack;
  const char *soundName;
  vec4_t focusColor;
  int imageTrack;
  expression_s *rectXExp;
  vec4_t focusColor;
  expression_s *rectYExp;
  expression_s *rectXExp;
  expression_s *rectHExp;
  expression_s *rectYExp;
  expression_s *rectWExp;  
  expression_s *rectHExp;
  itemDef_s **items;  
  expression_s *rectWExp;  
  char unknown[0x1C0];
  itemDef_s **items;  
  localData_t *menuData;
  char unknown[0x1C0];
};
  localData_t *menuData;
};
</syntaxhighlight>

Revision as of 10:49, 12 January 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_STATICDVARINT = 0x17,
  OP_STATICDVARBOOL = 0x18,
  OP_STATICDVARFLOAT = 0x19,
  OP_STATICDVARSTRING = 0x1A,
  OP_INT = 0x1B,
  OP_STRING = 0x1C,
  OP_FLOAT = 0x1D,
  OP_SIN = 0x1E,
  OP_COS = 0x1F,
  OP_MIN = 0x20,
  OP_MAX = 0x21,
  OP_MILLISECONDS = 0x22,
  OP_DVARINT = 0x23,
  OP_DVARBOOL = 0x24,
  OP_DVARFLOAT = 0x25,
  OP_DVARSTRING = 0x26,
  OP_STAT = 0x27,
  OP_UIACTIVE = 0x28,
  OP_FLASHBANGED = 0x29,
  OP_USINGVEHICLE = 0x2A,
  OP_MISSILECAM = 0x2B,
  OP_SCOPED = 0x2C,
  OP_SCOPEDTHERMAL = 0x2D,
  OP_SCOREBOARDVISIBLE = 0x2E,
  OP_INKILLCAM = 0x2F,
  OP_INKILLCAMNPC = 0x30,
  OP_PLAYERFIELD = 0x31,
  OP_GETPERK = 0x32,
  OP_SELECTINGLOCATION = 0x33,
  OP_SELECTINGDIRECTION = 0x34,
  OP_TEAMFIELD = 0x35,
  OP_OTHERTEAMFIELD = 0x36,
  OP_MARINESFIELD = 0x37,
  OP_OPFORFIELD = 0x38,
  OP_MENUISOPEN = 0x39,
  OP_WRITINGDATA = 0x3A,
  OP_INLOBBY = 0x3B,
  OP_INPRIVATEPARTY = 0x3C,
  OP_PRIVATEPARTYHOST = 0x3D,
  OP_PRIVATEPARTYHOSTINLOBBY = 0x3E,
  OP_ALONEINPARTY = 0x3F,
  OP_ADSJAVELIN = 0x40,
  OP_WEAPLOCKBLINK = 0x41,
  OP_WEAPATTACKTOP = 0x42,
  OP_WEAPATTACKDIRECT = 0x43,
  OP_WEAPLOCKING = 0x44,
  OP_WEAPLOCKED = 0x45,
  OP_WEAPLOCKTOOCLOSE = 0x46,
  OP_WEAPLOCKSCREENPOSX = 0x47,
  OP_WEAPLOCKSCREENPOSY = 0x48,
  OP_SECONDSASTIME = 0x49,
  OP_TABLELOOKUP = 0x4A,
  OP_TABLELOOKUPBYROW = 0x4B,
  OP_TABLEGETROWNUM = 0x4C,
  OP_LOCALIZESTRING = 0x4D,
  OP_LOCALVARINT = 0x4E,
  OP_LOCALVARBOOL = 0x4F,
  OP_LOCALVARFLOAT = 0x50,
  OP_LOCALVARSTRING = 0x51,
  OP_TIMELEFT = 0x52,
  OP_SECONDSASCOUNTDOWN = 0x53,
  OP_GAMEMSGWNDACTIVE = 0x54,
  OP_GAMETYPENAME = 0x55,
  OP_GAMETYPE = 0x56,
  OP_GAMETYPEDESCRIPTION = 0x57,
  OP_SCORE = 0x58,
  OP_FRIENDSONLINE = 0x59,
  OP_SPECTATINGCLIENT = 0x5A,
  OP_SPECTATINGFREE = 0x5B,
  OP_STATRANGEBITSSET = 0x5C,
  OP_KEYBINDING = 0x5D,
  OP_ACTIONSLOTUSABLE = 0x5E,
  OP_HUDFADE = 0x5F,
  OP_MAXRECOMMENDEDPLAYERS = 0x60,
  OP_ACCEPTINGINVITE = 0x61,
  OP_ISINTERMISSION = 0x62,
  OP_GAMEHOST = 0x63,
  OP_PARTYISMISSINGMAPPACK = 0x64,
  OP_PARTYMISSINGMAPPACKERROR = 0x65,
  OP_ANYNEWMAPPACKS = 0x66,
  OP_AMISELECTED = 0x67,
  OP_PARTYSTATUSSTRING = 0x68,
  OP_ATTACHEDCONTROLLERCOUNT = 0x69,
  OP_ISSPLITSCREENONLINEPOSSIBLE = 0x6A,
  OP_SPLITSCREENPLAYERCOUNT = 0x6B,
  OP_GETPLAYERDATA = 0x6C,
  OP_GETPLAYERDATASPLITSCREEN = 0x6D,
  OP_EXPERIENCEFORLEVEL = 0x6E,
  OP_LEVELFOREXPERIENCE = 0x6F,
  OP_ISITEMUNLOCKED = 0x70,
  OP_ISITEMUNLOCKEDSPLITSCREEN = 0x71,
  OP_DEBUGPRINT = 0x72,
  OP_GETPLAYERDATAANYBOOLTRUE = 0x73,
  OP_WEAPONCLASSNEW = 0x74,
  OP_WEAPONNAME = 0x75,
  OP_ISRELOADING = 0x76,
  OP_SAVEGAMEAVAILABLE = 0x77,
  OP_UNLOCKEDITEMCOUNT = 0x78,
  OP_UNLOCKEDITEMCOUNTSPLITSCREEN = 0x79,
  OP_UNLOCKEDITEM = 0x7A,
  OP_UNLOCKEDITEMSPLITSCREEN = 0x7B,
  OP_MAILSUBJECT = 0x7C,
  OP_MAILFROM = 0x7D,
  OP_MAILRECEIVED = 0x7E,
  OP_MAILBODY = 0x7F,
  OP_MAILLOOTLOCALIZED = 0x80,
  OP_MAILGIVESLOOT = 0x81,
  OP_ANYNEWMAIL = 0x82,
  OP_MAILTIMETOFOLLOWUP = 0x83,
  OP_MAILLOOTTYPE = 0x84,
  OP_MAILRANLOTTERY = 0x85,
  OP_LOTTERYLOOTLOCALIZED = 0x86,
  OP_RADARISJAMMED = 0x87,
  OP_RADARJAMINTENSITY = 0x88,
  OP_RADARISENABLED = 0x89,
  OP_ISEMPJAMMED = 0x8A,
  OP_PLAYERADS = 0x8B,
  OP_WEAPONHEATACTIVE = 0x8C,
  OP_WEAPONHEATVALUE = 0x8D,
  OP_WEAPONHEATOVERHEATED = 0x8E,
  OP_GETSPLASHTEXT = 0x8F,
  OP_GETSPLASHDESCRIPTION = 0x90,
  OP_GETSPLASHMATERIAL = 0x91,
  OP_SPLASHHASICON = 0x92,
  OP_SPLASHROWNUM = 0x93,
  OP_GETFOCUSEDITEMNAME = 0x94,
  OP_GETFOCUSEDITEMX = 0x95,
  OP_GETFOCUSEDITEMY = 0x96,
  OP_GETFOCUSEDITEMWIDTH = 0x97,
  OP_GETFOCUSEDITEMHEIGHT = 0x98,
  OP_GETITEMX = 0x99,
  OP_GETITEMY = 0x9A,
  OP_GETITEMWIDTH = 0x9B,
  OP_GETITEMHEIGHT = 0x9C,
  OP_PLAYLIST = 0x9D,
  OP_SCOREBOARDEXTERNALMUTENOTICE = 0x9E,
  OP_GETCLIENTMATCHDATA = 0x9F,
  OP_GETCLIENTMATCHDATADEF = 0xA0,
  OP_GETMAPNAME = 0xA1,
  OP_GETMAPIMAGE = 0xA2,
  OP_GETMAPCUSTOM = 0xA3,
  OP_GETMIGRATIONSTATUS = 0xA4,
  OP_GETPLAYERCARDINFO = 0xA5,
  OP_ISOFFLINEPROFILESELECTED = 0xA6,
  OP_COOPPLAYER = 0xA7,
  OP_ISCOOP = 0xA8,
  OP_GETPARTYSTATUS = 0xA9,
  OP_GETSEARCHPARAMS = 0xAA,
  OP_GETTIMEPLAYED = 0xAB,
  OP_ISSELECTEDPLAYERFRIEND = 0xAC,
  OP_GETCHARBYINDEX = 0xAD,
  OP_GETPROFILEDATA = 0xAE,
  OP_ISPROFILESIGNEDIN = 0xAF,
  OP_GETWAITPOPUPSTATUS = 0xB0,
  OP_GETNATTYPE = 0xB1,
  OP_GETLOCALIZEDNATTYPE = 0xB2,
  OP_GETADJUSTEDSAFEAREAHORIZONTAL = 0xB3,
  OP_GETADJUSTEDSAFEAREAVERTICAL = 0xB4,
  OP_CONNECTIONINFO = 0xB5,
  OP_OFFLINEPROFILECANSAVE = 0xB6,
  OP_ALLSPLITSCREENPROFILESCANSAVE = 0xB7,
  OP_ALLSPLITSCREENPROFILESARESIGNEDIN = 0xB8,
  OP_DOWEHAVEMAPPACK = 0xB9,
};

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

struct statement_s;
struct expression_s;
struct localData_t;

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

struct Operand 
{
  expDataType dataType;
  operandInternalDataUnion internals;
};

struct OperationStruct 
{
  operationEnum op;
  int unknown;
};

union entryInternalData 
{
  OperationStruct op;
  Operand operand;
};

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

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

struct expressionEntry 
{
  int type;
  entryInternalData data;
};

struct expression_s 
{
  int numEntries;
  expressionEntry *entries;
  localData_t *loadFrom;
  char unused[0xC];
};

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

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

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

struct statement_s 
{
  int numEntries;
  statementEntry **statements;
};

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

struct newsTicker_s
{
  int textSource;    // 0 = text input, 1 = motd
  int speed;
  int spacing;
  char unknown[0x10];
};

#define MAX_LB_COLUMNS 16

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[MAX_LB_COLUMNS];
  statement_s* doubleClick;
  int notselectable;
  int noscrollbars;
  int usepaging;
  vec4_t selectBorder;
  Material *selectIcon;
};

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

#define MAX_MULTI_DVARS 32

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

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

#define WINDOWDYNAMIC_VISIBLE		0x00000004
#define WINDOWDYNAMIC_HASFORECOLOR	0x00010000

#define WINDOWSTATIC_DECORATION				0x00100000
#define WINDOWSTATIC_HORIZONTALSCROLL			0x00200000
#define WINDOWSTATIC_SCREENSPACE				0x00400000
#define WINDOWSTATIC_AUTOWRAPPED				0x00800000
#define WINDOWSTATIC_POPUP						0x01000000
#define WINDOWSTATIC_OUTOFBOUNDSCLICK			0x02000000
#define WINDOWSTATIC_LEGACYSPLITSCREENSCALE	0x04000000
#define WINDOWSTATIC_HIDDENDURINGFLASH			0x10000000
#define WINDOWSTATIC_HIDDENDURINGSCOPE			0x20000000
#define WINDOWSTATIC_HIDDENDURINGUI			0x40000000
#define WINDOWSTATIC_TEXTONLYFOCUS				0x80000000

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

struct windowDef_t
{
  const char *name;
  Rectangle rect;
  Rectangle rectClient;
  const char *group;
  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;
};

typedef windowDef_t Window;

struct itemDef_s 
{
  Window window;
  Rectangle textRect[4];
  int type;
  int dataType;
  int align;
  int fontEnum;
  int textAlignMode;
  float textAlignX;
  float textAlignY;
  float textScale;
  int textStyle;
  int gameMsgWindowIndex;
  int gameMsgWindowMode;
  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;
  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;
  int numExpressions;
  component_t *componentExpressions;
  expression_s *visibleExp;
  expression_s *disabledExp;
  expression_s *textExp;
  expression_s *materialExp;
  vec4_t glowColor;
  int decodeEffect;
  int field_1B8;
  int field_1BC;
  int field_1C0;
  int field_1C4;
  int field_1C8;
};

struct localVar_t
{
  int unknown;
  const char *dvarName;
};

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

struct menuDef_t 
{
  Window window;
  const char *font;
  int fullscreen;
  int itemCount;
  int fontIndex;
  int cursorItems[4];
  int fadeCycle;
  float fadeClamp;
  float fadeAmount;
  float fadeInAmount;
  float blurRadius;
  statement_s *onOpen;
  statement_s *onRequestClose;
  statement_s *onClose;
  statement_s *onEsc;
  ItemKeyHandler *execKeys;
  expression_s *visibleExp;
  const char *allowedBinding;
  const char *soundName;
  int imageTrack;
  vec4_t focusColor;
  expression_s *rectXExp;
  expression_s *rectYExp;
  expression_s *rectHExp;
  expression_s *rectWExp; 
  itemDef_s **items; 
  char unknown[0x1C0];
  localData_t *menuData;
};