#ifndef __MAPPER_DEFINES__
#define __MAPPER_DEFINES__

// Mapper objects
#define MAP_OBJECT_CRITTER     (0)
#define MAP_OBJECT_ITEM        (1)
#define MAP_OBJECT_SCENERY     (2)

// Paths
	// Client and mapper paths
#define PT_ROOT                (0)
#define PT_DATA                (1)
#define PT_ART                 (2)
#define PT_ART_CRITTERS        (3)
#define PT_ART_INTRFACE        (4)
#define PT_ART_INVEN           (5)
#define PT_ART_ITEMS           (6)
#define PT_ART_MISC            (7)
#define PT_ART_SCENERY         (8)
#define PT_ART_SKILLDEX        (9)
#define PT_ART_SPLASH          (10)
#define PT_ART_TILES           (11)
#define PT_ART_WALLS           (12)
#define PT_TEXTURES            (13)
#define PT_EFFECTS             (14)
#define PT_MAPS                (15)
#define PT_TERRAIN             (16)
#define PT_SND_MUSIC           (17)
#define PT_SND_SFX             (18)
#define PT_SCRIPTS             (19)
#define PT_VIDEO               (20)
#define PT_TEXTS               (21)
#define PT_SAVE                (22)
	// Server paths
#define PT_SERVER_ROOT         (30)
#define PT_SERVER_DATA         (31)
#define PT_SERVER_TEXTS        (32)
#define PT_SERVER_DIALOGS      (33)
#define PT_SERVER_MAPS         (34)
#define PT_SERVER_PRO_ITEMS    (35)
#define PT_SERVER_PRO_CRITTERS (36)
#define PT_SERVER_SCRIPTS      (37)
#define PT_SERVER_BANS         (38)

// Fonts
#define FONT_OLD_FO            (0)
#define FONT_NUM               (1)
#define FONT_BIG_NUM           (2)
#define FONT_SAND_NUM          (3)
#define FONT_SPECIAL           (4)
#define FONT_FALLOUT           (5)
#define FONT_THIN              (6)
#define FONT_FAT               (7)
#define FONT_BIG               (8)

// Font flags
#define FT_NOBREAK             (0x0001)
#define FT_NOBREAK_LINE        (0x0002)
#define FT_CENTERX             (0x0004)
#define FT_CENTERY             (0x0008)
#define FT_CENTERR             (0x0010)
#define FT_BOTTOM              (0x0020)
#define FT_UPPER               (0x0040)
#define FT_COLORIZE            (0x0080)
#define FT_ALIGN               (0x0100)
#define FT_SKIPLINES(l)        (0x0200|((l)<<16))
#define FT_BORDERED            (0x0400)

// Mouse click states
#define MOUSE_CLICK_LEFT       (0)
#define MOUSE_CLICK_RIGHT      (1)
#define MOUSE_CLICK_MIDDLE     (2)
#define MOUSE_CLICK_WHEEL_UP   (3) // Passed only in mouse_down
#define MOUSE_CLICK_WHEEL_DOWN (4) // Passed only in mouse_down
#define MOUSE_CLICK_EXT0       (5)
#define MOUSE_CLICK_EXT1       (6)
#define MOUSE_CLICK_EXT2       (7)
#define MOUSE_CLICK_EXT3       (8)
#define MOUSE_CLICK_EXT4       (9)

