Game Structs
////////////////////////////////////////////////////////////////////
// CGameDC (v2.00, Abin)
//------------------------------------------------------------------
// Will be passed to "OnDraw" functions in client modules. Use members
// of this struct to draw customized stuff on the game screen.
////////////////////////////////////////////////////////////////////
typedef struct tagGameDC
{
// Drawing methods
fnD2TextOut TextOut; // Draw simple text
fnD2DrawText DrawText; // Draw aligned text
fnD2MoveTo MoveTo; // Change DC start position
fnD2LineTo LineTo; // Draw line
fnD2Rectangle Rectangle; // Draw a solid rectangle outlined by a frame
fnD2FrameRect FrameRect; // Draw empty frame
fnD2FillRect FillRect; // Draw a solid rectangle
// Attributes
fnD2SetFont SetFont; // Set font
fnD2GetFont GetFont; // Get font
fnD2GetTextExtent GetTextExtent; // Get text drawing size
fnD2SetTextColor SetTextColor; // Set text color
fnD2GetTextColor GetTextColor; // Get text color
fnD2SetPenColor SetPenColor; // Set pen color
fnD2GetPenColor GetPenColor; // Get pen color
fnD2SetPenWidth SetPenWidth; // Set pen width
fnD2GetPenWidth GetPenWidth; // Get pen width
fnD2SetBrushColor SetBrushColor; // Set brush color
fnD2GetBrushColor GetBrushColor; // Get brush color
fnD2SetBrushTransparency SetBrushTransparency; // Set brush transparency
fnD2GetBrushTransparency GetBrushTransparency; // Get brush transparency
} GAMEDC, *LPGAMEDC;
typedef const tagGameDC* LPCGAMEDC;
typedef tagGameDC CGameDC; // make the name more win32 GDI'ish :)
typedef struct tagGameUnit
{
DWORD dwUnitID; // Unit ID
DWORD dwUnitType; // Unit type(player, monster, object, etc)
} GAMEUNIT, *LPGAMEUNIT;
typedef const tagGameUnit* LPCGAMEUNIT;
// Unit enumeration callback definition
typedef BOOL (CALLBACK *fnEnumUnitProc)(LPCGAMEUNIT lpUnit, LPARAM lParam);
//////////////////////////////////////////////////////////////////////
// PresetUnit(Caves, Stairs, Dens, Towers, Entrances, Izual, Hephasto, Countess Chest, etc...)
//////////////////////////////////////////////////////////////////////
typedef struct tagPresetUnit
{
DWORD dwID; // Preset unit ID (txt no).
DWORD dwType; // Preset unit type, monster, object, room tile, etc
WORD x; // Map position x
WORD y; // Map position y
} PRESETUNIT, *LPPRESETUNIT;
typedef const tagPresetUnit* LPCPRESETUNIT;
// PresetUnit enumeration callback definition
typedef BOOL (CALLBACK *fnEnumPresetUnitProc)(LPCPRESETUNIT lpPresetUnit, LPARAM lParam);
//////////////////////////////////////////////////////////////////////
// ITEMPROPERTY
//--------------------------------------------------------------------
// Item properties(mods) data. Thanks to Mousepad for the help.
//////////////////////////////////////////////////////////////////////
typedef struct tagItemProperty
{
WORD wSubProperty; // Sub property value
WORD wPropertyID; // Property ID
int nValue; // Property value
} ITEMPROPERTY, *LPITEMPROPERTY;
typedef const tagItemProperty* LPCITEMPROPERTY;
//////////////////////////////////////////////////////////////////////
// Item Enumeration Callback Function def
//////////////////////////////////////////////////////////////////////
typedef BOOL (CALLBACK *fnEnumItemProc)(DWORD dwItemID, LPARAM lParam);