summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/genworld.cpp2
-rw-r--r--src/genworld_gui.cpp2
-rw-r--r--src/gfx.cpp13
-rw-r--r--src/gfx_func.h1
-rw-r--r--src/saveload/saveload.cpp4
5 files changed, 18 insertions, 4 deletions
diff --git a/src/genworld.cpp b/src/genworld.cpp
index 88e1b84a5..2b2dfb5fd 100644
--- a/src/genworld.cpp
+++ b/src/genworld.cpp
@@ -77,7 +77,7 @@ static void CleanupGeneration()
{
_generating_world = false;
- if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE);
+ SetMouseCursorBusy(false);
/* Show all vital windows again, because we have hidden them */
if (_gw.threaded && _game_mode != GM_MENU) ShowVitalWindows();
SetModalProgress(false);
diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp
index ad64ae802..741fd75d1 100644
--- a/src/genworld_gui.cpp
+++ b/src/genworld_gui.cpp
@@ -1190,7 +1190,7 @@ struct GenerateProgressWindow : public Window {
{
switch (widget) {
case WID_GP_ABORT:
- if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE);
+ SetMouseCursorBusy(false);
ShowQuery(
STR_GENERATION_ABORT_CAPTION,
STR_GENERATION_ABORT_MESSAGE,
diff --git a/src/gfx.cpp b/src/gfx.cpp
index f3a98461d..909f6729e 100644
--- a/src/gfx.cpp
+++ b/src/gfx.cpp
@@ -1573,6 +1573,19 @@ void CursorTick()
}
/**
+ * Set or unset the ZZZ cursor.
+ * @param busy Whether to show the ZZZ cursor.
+ */
+void SetMouseCursorBusy(bool busy)
+{
+ if (busy) {
+ if (_cursor.sprite == SPR_CURSOR_MOUSE) SetMouseCursor(SPR_CURSOR_ZZZ, PAL_NONE);
+ } else {
+ if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE);
+ }
+}
+
+/**
* Assign a single non-animated sprite to the cursor.
* @param sprite Sprite to draw for the cursor.
* @param pal Palette to use for recolouring.
diff --git a/src/gfx_func.h b/src/gfx_func.h
index 6576dee4f..973e15f2b 100644
--- a/src/gfx_func.h
+++ b/src/gfx_func.h
@@ -145,6 +145,7 @@ bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int heigh
/* window.cpp */
void DrawOverlappedWindowForAll(int left, int top, int right, int bottom);
+void SetMouseCursorBusy(bool busy);
void SetMouseCursor(CursorID cursor, PaletteID pal);
void SetAnimatedMouseCursor(const AnimCursor *table);
void CursorTick();
diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp
index 724bc649b..3d6f3c494 100644
--- a/src/saveload/saveload.cpp
+++ b/src/saveload/saveload.cpp
@@ -2460,7 +2460,7 @@ static void SaveFileStart()
{
_sl.ff_state = _fast_forward;
_fast_forward = 0;
- if (_cursor.sprite == SPR_CURSOR_MOUSE) SetMouseCursor(SPR_CURSOR_ZZZ, PAL_NONE);
+ SetMouseCursorBusy(true);
InvalidateWindowData(WC_STATUS_BAR, 0, SBI_SAVELOAD_START);
_sl.saveinprogress = true;
@@ -2470,7 +2470,7 @@ static void SaveFileStart()
static void SaveFileDone()
{
if (_game_mode != GM_MENU) _fast_forward = _sl.ff_state;
- if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE);
+ SetMouseCursorBusy(false);
InvalidateWindowData(WC_STATUS_BAR, 0, SBI_SAVELOAD_FINISH);
_sl.saveinprogress = false;