From a209ec4a32bbfb5f278a6deacc4d8ce471b234a6 Mon Sep 17 00:00:00 2001
From: jsalmon3 <>
Date: Sat, 20 Mar 2004 20:56:25 +0000
Subject: [PATCH] Change resource icons to sprites, clean up

---
 src/include/ui.h     | 459 ++++++++++++++++++++++---------------------
 src/ui/mainscr.cpp   |  32 ++-
 src/ui/script_ui.cpp |   4 +-
 src/ui/ui.cpp        |   5 +-
 4 files changed, 249 insertions(+), 251 deletions(-)

diff --git a/src/include/ui.h b/src/include/ui.h
index 92e290635..fdd43afe1 100644
--- a/src/include/ui.h
+++ b/src/include/ui.h
@@ -5,12 +5,12 @@
 //     /_______  /|__|  |__|  (____  /__| (____  /\___  /|____//____  >
 //             \/                  \/          \//_____/            \/
 //  ______________________                           ______________________
-//			  T H E   W A R   B E G I N S
-//	   Stratagus - A free fantasy real time strategy game engine
+//                        T H E   W A R   B E G I N S
+//         Stratagus - A free fantasy real time strategy game engine
 //
-/**@name ui.h		-	The user interface header file. */
+/**@name ui.h - The user interface header file. */
 //
-//	(c) Copyright 1999-2003 by Lutz Sammer and Jimmy Salmon
+//      (c) Copyright 1999-2004 by Lutz Sammer and Jimmy Salmon
 //
 //      This program is free software; you can redistribute it and/or modify
 //      it under the terms of the GNU General Public License as published by
@@ -26,7 +26,7 @@
 //      Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 //      02111-1307, USA.
 //
-//	$Id$
+//      $Id$
 
 #ifndef __UI_H__
 #define __UI_H__
@@ -37,7 +37,7 @@
 // FIXME: all user interface variables should go here and be configurable
 
 /*----------------------------------------------------------------------------
---		Includes
+--  Includes
 ----------------------------------------------------------------------------*/
 
 #include "video.h"
@@ -46,324 +46,329 @@
 #include "interface.h"
 
 /*----------------------------------------------------------------------------
---		Definitons
+--  Definitons
 ----------------------------------------------------------------------------*/
 
 	/// buttons on screen themselves
 typedef struct _button_ {
-	int				X;						/// x coordinate on the screen
-	int				Y;						/// y coordinate on the screen
-	int			Width;						/// width of the button on the screen
-	int			Height;						/// height of the button on the screen
+	int X;                          /// x coordinate on the screen
+	int Y;                          /// y coordinate on the screen
+	int Width;                      /// width of the button on the screen
+	int Height;                     /// height of the button on the screen
 } Button;
 
-#define MAX_NUM_VIEWPORTS 8				/// Number of supported viewports
+#define MAX_NUM_VIEWPORTS 8         /// Number of supported viewports
 
 #if !defined(__STRUCT_VIEWPORT__)
