Custom cursor sprites are drawn by CPixmap directly onto the back buffer,
overlaying everything else. They are never OS-managed hardware cursors.
All SPRITE_* constants are defined in include/def.h.
| Constant | Code | Description |
|---|---|---|
SPRITE_ARROW |
1 | Standard arrow cursor |
SPRITE_POINTER |
2 | Targeting / action pointer (hand / crosshair) |
SPRITE_MAP |
3 | Minimap hand cursor |
SPRITE_ARROWU |
4 | Scroll upward |
SPRITE_ARROWD |
5 | Scroll downward |
SPRITE_ARROWL |
6 | Scroll left |
SPRITE_ARROWR |
7 | Scroll right |
SPRITE_ARROWUL |
8 | Scroll upper-left (diagonal) |
SPRITE_ARROWUR |
9 | Scroll upper-right (diagonal) |
SPRITE_ARROWDL |
10 | Scroll lower-left (diagonal) |
SPRITE_ARROWDR |
11 | Scroll lower-right (diagonal) |
SPRITE_WAIT |
12 | Busy / loading cursor |
SPRITE_EMPTY |
13 | Empty (hidden cursor area) |
SPRITE_FILL |
14 | Flood-fill cursor (editor) |
The active sprite is determined by context:
- In game play area:
SPRITE_POINTER(over a cell) or a scroll arrow (at edge) - Over minimap:
SPRITE_MAP - Edge of screen:
SPRITE_ARROWU/D/L/R/UL/UR/DL/DRbased on position - Over toolbar/menu:
SPRITE_ARROW - Loading:
SPRITE_WAIT - Editor flood-fill tool:
SPRITE_FILL
The MouseType setting in data/config.def controls how the cursor is managed:
| Value | Constant | Description |
|---|---|---|
| 1 | MOUSETYPEGRA |
GDI-drawn cursor (using the sprite system above) |
| 2 | MOUSETYPEWIN |
Standard Windows cursor (OS-managed) |
| 3 | MOUSETYPEWINPOS |
Windows cursor with position tracking |
In cross-platform builds (Linux, Web), only MOUSETYPEGRA is effective.