// DirectInput keyboard scan codes
#define DIK_ESCAPE          0x01
#define DIK_1               0x02
#define DIK_2               0x03
#define DIK_3               0x04
#define DIK_4               0x05
#define DIK_5               0x06
#define DIK_6               0x07
#define DIK_7               0x08
#define DIK_8               0x09
#define DIK_9               0x0A
#define DIK_0               0x0B
#define DIK_MINUS           0x0C    /* - on main keyboard */
#define DIK_EQUALS          0x0D
#define DIK_BACK            0x0E    /* backspace */
#define DIK_TAB             0x0F
#define DIK_Q               0x10
#define DIK_W               0x11
#define DIK_E               0x12
#define DIK_R               0x13
#define DIK_T               0x14
#define DIK_Y               0x15
#define DIK_U               0x16
#define DIK_I               0x17
#define DIK_O               0x18
#define DIK_P               0x19
#define DIK_LBRACKET        0x1A
#define DIK_RBRACKET        0x1B
#define DIK_RETURN          0x1C    /* Enter on main keyboard */
#define DIK_LCONTROL        0x1D
#define DIK_A               0x1E
#define DIK_S               0x1F
#define DIK_D               0x20
#define DIK_F               0x21
#define DIK_G               0x22
#define DIK_H               0x23
#define DIK_J               0x24
#define DIK_K               0x25
#define DIK_L               0x26
#define DIK_SEMICOLON       0x27
#define DIK_APOSTROPHE      0x28
#define DIK_GRAVE           0x29    /* accent grave */
#define DIK_LSHIFT          0x2A
#define DIK_BACKSLASH       0x2B
#define DIK_Z               0x2C
#define DIK_X               0x2D
#define DIK_C               0x2E
#define DIK_V               0x2F
#define DIK_B               0x30
#define DIK_N               0x31
#define DIK_M               0x32
#define DIK_COMMA           0x33
#define DIK_PERIOD          0x34    /* . on main keyboard */
#define DIK_SLASH           0x35    /* / on main keyboard */
#define DIK_RSHIFT          0x36
#define DIK_MULTIPLY        0x37    /* * on numeric keypad */
#define DIK_LMENU           0x38    /* left Alt */
#define DIK_SPACE           0x39
#define DIK_CAPITAL         0x3A
#define DIK_F1              0x3B
#define DIK_F2              0x3C
#define DIK_F3              0x3D
#define DIK_F4              0x3E
#define DIK_F5              0x3F
#define DIK_F6              0x40
#define DIK_F7              0x41
#define DIK_F8              0x42
#define DIK_F9              0x43
#define DIK_F10             0x44
#define DIK_NUMLOCK         0x45
#define DIK_SCROLL          0x46    /* Scroll Lock */
#define DIK_NUMPAD7         0x47
#define DIK_NUMPAD8         0x48
#define DIK_NUMPAD9         0x49
#define DIK_SUBTRACT        0x4A    /* - on numeric keypad */
#define DIK_NUMPAD4         0x4B
#define DIK_NUMPAD5         0x4C
#define DIK_NUMPAD6         0x4D
#define DIK_ADD             0x4E    /* + on numeric keypad */
#define DIK_NUMPAD1         0x4F
#define DIK_NUMPAD2         0x50
#define DIK_NUMPAD3         0x51
#define DIK_NUMPAD0         0x52
#define DIK_DECIMAL         0x53    /* . on numeric keypad */
#define DIK_OEM_102         0x56    /* <> or \| on RT 102-key keyboard (Non-U.S.) */
#define DIK_F11             0x57
#define DIK_F12             0x58
#define DIK_F13             0x64    /*                     (NEC PC98) */
#define DIK_F14             0x65    /*                     (NEC PC98) */
#define DIK_F15             0x66    /*                     (NEC PC98) */
#define DIK_KANA            0x70    /* (Japanese keyboard)            */
#define DIK_ABNT_C1         0x73    /* /? on Brazilian keyboard */
#define DIK_CONVERT         0x79    /* (Japanese keyboard)            */
#define DIK_NOCONVERT       0x7B    /* (Japanese keyboard)            */
#define DIK_YEN             0x7D    /* (Japanese keyboard)            */
#define DIK_ABNT_C2         0x7E    /* Numpad . on Brazilian keyboard */
#define DIK_NUMPADEQUALS    0x8D    /* = on numeric keypad (NEC PC98) */
#define DIK_PREVTRACK       0x90    /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */
#define DIK_AT              0x91    /*                     (NEC PC98) */
#define DIK_COLON           0x92    /*                     (NEC PC98) */
#define DIK_UNDERLINE       0x93    /*                     (NEC PC98) */
#define DIK_KANJI           0x94    /* (Japanese keyboard)            */
#define DIK_STOP            0x95    /*                     (NEC PC98) */
#define DIK_AX              0x96    /*                     (Japan AX) */
#define DIK_UNLABELED       0x97    /*                        (J3100) */
#define DIK_NEXTTRACK       0x99    /* Next Track */
#define DIK_NUMPADENTER     0x9C    /* Enter on numeric keypad */
#define DIK_RCONTROL        0x9D
#define DIK_MUTE            0xA0    /* Mute */
#define DIK_CALCULATOR      0xA1    /* Calculator */
#define DIK_PLAYPAUSE       0xA2    /* Play / Pause */
#define DIK_MEDIASTOP       0xA4    /* Media Stop */
#define DIK_VOLUMEDOWN      0xAE    /* Volume - */
#define DIK_VOLUMEUP        0xB0    /* Volume + */
#define DIK_WEBHOME         0xB2    /* Web home */
#define DIK_NUMPADCOMMA     0xB3    /* , on numeric keypad (NEC PC98) */
#define DIK_DIVIDE          0xB5    /* / on numeric keypad */
#define DIK_SYSRQ           0xB7
#define DIK_RMENU           0xB8    /* right Alt */
#define DIK_PAUSE           0xC5    /* Pause */
#define DIK_HOME            0xC7    /* Home on arrow keypad */
#define DIK_UP              0xC8    /* UpArrow on arrow keypad */
#define DIK_PRIOR           0xC9    /* PgUp on arrow keypad */
#define DIK_LEFT            0xCB    /* LeftArrow on arrow keypad */
#define DIK_RIGHT           0xCD    /* RightArrow on arrow keypad */
#define DIK_END             0xCF    /* End on arrow keypad */
#define DIK_DOWN            0xD0    /* DownArrow on arrow keypad */
#define DIK_NEXT            0xD1    /* PgDn on arrow keypad */
#define DIK_INSERT          0xD2    /* Insert on arrow keypad */
#define DIK_DELETE          0xD3    /* Delete on arrow keypad */
#define DIK_LWIN            0xDB    /* Left Windows key */
#define DIK_RWIN            0xDC    /* Right Windows key */
#define DIK_APPS            0xDD    /* AppMenu key */
#define DIK_POWER           0xDE    /* System Power */
#define DIK_SLEEP           0xDF    /* System Sleep */
#define DIK_WAKE            0xE3    /* System Wake */
#define DIK_WEBSEARCH       0xE5    /* Web Search */
#define DIK_WEBFAVORITES    0xE6    /* Web Favorites */
#define DIK_WEBREFRESH      0xE7    /* Web Refresh */
#define DIK_WEBSTOP         0xE8    /* Web Stop */
#define DIK_WEBFORWARD      0xE9    /* Web Forward */
#define DIK_WEBBACK         0xEA    /* Web Back */
#define DIK_MYCOMPUTER      0xEB    /* My Computer */
#define DIK_MAIL            0xEC    /* Mail */
#define DIK_MEDIASELECT     0xED    /* Media Select */

// Draw primitive types
#define DRAW_PRIMITIVE_POINTLIST     (0)
#define DRAW_PRIMITIVE_LINELIST      (1)
#define DRAW_PRIMITIVE_LINESTRIP     (2)
#define DRAW_PRIMITIVE_TRIANGLELIST  (3)
#define DRAW_PRIMITIVE_TRIANGLESTRIP (4)
#define DRAW_PRIMITIVE_TRIANGLEFAN   (5)

#endif // __MAPPER_DEFINES__














