[gnome-chess] Track pause state only in ChessGame



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]