-#define __STRUCT_VIEWPORT__				/// protect duplicate viewport typedef
-typedef struct _viewport_ Viewport;		/// Viewport typedef
+#define __STRUCT_VIEWPORT__         /// protect duplicate viewport typedef
+typedef struct _viewport_ Viewport; /// Viewport typedef
 #endif
 
 /**
-**		A map viewport.
+**  A map viewport.
 **
-**		A part of the map displayed on sceen.
+**  A part of the map displayed on sceen.
 **
-**		Viewport::X Viewport::Y
-**		Viewport::EndX Viewport::EndY
+**  Viewport::X Viewport::Y
+**  Viewport::EndX Viewport::EndY
 **
-**				upper left corner of this viewport is located at pixel
-**				coordinates (X, Y) with respect to upper left corner of
-**				stratagus's window, similarly lower right corner of this
-**				viewport is (EndX, EndY) pixels away from the UL corner of
-**				stratagus's window.
+**    upper left corner of this viewport is located at pixel
+**    coordinates (X, Y) with respect to upper left corner of
+**    stratagus's window, similarly lower right corner of this
+**    viewport is (EndX, EndY) pixels away from the UL corner of
+**    stratagus's window.
 **
-**		Viewport::MapX Viewport::MapY
-**		Viewport::MapWidth Viewport::MapHeight
+**  Viewport::MapX Viewport::MapY
+**  Viewport::MapWidth Viewport::MapHeight
 **
-**				Tile coordinates of UL corner of this viewport with respect to
-**				UL corner of the whole map.
+**    Tile coordinates of UL corner of this viewport with respect to
+**    UL corner of the whole map.
 **
-**		Viewport::Unit
+**  Viewport::Unit
 **
-**				Viewport is bound to an unit. If the unit moves the viewport
-**				changes the position together with the unit.
-**				@todo binding to a group.
+**    Viewport is bound to an unit. If the unit moves the viewport
+**    changes the position together with the unit.
+**    @todo binding to a group.
 */
 struct _viewport_ {
-	int X;						/// Screen pixel left corner x coordinate
-	int Y;						/// Screen pixel upper corner y coordinate
-	int EndX;					/// Screen pixel right x coordinate
-	int EndY;					/// Screen pixel bottom y coordinate
+	int X;                      /// Screen pixel left corner x coordinate
+	int Y;                      /// Screen pixel upper corner y coordinate
+	int EndX;                   /// Screen pixel right x coordinate
+	int EndY;                   /// Screen pixel bottom y coordinate
 
-	int MapX;					/// Map tile left corner x coordinate
-	int MapY;					/// Map tile upper corner y coordinate
-	int OffsetX;				/// Map tile offset
-	int OffsetY;				/// Map tile offset
-	int MapWidth;				/// Width in map tiles
-	int MapHeight;				/// Height in map tiles
+	int MapX;                   /// Map tile left corner x coordinate
+	int MapY;                   /// Map tile upper corner y coordinate
+	int OffsetX;                /// Map tile offset
+	int OffsetY;                /// Map tile offset
+	int MapWidth;               /// Width in map tiles
+	int MapHeight;              /// Height in map tiles
 
-    char MustRedrawTile[MAXMAP_W * MAXMAP_H];
-    char MustRedrawRow[MAXMAP_W];
+    char MustRedrawTile[MAXMAP_W * MAXMAP_H];   /// Must redraw tile
+    char MustRedrawRow[MAXMAP_W];               /// Must redraw row
 
-	Unit* Unit;						/// Bound to this unit
+	Unit* Unit;                 /// Bound to this unit
 };
 
 /**
-**		Enumeration of the different predefined viewport configurations.
+**  Enumeration of the different predefined viewport configurations.
 **
-**		@todo this should be later user configurable
+**  @todo this should be later user configurable
 */
 typedef enum {
-	VIEWPORT_SINGLE,				/// Old single viewport
-	VIEWPORT_SPLIT_HORIZ,		/// Two viewports split horizontal
-	VIEWPORT_SPLIT_HORIZ3,		/// Three viewports split horiontal
-	VIEWPORT_SPLIT_VERT,		/// Two viewports split vertical
-	VIEWPORT_QUAD,				/// Four viewports split symmetric
-	NUM_VIEWPORT_MODES				/// Number of different viewports.
+	VIEWPORT_SINGLE,                /// Old single viewport
+	VIEWPORT_SPLIT_HORIZ,           /// Two viewports split horizontal
+	VIEWPORT_SPLIT_HORIZ3,          /// Three viewports split horiontal
+	VIEWPORT_SPLIT_VERT,            /// Two viewports split vertical
+	VIEWPORT_QUAD,                  /// Four viewports split symmetric
+	NUM_VIEWPORT_MODES,             /// Number of different viewports.
 } ViewportMode;
 
