Changeset - r6138:b11eea571618
[Not reviewed]
master
0 3 0
rubidium - 17 years ago 2007-02-24 15:05:14
rubidium@openttd.org
(svn r8880) -Codechange: make anim cursors an array of structs.
3 files changed with 25 insertions and 22 deletions:
0 comments (0 inline, 0 general)
src/gfx.cpp
Show inline comments
 
@@ -1987,18 +1987,14 @@ static void SetCursorSprite(SpriteID cur
 

	
 
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 @@ void SetMouseCursor(SpriteID sprite, Spr
 
	SetCursorSprite(sprite, pal);
 
}
 

	
 
void SetAnimatedMouseCursor(const CursorID *table)
 
void SetAnimatedMouseCursor(const AnimCursor *table)
 
{
 
	_cursor.animate_list = table;
 
	_cursor.animate_cur = NULL;
src/gfx.h
Show inline comments
 
@@ -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
 

	
 
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);
src/table/animcursors.h
Show inline comments
 
@@ -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_animcurs
 

	
 
/** 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_animcu
 

	
 
/** 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_animcu
 

	
 
/** 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_animcu
 

	
 
/** 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_ani
 
 *  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,
0 comments (0 inline, 0 general)