changeset 14448:a80dd44ffa0d draft

(svn r19005) -Codechange: make animated cursors have a bit set instead of using negative numbers that are passed as uints, then cast again to be compared as ints before being inverted to be actually used. Also fixes a couple of 'integer conversion resulted in truncation' warnings ICC spewed.
author rubidium <rubidium@openttd.org>
date Thu, 04 Feb 2010 15:42:38 +0000
parents cd9b79ff324f
children 424f1e399b83
files src/table/sprites.h src/viewport.cpp
diffstat 2 files changed, 10 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/table/sprites.h
+++ b/src/table/sprites.h
@@ -1396,13 +1396,14 @@
 static const CursorID SPR_CURSOR_CLONE_AIRPLANE = SPR_OPENTTD_BASE + 113;
 
 /** Animation macro in table/animcursors.h (_animcursors[]) */
-enum AnimCursors {
-	ANIMCURSOR_DEMOLISH     = -1, ///<  704 -  707 - demolish dynamite
-	ANIMCURSOR_LOWERLAND    = -2, ///<  699 -  701 - lower land tool
-	ANIMCURSOR_RAISELAND    = -3, ///<  696 -  698 - raise land tool
-	ANIMCURSOR_PICKSTATION  = -4, ///<  716 -  718 - goto-order icon
-	ANIMCURSOR_BUILDSIGNALS = -5, ///< 1292 - 1293 - build signal
-};
+
+/** Flag for saying a cursor sprite is an animated cursor. */
+static const CursorID ANIMCURSOR_FLAG         = 1U << 31;
+static const CursorID ANIMCURSOR_DEMOLISH     = ANIMCURSOR_FLAG | 0; ///<  704 -  707 - demolish dynamite
+static const CursorID ANIMCURSOR_LOWERLAND    = ANIMCURSOR_FLAG | 1; ///<  699 -  701 - lower land tool
+static const CursorID ANIMCURSOR_RAISELAND    = ANIMCURSOR_FLAG | 2; ///<  696 -  698 - raise land tool
+static const CursorID ANIMCURSOR_PICKSTATION  = ANIMCURSOR_FLAG | 3; ///<  716 -  718 - goto-order icon
+static const CursorID ANIMCURSOR_BUILDSIGNALS = ANIMCURSOR_FLAG | 4; ///< 1292 - 1293 - build signal
 
 /**
  * Bitmask setup. For the graphics system, 32 bits are used to define
--- a/src/viewport.cpp
+++ b/src/viewport.cpp
@@ -2714,8 +2714,8 @@
 	if (mode == HT_SPECIAL) // special tools, like tunnels or docks start with presizing mode
 		VpStartPreSizing();
 
-	if ((int)icon < 0) {
-		SetAnimatedMouseCursor(_animcursors[~icon]);
+	if ((icon & ANIMCURSOR_FLAG) != 0) {
+		SetAnimatedMouseCursor(_animcursors[icon & ~ANIMCURSOR_FLAG]);
 	} else {
 		SetMouseCursor(icon, pal);
 	}