-#define ScPanel "sc-panel"		/// hack for transparency
+#define ScPanel "sc-panel"          /// hack for transparency
 
 /**
-**		Menu panels
+**  Menu panels
 */
 typedef struct _menu_panel_ {
-	char*						Ident;		/// Unique identifier
-	GraphicConfig				Panel;		/// Panel
-	struct _menu_panel_*		Next;		/// Next pointer
+	char*                Ident;     /// Unique identifier
+	GraphicConfig        Panel;     /// Panel
+	struct _menu_panel_* Next;      /// Next pointer
 } MenuPanel;
 
 /**
-**		Defines the user interface.
+**  Defines the user interface.
 */
 typedef struct _ui_ {
-	// to select the correct user interface.
-	char*		Name;						/// interface name to select
-	int				Width;						/// useable for this width
-	int				Height;						/// useable for this height
+	char* Name;                         /// interface name to select
+	int Width;                          /// useable for this width
+	int Height;                         /// useable for this height
 
-	int				MouseScroll;				/// Enable mouse scrolling
-	int				KeyScroll;				/// Enable keyboard scrolling
+	int MouseScroll;                    /// Enable mouse scrolling
+	int KeyScroll;                      /// Enable keyboard scrolling
 		/// Middle-Mouse Scroll Speed (screenpixels per mousepixel)
-	int 		MouseScrollSpeedDefault;
+	int MouseScrollSpeedDefault;
 		/// Middle-Mouse Scroll Speed with Control pressed
-	int 		MouseScrollSpeedControl;
+	int MouseScrollSpeedControl;
 
-	int				MouseWarpX;						/// Cursor warp X position
-	int				MouseWarpY;						/// Cursor warp Y position
+	int MouseWarpX;                     /// Cursor warp X position
+	int MouseWarpY;                     /// Cursor warp Y position
 
-	char*		NormalFontColor;		/// Color for normal text displayed
-	char*		ReverseFontColor;		/// Color for reverse text displayed
+	char* NormalFontColor;              /// Color for normal text displayed
+	char* ReverseFontColor;             /// Color for reverse text displayed
 
-	//		Fillers
-	GraphicConfig* Filler;				/// Filler graphics
-	int*		FillerX;				/// Filler X positions
-	int*		FillerY;				/// Filler Y positions
-	int				NumFillers;				/// Number of fillers
+	// Fillers
+	GraphicConfig* Filler;              /// Filler graphics
+	int* FillerX;                       /// Filler X positions
+	int* FillerY;                       /// Filler Y positions
+	int  NumFillers;                    /// Number of fillers
 
-	//		Resource line
-	GraphicConfig Resource;				/// Resource background
-	int				ResourceX;				/// Resource X position
-	int				ResourceY;				/// Resource Y position
+	// Resource line
+	GraphicConfig Resource;             /// Resource background
+	int ResourceX;                      /// Resource X position
+	int ResourceY;                      /// Resource Y position
 
 	struct {
-		GraphicConfig Icon;				/// icon image
-		int		IconRow;				/// icon image row (frame)
-		int		IconX;						/// icon X position
-		int		IconY;						/// icon Y position
-		int		IconW;						/// icon W position
-		int		IconH;						/// icon H position
-		int		TextX;						/// text X position
-		int		TextY;						/// text Y position
-	}				Resources[MaxCosts+2];		/// Icon+Text of all resources
-										/// +2 for food and score
+		GraphicConfig Icon;             /// icon image
+		int IconFrame;                  /// icon frame
+		int IconX;                      /// icon X position
+		int IconY;                      /// icon Y position
+		int IconW;                      /// icon W position
+		int IconH;                      /// icon H position
+		int TextX;                      /// text X position
+		int TextY;                      /// text Y position
+	} Resources[MaxCosts + 2];          /// Icon+Text of all resources
+                                        /// +2 for food and score
 
 	// Info panel
-	GraphicConfig InfoPanel;				/// Info panel background
-	int				InfoPanelX;				/// Info panel screen X position
-	int				InfoPanelY;				/// Info panel screen Y position
-	int				InfoPanelW;				/// Info panel width
-	int				InfoPanelH;				/// Info panel height
+	GraphicConfig InfoPanel;            /// Info panel background
+	int InfoPanelX;                     /// Info panel screen X position
+	int InfoPanelY;                     /// Info panel screen Y position
+	int InfoPanelW;                     /// Info panel width
+	int InfoPanelH;                     /// Info panel height
 
-	Button*		SingleSelectedButton;
-	char*		SingleSelectedText;
-	int				SingleSelectedFont;
-	int				SingleSelectedTextX;
-	int				SingleSelectedTextY;
-	Button*		SelectedButtons;		/// Selected buttons
-	int				NumSelectedButtons;		/// Number of selected buttons
-	char*		SelectedText;
-	int				SelectedFont;
-	int				SelectedTextX;
-	int				SelectedTextY;
-	int				MaxSelectedFont;
-	int				MaxSelectedTextX;		/// position to place '+#' text
-	int				MaxSelectedTextY;		/// if > maximum units selected
+	Button* SingleSelectedButton;       /// FIXME: docu
+	char*   SingleSelectedText;         /// FIXME: docu
+	int     SingleSelectedFont;         /// FIXME: docu
+	int     SingleSelectedTextX;        /// FIXME: docu
+	int     SingleSelectedTextY;        /// FIXME: docu
+	Button* SelectedButtons;            /// Selected buttons
+	int     NumSelectedButtons;         /// Number of selected buttons
+	char*   SelectedText;               /// FIXME: docu
+	int     SelectedFont;               /// FIXME: docu
+	int     SelectedTextX;              /// FIXME: docu
+	int     SelectedTextY;              /// FIXME: docu
+	int     MaxSelectedFont;            /// FIXME: docu
+	int     MaxSelectedTextX;           /// position to place '+#' text
+	int     MaxSelectedTextY;           /// if > maximum units selected
 
