Mercurial > hg > openttd
changeset 6138:994f395e0ad0 draft
(svn r8880) -Codechange: make anim cursors an array of structs.
author | rubidium <rubidium@openttd.org> |
---|---|
date | Sat, 24 Feb 2007 15:05:14 +0000 |
parents | 8b6c1572b707 |
children | 3c76c0f47447 |
files | src/gfx.cpp src/gfx.h src/table/animcursors.h |
diffstat | 3 files changed, 25 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -1987,18 +1987,14 @@ static void SwitchAnimatedCursor(void) { - CursorVars *cv = &_cursor; - const CursorID *cur = cv->animate_cur; - CursorID sprite; + const AnimCursor *cur = _cursor.animate_cur; + + if (cur == NULL || cur->sprite == AnimCursor::LAST) cur = _cursor.animate_list; - // ANIM_CURSOR_END is 0xFFFF in table/animcursors.h - if (cur == NULL || *cur == 0xFFFF) cur = cv->animate_list; + SetCursorSprite(cur->sprite, _cursor.pal); - sprite = cur[0]; - cv->animate_timeout = cur[1]; - cv->animate_cur = cur + 2; - - SetCursorSprite(sprite, cv->pal); + _cursor.animate_timeout = cur->display_time; + _cursor.animate_cur = cur + 1; } void CursorTick(void) @@ -2015,7 +2011,7 @@ SetCursorSprite(sprite, pal); } -void SetAnimatedMouseCursor(const CursorID *table) +void SetAnimatedMouseCursor(const AnimCursor *table) { _cursor.animate_list = table; _cursor.animate_cur = NULL;
--- a/src/gfx.h +++ b/src/gfx.h @@ -99,6 +99,12 @@ int left,top,right,bottom; } Rect; +/** A single sprite of a list of animated cursors */ +struct AnimCursor { + static const SpriteID LAST = MAX_UVALUE(CursorID); + CursorID sprite; ///< Must be set to LAST_ANIM when it is the last sprite of the loop + byte display_time; ///< Amount of ticks this sprite will be shown +}; typedef struct CursorVars { Point pos, size, offs, delta; ///< position, size, offset from top-left, and movement @@ -107,8 +113,9 @@ SpriteID pal; int wheel; ///< mouse wheel movement - const CursorID *animate_list, *animate_cur; ///< in case of animated cursor, list of frames - uint animate_timeout; ///< current frame in list of animated cursor + const AnimCursor *animate_list; ///< in case of animated cursor, list of frames + const AnimCursor *animate_cur; ///< in case of animated cursor, current frame + uint animate_timeout; ///< in case of animated cursor, number of ticks to show the current cursor bool visible; ///< cursor is visible bool dirty; ///< the rect occupied by the mouse is dirty (redraw) @@ -229,7 +236,7 @@ void SetMouseCursor(CursorID cursor); void SetMouseCursor(SpriteID sprite, SpriteID pal); -void SetAnimatedMouseCursor(const CursorID *table); +void SetAnimatedMouseCursor(const AnimCursor *table); void CursorTick(void); void DrawMouseCursor(void); void ScreenSizeChanged(void);
--- a/src/table/animcursors.h +++ b/src/table/animcursors.h @@ -13,15 +13,15 @@ * @param Sprite The Sprite to be displayed * @param display_time The Number of ticks to display the sprite */ -#define ANIM_CURSOR_LINE(Sprite, display_time) Sprite, display_time, +#define ANIM_CURSOR_LINE(Sprite, display_time) { Sprite, display_time }, /** This indicates the termination of the cursor list */ -#define ANIM_CURSOR_END() 0xFFFF +#define ANIM_CURSOR_END() ANIM_CURSOR_LINE(AnimCursor::LAST, 0) /** Animated cursor elements for demolishion */ -static const CursorID _demolish_animcursor[] = { +static const AnimCursor _demolish_animcursor[] = { ANIM_CURSOR_LINE(0x2C0, 8) ANIM_CURSOR_LINE(0x2C1, 8) ANIM_CURSOR_LINE(0x2C2, 8) @@ -31,7 +31,7 @@ /** Animated cursor elements for lower land */ -static const CursorID _lower_land_animcursor[] = { +static const AnimCursor _lower_land_animcursor[] = { ANIM_CURSOR_LINE(0x2BB, 10) ANIM_CURSOR_LINE(0x2BC, 10) ANIM_CURSOR_LINE(0x2BD, 29) @@ -40,7 +40,7 @@ /** Animated cursor elements for raise land */ -static const CursorID _raise_land_animcursor[] = { +static const AnimCursor _raise_land_animcursor[] = { ANIM_CURSOR_LINE(0x2B8, 10) ANIM_CURSOR_LINE(0x2B9, 10) ANIM_CURSOR_LINE(0x2BA, 29) @@ -49,7 +49,7 @@ /** Animated cursor elements for the goto icon */ -static const CursorID _order_goto_animcursor[] = { +static const AnimCursor _order_goto_animcursor[] = { ANIM_CURSOR_LINE(0x2CC, 10) ANIM_CURSOR_LINE(0x2CD, 10) ANIM_CURSOR_LINE(0x2CE, 29) @@ -58,7 +58,7 @@ /** Animated cursor elements for the build signal icon */ -static const CursorID _build_signals_animcursor[] = { +static const AnimCursor _build_signals_animcursor[] = { ANIM_CURSOR_LINE(0x50C, 20) ANIM_CURSOR_LINE(0x50D, 20) ANIM_CURSOR_END() @@ -68,7 +68,7 @@ * definitions we have above. This is the only thing that is * accessed directly from other files */ -static const CursorID * const _animcursors[] = { +static const AnimCursor * const _animcursors[] = { _demolish_animcursor, _lower_land_animcursor, _raise_land_animcursor,