diff options
Diffstat (limited to 'src/gfx.cpp')
-rw-r--r-- | src/gfx.cpp | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/src/gfx.cpp b/src/gfx.cpp index 5d2bc2bbf..1487efe06 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -1775,22 +1775,37 @@ bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int heigh return true; } -static void SetCursorSprite(CursorID cursor, PaletteID pal) +/** + * Update cursor dimension. + * Called when changing cursor sprite resp. reloading grfs. + */ +void UpdateCursorSize() { CursorVars *cv = &_cursor; - const Sprite *p; + const Sprite *p = GetSprite(GB(cv->sprite, 0, SPRITE_WIDTH), ST_NORMAL); - if (cv->sprite == cursor) return; - - p = GetSprite(GB(cursor, 0, SPRITE_WIDTH), ST_NORMAL); - cv->sprite = cursor; - cv->pal = pal; cv->size.y = p->height; cv->size.x = p->width; cv->offs.x = p->x_offs; cv->offs.y = p->y_offs; cv->dirty = true; +} + +/** + * Switch cursor to different sprite. + * @param cursor Sprite to draw for the cursor. + * @param pal Palette to use for recolouring. + */ +static void SetCursorSprite(CursorID cursor, PaletteID pal) +{ + CursorVars *cv = &_cursor; + if (cv->sprite == cursor) return; + + cv->sprite = cursor; + cv->pal = pal; + UpdateCursorSize(); + cv->short_vehicle_offset = 0; } @@ -1813,6 +1828,12 @@ void CursorTick() } } +/** + * Assign a single non-animated sprite to the cursor. + * @param sprite Sprite to draw for the cursor. + * @param pal Palette to use for recolouring. + * @see SetAnimatedMouseCursor + */ void SetMouseCursor(CursorID sprite, PaletteID pal) { /* Turn off animation */ @@ -1821,6 +1842,11 @@ void SetMouseCursor(CursorID sprite, PaletteID pal) SetCursorSprite(sprite, pal); } +/** + * Assign an animation to the cursor. + * @param table Array of animation states. + * @see SetMouseCursor + */ void SetAnimatedMouseCursor(const AnimCursor *table) { _cursor.animate_list = table; |