-	Button*		SingleTrainingButton;
-	char*		SingleTrainingText;
-	int				SingleTrainingFont;
-	int				SingleTrainingTextX;
-	int				SingleTrainingTextY;
-	Button*		TrainingButtons;		/// Training buttons
-	int				NumTrainingButtons;		/// Number of training buttons
-	char*		TrainingText;
-	int				TrainingFont;
-	int				TrainingTextX;
-	int				TrainingTextY;
+	Button* SingleTrainingButton;       /// FIXME: docu
+	char*   SingleTrainingText;         /// FIXME: docu
+	int     SingleTrainingFont;         /// FIXME: docu
+	int     SingleTrainingTextX;        /// FIXME: docu
+	int     SingleTrainingTextY;        /// FIXME: docu
+	Button* TrainingButtons;            /// Training buttons
+	int     NumTrainingButtons;         /// Number of training buttons
+	char*   TrainingText;               /// FIXME: docu
+	int     TrainingFont;               /// FIXME: docu
+	int     TrainingTextX;              /// FIXME: docu
+	int     TrainingTextY;              /// FIXME: docu
 
-	Button*		UpgradingButton;
-	char*		UpgradingText;
-	int				UpgradingFont;
-	int				UpgradingTextX;
-	int				UpgradingTextY;
+	Button* UpgradingButton;
+	char*   UpgradingText;
+	int     UpgradingFont;
+	int     UpgradingTextX;
+	int     UpgradingTextY;
 
-	Button*		ResearchingButton;
-	char*		ResearchingText;
-	int				ResearchingFont;
-	int				ResearchingTextX;
-	int				ResearchingTextY;
+	Button* ResearchingButton;
+	char*   ResearchingText;
+	int     ResearchingFont;
+	int     ResearchingTextX;
+	int     ResearchingTextY;
 
-	Button*		TransportingButtons;
-	int				NumTransportingButtons;		/// Number of transporting buttons
-	char*		TransportingText;
-	int				TransportingFont;
-	int				TransportingTextX;
-	int				TransportingTextY;
+	Button* TransportingButtons;
+	int     NumTransportingButtons;     /// Number of transporting buttons
+	char*   TransportingText;
+	int     TransportingFont;
+	int     TransportingTextX;
+	int     TransportingTextY;
 
 	// Completed bar
-	SDL_Color		CompletedBarColorRGB;		/// color for completed bar
-	Uint32		CompletedBarColor;		/// color for completed bar
-	int         CompletedBarShadow;     /// should complete bar have shadow
-	int				CompletedBarX;				/// completed bar X position
-	int				CompletedBarY;				/// completed bar Y position
-	int				CompletedBarW;				/// completed bar width
-	int				CompletedBarH;				/// completed bar height
-	char*		CompletedBarText;		/// completed bar text
-	int				CompletedBarFont;		/// completed bar font
-	int				CompletedBarTextX;		/// completed bar text X position
-	int				CompletedBarTextY;		/// completed bar text Y position
+	SDL_Color CompletedBarColorRGB;     /// color for completed bar
+	Uint32    CompletedBarColor;        /// color for completed bar
+	int       CompletedBarShadow;       /// should complete bar have shadow
+	int       CompletedBarX;            /// completed bar X position
+	int       CompletedBarY;            /// completed bar Y position
+	int       CompletedBarW;            /// completed bar width
+	int       CompletedBarH;            /// completed bar height
+	char*     CompletedBarText;         /// completed bar text
+	int       CompletedBarFont;         /// completed bar font
+	int       CompletedBarTextX;        /// completed bar text X position
+	int       CompletedBarTextY;        /// completed bar text Y position
 
 	// Button panel
