mirror of https://github.com/OpenTTD/OpenTTD
(svn r8880) -Codechange: make anim cursors an array of structs.
parent
4fd8926e9d
commit
8ac0e7be21
16
src/gfx.cpp
16
src/gfx.cpp
|
@ -1987,18 +1987,14 @@ static void SetCursorSprite(SpriteID cursor, SpriteID pal)
|
||||||
|
|
||||||
static void SwitchAnimatedCursor(void)
|
static void SwitchAnimatedCursor(void)
|
||||||
{
|
{
|
||||||
CursorVars *cv = &_cursor;
|
const AnimCursor *cur = _cursor.animate_cur;
|
||||||
const CursorID *cur = cv->animate_cur;
|
|
||||||
CursorID sprite;
|
|
||||||
|
|
||||||
// ANIM_CURSOR_END is 0xFFFF in table/animcursors.h
|
if (cur == NULL || cur->sprite == AnimCursor::LAST) cur = _cursor.animate_list;
|
||||||
if (cur == NULL || *cur == 0xFFFF) cur = cv->animate_list;
|
|
||||||
|
|
||||||
sprite = cur[0];
|
SetCursorSprite(cur->sprite, _cursor.pal);
|
||||||
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)
|
void CursorTick(void)
|
||||||
|
@ -2015,7 +2011,7 @@ void SetMouseCursor(SpriteID sprite, SpriteID pal)
|
||||||
SetCursorSprite(sprite, pal);
|
SetCursorSprite(sprite, pal);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetAnimatedMouseCursor(const CursorID *table)
|
void SetAnimatedMouseCursor(const AnimCursor *table)
|
||||||
{
|
{
|
||||||
_cursor.animate_list = table;
|
_cursor.animate_list = table;
|
||||||
_cursor.animate_cur = NULL;
|
_cursor.animate_cur = NULL;
|
||||||
|
|
13
src/gfx.h
13
src/gfx.h
|
@ -99,6 +99,12 @@ typedef struct Rect {
|
||||||
int left,top,right,bottom;
|
int left,top,right,bottom;
|
||||||
} Rect;
|
} 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 {
|
typedef struct CursorVars {
|
||||||
Point pos, size, offs, delta; ///< position, size, offset from top-left, and movement
|
Point pos, size, offs, delta; ///< position, size, offset from top-left, and movement
|
||||||
|
@ -107,8 +113,9 @@ typedef struct CursorVars {
|
||||||
SpriteID pal;
|
SpriteID pal;
|
||||||
|
|
||||||
int wheel; ///< mouse wheel movement
|
int wheel; ///< mouse wheel movement
|
||||||
const CursorID *animate_list, *animate_cur; ///< in case of animated cursor, list of frames
|
const AnimCursor *animate_list; ///< in case of animated cursor, list of frames
|
||||||
uint animate_timeout; ///< current frame in list of animated cursor
|
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 visible; ///< cursor is visible
|
||||||
bool dirty; ///< the rect occupied by the mouse is dirty (redraw)
|
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(CursorID cursor);
|
||||||
void SetMouseCursor(SpriteID sprite, SpriteID pal);
|
void SetMouseCursor(SpriteID sprite, SpriteID pal);
|
||||||
void SetAnimatedMouseCursor(const CursorID *table);
|
void SetAnimatedMouseCursor(const AnimCursor *table);
|
||||||
void CursorTick(void);
|
void CursorTick(void);
|
||||||
void DrawMouseCursor(void);
|
void DrawMouseCursor(void);
|
||||||
void ScreenSizeChanged(void);
|
void ScreenSizeChanged(void);
|
||||||
|
|
|
@ -13,15 +13,15 @@
|
||||||
* @param Sprite The Sprite to be displayed
|
* @param Sprite The Sprite to be displayed
|
||||||
* @param display_time The Number of ticks to display the sprite
|
* @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
|
/** 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
|
/** Animated cursor elements for demolishion
|
||||||
*/
|
*/
|
||||||
static const CursorID _demolish_animcursor[] = {
|
static const AnimCursor _demolish_animcursor[] = {
|
||||||
ANIM_CURSOR_LINE(0x2C0, 8)
|
ANIM_CURSOR_LINE(0x2C0, 8)
|
||||||
ANIM_CURSOR_LINE(0x2C1, 8)
|
ANIM_CURSOR_LINE(0x2C1, 8)
|
||||||
ANIM_CURSOR_LINE(0x2C2, 8)
|
ANIM_CURSOR_LINE(0x2C2, 8)
|
||||||
|
@ -31,7 +31,7 @@ static const CursorID _demolish_animcursor[] = {
|
||||||
|
|
||||||
/** Animated cursor elements for lower land
|
/** 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(0x2BB, 10)
|
||||||
ANIM_CURSOR_LINE(0x2BC, 10)
|
ANIM_CURSOR_LINE(0x2BC, 10)
|
||||||
ANIM_CURSOR_LINE(0x2BD, 29)
|
ANIM_CURSOR_LINE(0x2BD, 29)
|
||||||
|
@ -40,7 +40,7 @@ static const CursorID _lower_land_animcursor[] = {
|
||||||
|
|
||||||
/** Animated cursor elements for raise land
|
/** 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(0x2B8, 10)
|
||||||
ANIM_CURSOR_LINE(0x2B9, 10)
|
ANIM_CURSOR_LINE(0x2B9, 10)
|
||||||
ANIM_CURSOR_LINE(0x2BA, 29)
|
ANIM_CURSOR_LINE(0x2BA, 29)
|
||||||
|
@ -49,7 +49,7 @@ static const CursorID _raise_land_animcursor[] = {
|
||||||
|
|
||||||
/** Animated cursor elements for the goto icon
|
/** 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(0x2CC, 10)
|
||||||
ANIM_CURSOR_LINE(0x2CD, 10)
|
ANIM_CURSOR_LINE(0x2CD, 10)
|
||||||
ANIM_CURSOR_LINE(0x2CE, 29)
|
ANIM_CURSOR_LINE(0x2CE, 29)
|
||||||
|
@ -58,7 +58,7 @@ static const CursorID _order_goto_animcursor[] = {
|
||||||
|
|
||||||
/** Animated cursor elements for the build signal icon
|
/** 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(0x50C, 20)
|
||||||
ANIM_CURSOR_LINE(0x50D, 20)
|
ANIM_CURSOR_LINE(0x50D, 20)
|
||||||
ANIM_CURSOR_END()
|
ANIM_CURSOR_END()
|
||||||
|
@ -68,7 +68,7 @@ static const CursorID _build_signals_animcursor[] = {
|
||||||
* definitions we have above. This is the only thing that is
|
* definitions we have above. This is the only thing that is
|
||||||
* accessed directly from other files
|
* accessed directly from other files
|
||||||
*/
|
*/
|
||||||
static const CursorID * const _animcursors[] = {
|
static const AnimCursor * const _animcursors[] = {
|
||||||
_demolish_animcursor,
|
_demolish_animcursor,
|
||||||
_lower_land_animcursor,
|
_lower_land_animcursor,
|
||||||
_raise_land_animcursor,
|
_raise_land_animcursor,
|
||||||
|
|
Loading…
Reference in New Issue