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)
|
||||
{
|
||||
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;
|
||||
|
|
13
src/gfx.h
13
src/gfx.h
|
@ -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…
Reference in New Issue