-	GraphicConfig ButtonPanel;				/// Button panel background
-	Button*		ButtonButtons;				/// Button panel buttons
-	int				NumButtonButtons;		/// Number of button panel buttons
-	int				ButtonPanelX;				/// Button panel screen X position
-	int				ButtonPanelY;				/// Button panel screen Y position
+	GraphicConfig ButtonPanel;          /// Button panel background
+	Button*       ButtonButtons;        /// Button panel buttons
+	int           NumButtonButtons;     /// Number of button panel buttons
+	int           ButtonPanelX;         /// Button panel screen X position
+	int           ButtonPanelY;         /// Button panel screen Y position
 
 	// Map area
-	ViewportMode ViewportMode;				/// Current viewport mode
-	Viewport*		MouseViewport;				/// Viewport containing mouse
-	Viewport*		SelectedViewport;		/// Current selected active viewport
-	int				NumViewports;				/// # Viewports currently used
-	Viewport		Viewports[MAX_NUM_VIEWPORTS];		/// Parameters of all viewports
+	ViewportMode ViewportMode;          /// Current viewport mode
+	Viewport*    MouseViewport;         /// Viewport containing mouse
+	Viewport*    SelectedViewport;      /// Current selected active viewport
+	int          NumViewports;          /// # Viewports currently used
+	Viewport     Viewports[MAX_NUM_VIEWPORTS]; /// Parameters of all viewports
 	// Map* attributes of Viewport are unused here:
-	Viewport		MapArea;				/// geometry of the whole map area
+	Viewport     MapArea;               /// geometry of the whole map area
 
 	// The menu panel
-	GraphicConfig MenuPanel;				/// menu panel background
-	int				MenuPanelX;				/// menu panel screen X position
-	int				MenuPanelY;				/// menu panel screen Y position
+	GraphicConfig MenuPanel;            /// menu panel background
+	int           MenuPanelX;           /// menu panel screen X position
+	int           MenuPanelY;           /// menu panel screen Y position
 
 	/// Menu buttons
 	struct {
-		int		X;						/// button screen X position
-		int		Y;						/// button screen Y position
-		char*		Text;						/// button caption
-		int		Width;						/// button width
-		int		Height;						/// button height
-		int		Button;						/// button style
-	}				MenuButton,
-				NetworkMenuButton,
-				NetworkDiplomacyButton;
+		int   X;                        /// button screen X position
+		int   Y;                        /// button screen Y position
+		char* Text;                     /// button caption
+		int   Width;                    /// button width
+		int   Height;                   /// button height
+		int   Button;                   /// button style
+	} MenuButton,
+	  NetworkMenuButton,
+	  NetworkDiplomacyButton;
 
 	// The minimap
-	GraphicConfig MinimapPanel;				/// minimap panel background
-	int				MinimapPanelX;				/// minimap panel screen X position
-	int				MinimapPanelY;				/// minimap panel screen Y position
-	int				MinimapW;				/// minimap screen Width
-	int				MinimapH;				/// minimap screen Height
-	int				MinimapPosX;				/// minimap screen X position
-	int				MinimapPosY;				/// minimap screen Y position
-	int				MinimapTransparent;	 /// unexplored areas are transparent
-	Uint32		ViewportCursorColor;		/// minimap cursor color
+	GraphicConfig MinimapPanel;         /// minimap panel background
+	int           MinimapPanelX;        /// minimap panel screen X position
+	int           MinimapPanelY;        /// minimap panel screen Y position
+	int           MinimapW;             /// minimap screen Width
+	int           MinimapH;             /// minimap screen Height
+	int           MinimapPosX;          /// minimap screen X position
+	int           MinimapPosY;          /// minimap screen Y position
+	int           MinimapTransparent;   /// unexplored areas are transparent
+	Uint32        ViewportCursorColor;  /// minimap cursor color
 
 	// The status line
-	GraphicConfig StatusLine;				/// Status line background
-	int				StatusLineX;				/// status line screen X position
-	int				StatusLineY;				/// status line screen Y position
-	int				StatusLineTextX;		/// status line screen text X position
-	int				StatusLineTextY;		/// status line screen text Y position
-	int				StatusLineFont;				/// Status line font
+	GraphicConfig StatusLine;           /// Status line background
+	int           StatusLineX;          /// status line screen X position
+	int           StatusLineY;          /// status line screen Y position
+	int           StatusLineTextX;      /// status line screen text X position
+	int           StatusLineTextY;      /// status line screen text Y position
+	int           StatusLineFont;       /// Status line font
 
 	// Offsets for 640x480 center used by menus
-	int				Offset640X;				/// Offset for 640x480 X position
-	int				Offset480Y;				/// Offset for 640x480 Y position
+	int Offset640X;                     /// Offset for 640x480 X position
+	int Offset480Y;                     /// Offset for 640x480 Y position
 
 	//
