[gnome-chess] Track pause state only in ChessGame
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-chess] Track pause state only in ChessGame
- Date: Sat, 3 Aug 2013 15:53:38 +0000 (UTC)
commit fd92c7044e8c65f51324efb74698b366a6c6fe0c
Author: Michael Catanzaro <mike catanzaro gmail com>
Date: Sat Aug 3 09:22:16 2013 -0500
Track pause state only in ChessGame
GnomeChess and ChessGame don't need to keep track of this separately.
src/chess-game.vala | 21 ++++++++++++++++++++-
src/gnome-chess.vala | 30 ++++++++----------------------
2 files changed, 28 insertions(+), 23 deletions(-)
---
diff --git a/src/chess-game.vala b/src/chess-game.vala
index a71ce6f..7efa4a1 100644
--- a/src/chess-game.vala
+++ b/src/chess-game.vala
@@ -1253,7 +1253,6 @@ public enum ChessRule
public class ChessGame
{
public bool is_started;
- public bool is_paused = false;
public ChessResult result;
public ChessRule rule;
public List<ChessState> move_stack;
@@ -1267,6 +1266,8 @@ public class ChessGame
public signal void moved (ChessMove move);
public signal void undo ();
public signal void ended ();
+
+ public bool is_paused { get; private set; default = false; }
public ChessState current_state
{
@@ -1493,6 +1494,24 @@ public class ChessGame
get { return move_stack.length() - 1; }
}
+ public void pause ()
+ {
+ if (clock != null && result == ChessResult.IN_PROGRESS && !is_paused)
+ {
+ clock.pause ();
+ is_paused = true;
+ }
+ }
+
+ public void unpause ()
+ {
+ if (clock != null && result == ChessResult.IN_PROGRESS && is_paused)
+ {
+ clock.unpause ();
+ is_paused = false;
+ }
+ }
+
private void stop (ChessResult result, ChessRule rule)
{
this.result = result;
diff --git a/src/gnome-chess.vala b/src/gnome-chess.vala
index aad37a8..8623655 100644
--- a/src/gnome-chess.vala
+++ b/src/gnome-chess.vala
@@ -65,7 +65,6 @@ public class Application : Gtk.Application
private ChessPlayer? human_player = null;
private ChessEngine? opponent_engine = null;
private bool is_fullscreen = false;
- private bool is_paused = false;
private bool widget_sensitivity[8];
private enum SensitivityIndex
@@ -97,7 +96,7 @@ public class Application : Gtk.Application
public bool on_window_focus_out (Gdk.EventFocus focus)
{
if (((Gtk.ToolButton) pause_button).stock_id == "gtk-media-pause" )
- set_paused_state (true);
+ game.pause ();
return false;
}
@@ -105,7 +104,7 @@ public class Application : Gtk.Application
public bool on_window_focus_in (Gdk.EventFocus focus)
{
if (((Gtk.ToolButton) pause_button).stock_id == "gtk-media-pause" )
- set_paused_state (false);
+ game.unpause ();
return false;
}
@@ -1210,10 +1209,14 @@ public class Application : Gtk.Application
[CCode (cname = "G_MODULE_EXPORT pause_game_button_pressed_cb", instance_pos = -1)]
public void pause_game_button_pressed_cb (Gtk.Widget widget)
{
- set_paused_state (!is_paused);
+ if (game.is_paused)
+ game.unpause ();
+ else
+ game.pause ();
Gtk.ToolButton tool_button = (Gtk.ToolButton) pause_button;
- if (is_paused)
+
+ if (game.is_paused)
{
tool_button.stock_id = "gtk-media-play";
tool_button.label = "Start";
@@ -1235,23 +1238,6 @@ public class Application : Gtk.Application
}
}
- public void set_paused_state (bool paused)
- {
- if (paused == is_paused || game.result != ChessResult.IN_PROGRESS)
- return;
-
- is_paused = paused;
- game.is_paused = paused;
-
- if (game.clock != null)
- {
- if (paused)
- game.clock.pause ();
- else
- game.clock.unpause ();
- }
- }
-
public void quit_cb ()
{
quit_game ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]