(svn r8880) -Codechange: make anim cursors an array of structs.

pull/155/head
rubidium 18 years ago
parent d1f56bb45b
commit 4df080bf12

@ -1987,18 +1987,14 @@ static void SetCursorSprite(SpriteID cursor, SpriteID pal)
static void SwitchAnimatedCursor(void)
{
CursorVars *cv = &_cursor;
const CursorID *cur = cv->animate_cur;
CursorID sprite;
const AnimCursor *cur = _cursor.animate_cur;
// ANIM_CURSOR_END is 0xFFFF in table/animcursors.h
if (cur == NULL || *cur == 0xFFFF) cur = cv->animate_list;
if (cur == NULL || cur->sprite == AnimCursor::LAST) cur = _cursor.animate_list;
sprite = cur[0];
cv->animate_timeout = cur[1];
cv->animate_cur = cur + 2;
SetCursorSprite(cur->sprite, _cursor.pal);
SetCursorSprite(sprite, cv->pal);
_cursor.animate_timeout = cur->display_time;
_cursor.animate_cur = cur + 1;
}
void CursorTick(void)
@ -2015,7 +2011,7 @@ void SetMouseCursor(SpriteID sprite, SpriteID pal)
SetCursorSprite(sprite, pal);
}
void SetAnimatedMouseCursor(const CursorID *table)
void SetAnimatedMouseCursor(const AnimCursor *table)
{
_cursor.animate_list = table;
_cursor.animate_cur = NULL;

@ -99,6 +99,12 @@ typedef struct Rect {
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 @@ typedef struct CursorVars {
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 DrawOverlappedWindowForAll(int left, int top, int right, int bottom);
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);

@ -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 @@ static const CursorID _demolish_animcursor[] = {
/** 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 @@ static const CursorID _lower_land_animcursor[] = {
/** 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 @@ static const CursorID _raise_land_animcursor[] = {
/** 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 @@ static const CursorID _order_goto_animcursor[] = {
/** 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 @@ static const CursorID _build_signals_animcursor[] = {
* 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,

Loading…
Cancel
Save