-	//		Cursors used.
+	//  Cursors used.
 	//
-	CursorConfig		Point;				/// General pointing cursor
-	CursorConfig		Glass;				/// HourGlass, system is waiting
-	CursorConfig		Cross;				/// Multi-select cursor.
-	CursorConfig		YellowHair;		/// Yellow action,attack cursor.
-	CursorConfig		GreenHair;		/// Green action,attack cursor.
-	CursorConfig		RedHair;		/// Red action,attack cursor.
-	CursorConfig		Scroll;				/// Cursor for scrolling map around.
+	CursorConfig Point;                 /// General pointing cursor
+	CursorConfig Glass;                 /// HourGlass, system is waiting
+	CursorConfig Cross;                 /// Multi-select cursor.
+	CursorConfig YellowHair;            /// Yellow action,attack cursor.
+	CursorConfig GreenHair;             /// Green action,attack cursor.
+	CursorConfig RedHair;               /// Red action,attack cursor.
+	CursorConfig Scroll;                /// Cursor for scrolling map around.
 
-	CursorConfig		ArrowE;				/// Cursor pointing east
-	CursorConfig		ArrowNE;		/// Cursor pointing north east
-	CursorConfig		ArrowN;				/// Cursor pointing north
-	CursorConfig		ArrowNW;		/// Cursor pointing north west
-	CursorConfig		ArrowW;				/// Cursor pointing west
-	CursorConfig		ArrowSW;		/// Cursor pointing south west
-	CursorConfig		ArrowS;				/// Cursor pointing south
-	CursorConfig		ArrowSE;		/// Cursor pointing south east
+	CursorConfig ArrowE;                /// Cursor pointing east
+	CursorConfig ArrowNE;               /// Cursor pointing north east
+	CursorConfig ArrowN;                /// Cursor pointing north
+	CursorConfig ArrowNW;               /// Cursor pointing north west
+	CursorConfig ArrowW;                /// Cursor pointing west
+	CursorConfig ArrowSW;               /// Cursor pointing south west
+	CursorConfig ArrowS;                /// Cursor pointing south
+	CursorConfig ArrowSE;               /// Cursor pointing south east
 
-// FIXME: could use different sounds/speach for the errors
+// FIXME: could use different sounds/speech for the errors
 // Is in gamesounds?
-//	SoundConfig		PlacementError;				/// played on placements errors
-//	SoundConfig		PlacementSuccess;		/// played on placements success
-//	SoundConfig		Click;						/// click noice used often
+//	SoundConfig PlacementError;         /// played on placements errors
+//	SoundConfig PlacementSuccess;       /// played on placements success
+//	SoundConfig Click;                  /// click noice used often
 
-	MenuPanel*				MenuPanels;		/// Menu panels
+	MenuPanel* MenuPanels;              /// Menu panels
 
-	GraphicConfig		VictoryBackground;
-	GraphicConfig		DefeatBackground;
+	GraphicConfig VictoryBackground;    /// FIXME: docu
+	GraphicConfig DefeatBackground;     /// FIXME: docu
 } UI;
 
 /*----------------------------------------------------------------------------
---		Variables
+--  Variables
 ----------------------------------------------------------------------------*/
 
-extern UI TheUI;						/// The user interface
-extern UI** UI_Table;						/// All available user interfaces
+extern UI TheUI;                        /// The user interface
+extern UI** UI_Table;                   /// All available user interfaces
 
-extern char RightButtonAttacks;				/// right button 0 move, 1 attack.
-extern ButtonAction* CurrentButtons;  /// Current Selected Buttons
-extern char FancyBuildings;				/// Mirror buildings 1 yes, 0 now.
+extern char RightButtonAttacks;         /// right button 0 move, 1 attack.
+extern ButtonAction* CurrentButtons;    /// Current Selected Buttons
+extern char FancyBuildings;             /// Mirror buildings 1 yes, 0 now.
 
-extern int SpeedKeyScroll;				/// Keyboard Scrolling Speed, in Frames
-extern int SpeedMouseScroll;				/// Mouse Scrolling Speed, in Frames
+extern int SpeedKeyScroll;              /// Keyboard Scrolling Speed, in Frames
+extern int SpeedMouseScroll;            /// Mouse Scrolling Speed, in Frames
 
-extern char* UiGroupKeys;				/// up to 11 keys used for group selection
+extern char* UiGroupKeys;               /// up to 11 keys used for group selection
 
 // only exported to save them
 
 /*----------------------------------------------------------------------------
---		Functions
+--  Functions
 ----------------------------------------------------------------------------*/
 
-extern void InitUserInterface(const char*);		/// initialize the ui
-extern void LoadUserInterface(void);				/// load ui graphics
-extern void SaveUserInterface(CLFile*);				/// save the ui state
-extern void CleanUI(UI*);						/// clean up a ui
-extern void CleanUserInterface(void);				/// clean up the ui module
-extern void UserInterfaceCclRegister(void);		/// register ccl features
+	/// Initialize the ui
+extern void InitUserInterface(const char* race_name);
+	/// Load ui graphics
+extern void LoadUserInterface(void);
+	/// Save the ui state
+extern void SaveUserInterface(CLFile* file);
+	/// Clean up a ui
+extern void CleanUI(UI* ui);
+	/// Clean up the ui module
+extern void CleanUserInterface(void);
+	/// Register ccl features
+extern void UserInterfaceCclRegister(void);
 
 	/// Called if the mouse is moved in Normal interface state
-extern void UIHandleMouseMove(int x,int y);
+extern void UIHandleMouseMove(int x, int y);
 	/// Called if any mouse button is pressed down
 extern void UIHandleButtonDown(unsigned button);
 	/// Called if any mouse button is released up
@@ -375,7 +380,7 @@ extern void RestrictCursorToViewport(void);
 extern void RestrictCursorToMinimap(void);
 
 	/// Get viewport for screen pixel position
-extern Viewport* GetViewport(int, int);
+extern Viewport* GetViewport(int x, int y);
 	/// Get viewport for tile map position
 extern Viewport* MapTileGetViewport(int, int);
 	/// Cycle through all available viewport modes
diff --git a/src/ui/mainscr.cpp b/src/ui/mainscr.cpp
index 8e41eea48..a6eb118cb 100644
--- a/src/ui/mainscr.cpp
+++ b/src/ui/mainscr.cpp
@@ -598,9 +598,8 @@ global void DrawResources(void)
 
 	for (i = 0; i < MaxCosts; ++i) {
 		if (TheUI.Resources[i].Icon.Graphic) {
-			VideoDrawSubClip(TheUI.Resources[i].Icon.Graphic, 0,
-				TheUI.Resources[i].IconRow * TheUI.Resources[i].IconH,
-				TheUI.Resources[i].IconW, TheUI.Resources[i].IconH,
+			VideoDrawClip(TheUI.Resources[i].Icon.Graphic,
+				TheUI.Resources[i].IconFrame,
 				TheUI.Resources[i].IconX, TheUI.Resources[i].IconY);
 		}
 		if (TheUI.Resources[i].TextX != -1) {
@@ -611,9 +610,8 @@ global void DrawResources(void)
 		}
 	}
 	if (TheUI.Resources[FoodCost].Icon.Graphic) {
-		VideoDrawSubClip(TheUI.Resources[FoodCost].Icon.Graphic, 0,
-			TheUI.Resources[FoodCost].IconRow * TheUI.Resources[FoodCost].IconH,
-			TheUI.Resources[FoodCost].IconW, TheUI.Resources[FoodCost].IconH,
+		VideoDrawClip(TheUI.Resources[FoodCost].Icon.Graphic,
+			TheUI.Resources[FoodCost].IconFrame,
 			TheUI.Resources[FoodCost].IconX, TheUI.Resources[FoodCost].IconY);
 	}
 	if (TheUI.Resources[FoodCost].TextX != -1) {
@@ -628,9 +626,8 @@ global void DrawResources(void)
 	}
 
 	if (TheUI.Resources[ScoreCost].Icon.Graphic) {
-		VideoDrawSubClip(TheUI.Resources[ScoreCost].Icon.Graphic, 0,
-			TheUI.Resources[ScoreCost].IconRow * TheUI.Resources[ScoreCost].IconH,
-			TheUI.Resources[ScoreCost].IconW, TheUI.Resources[ScoreCost].IconH,
+		VideoDrawClip(TheUI.Resources[ScoreCost].Icon.Graphic,
+			TheUI.Resources[ScoreCost].IconFrame,
 			TheUI.Resources[ScoreCost].IconX, TheUI.Resources[ScoreCost].IconY);
 	}
 	if (TheUI.Resources[ScoreCost].TextX != -1) {
@@ -1019,11 +1016,8 @@ global void DrawCosts(void)
 	x = TheUI.StatusLineX + 270;
 	if (CostsMana) {
 		// FIXME: hardcoded image!!!
-		VideoDrawSubClip(TheUI.Resources[GoldCost].Icon.Graphic,
-			/* 0, TheUI.Resources[GoldCost].IconRow *
-			   TheUI.Resources[GoldCost].IconH */
-			0, 3 * TheUI.Resources[GoldCost].IconH,
-			TheUI.Resources[GoldCost].IconW, TheUI.Resources[GoldCost].IconH,
+		VideoDrawClip(TheUI.Resources[GoldCost].Icon.Graphic,
+			3,
 			x, TheUI.StatusLineTextY);
 
 		VideoDrawNumber(x + 15, TheUI.StatusLineTextY, GameFont, CostsMana);
@@ -1033,9 +1027,8 @@ global void DrawCosts(void)
 	for (i = 1; i < MaxCosts; ++i) {
 		if (Costs[i]) {
 			if (TheUI.Resources[i].Icon.Graphic) {
-				VideoDrawSubClip(TheUI.Resources[i].Icon.Graphic, 0,
-					TheUI.Resources[i].IconRow * TheUI.Resources[i].IconH,
-					TheUI.Resources[i].IconW, TheUI.Resources[i].IconH,
+				VideoDrawClip(TheUI.Resources[i].Icon.Graphic,
+					TheUI.Resources[i].IconFrame,
 					x, TheUI.StatusLineTextY);
 			}
 			VideoDrawNumber(x + 15, TheUI.StatusLineTextY, GameFont,Costs[i]);
@@ -1048,9 +1041,8 @@ global void DrawCosts(void)
 
 	if (CostsFood) {
 		// FIXME: hardcoded image!!!
-		VideoDrawSubClip(TheUI.Resources[FoodCost].Icon.Graphic, 0,
-			TheUI.Resources[FoodCost].IconRow * TheUI.Resources[FoodCost].IconH,
-			TheUI.Resources[FoodCost].IconW, TheUI.Resources[FoodCost].IconH,
+		VideoDrawClip(TheUI.Resources[FoodCost].Icon.Graphic,
+			TheUI.Resources[FoodCost].IconFrame,
 			x, TheUI.StatusLineTextY);
 		VideoDrawNumber(x + 15, TheUI.StatusLineTextY, GameFont, CostsFood);
 		x += 45;
diff --git a/src/ui/script_ui.cpp b/src/ui/script_ui.cpp
index d56fa7b88..df05a70db 100644
--- a/src/ui/script_ui.cpp
+++ b/src/ui/script_ui.cpp
@@ -1377,9 +1377,9 @@ local int CclDefineUI(lua_State* l)
 						lua_rawgeti(l, -1, subk + 1);
 						ui->Resources[res].Icon.File = strdup(LuaToString(l, -1));
 						lua_pop(l, 1);
-					} else if (!strcmp(value, "row")) {
+					} else if (!strcmp(value, "frame")) {
 						lua_rawgeti(l, -1, subk + 1);
-						ui->Resources[res].IconRow = LuaToNumber(l, -1);
+						ui->Resources[res].IconFrame = LuaToNumber(l, -1);
 						lua_pop(l, 1);
 					} else if (!strcmp(value, "size")) {
 						lua_rawgeti(l, -1, subk + 1);
diff --git a/src/ui/ui.cpp b/src/ui/ui.cpp
index 1c4daa3db..04d77a160 100644
--- a/src/ui/ui.cpp
+++ b/src/ui/ui.cpp
@@ -203,7 +203,7 @@ global void LoadUserInterface(void)
 	MenuPanel* menupanel;
 
 	//
-	//		Load graphics
+	//  Load graphics
 	//
 	for (i = 0; i < TheUI.NumFillers; ++i) {
 		if (TheUI.Filler[i].File) {
@@ -218,7 +218,8 @@ global void LoadUserInterface(void)
 		// FIXME: reuse same graphics?
 		if (TheUI.Resources[i].Icon.File) {
 			TheUI.Resources[i].Icon.Graphic =
-				LoadGraphic(TheUI.Resources[i].Icon.File);
+				LoadSprite(TheUI.Resources[i].Icon.File,
+					TheUI.Resources[i].IconW, TheUI.Resources[i].IconH);
 		}
 	}