[gnome-tetravex] Improve code.



commit 090e7aea13b85bf0dce9d7f61a0c6a687d0cec4e
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date:   Fri Sep 20 21:26:52 2019 +0200

    Improve code.

 src/gnome-tetravex.vala | 10 +++++-----
 src/puzzle-view.vala    | 19 -------------------
 src/puzzle.vala         | 10 +++-------
 3 files changed, 8 insertions(+), 31 deletions(-)
---
diff --git a/src/gnome-tetravex.vala b/src/gnome-tetravex.vala
index d8ed49b..a7a71e2 100644
--- a/src/gnome-tetravex.vala
+++ b/src/gnome-tetravex.vala
@@ -331,7 +331,7 @@ private class Tetravex : Gtk.Application
         puzzle_init_done = true;
         puzzle.tick.connect (tick_cb);
         puzzle.solved.connect (solved_cb);
-        puzzle.solved_right.connect (solved_right_cb);
+        puzzle.notify ["is-solved-right"].connect (solved_right_cb);
         puzzle.show_end_game.connect (show_end_game_cb);
         view.puzzle = puzzle;
         tick_cb ();
@@ -365,9 +365,9 @@ private class Tetravex : Gtk.Application
         finish_action.set_enabled (false);
     }
 
-    private void solved_right_cb (Puzzle puzzle, bool is_solved)
+    private void solved_right_cb ()
     {
-        if (is_solved)
+        if (puzzle.is_solved_right)
         {
             solve_action.set_enabled (false);
             finish_action.set_enabled (/* should never happen */ !puzzle.paused);
@@ -419,7 +419,7 @@ private class Tetravex : Gtk.Application
 
     private void new_game_cb ()
     {
-        if (view.game_in_progress)
+        if (puzzle.game_in_progress)
         {
             MessageDialog dialog = new MessageDialog (window,
                                                       DialogFlags.MODAL,
@@ -507,7 +507,7 @@ private class Tetravex : Gtk.Application
 
         if (size == settings.get_int (KEY_GRID_SIZE))
             return;
-        if (view.game_in_progress)
+        if (puzzle.game_in_progress)
         {
             MessageDialog dialog = new MessageDialog (window,
                                                       DialogFlags.MODAL,
diff --git a/src/puzzle-view.vala b/src/puzzle-view.vala
index dc01d2d..9bfb05c 100644
--- a/src/puzzle-view.vala
+++ b/src/puzzle-view.vala
@@ -134,25 +134,6 @@ private class PuzzleView : Gtk.DrawingArea
         animation_timer.start ();
     }
 
-    [CCode (notify = false)] internal bool game_in_progress
-    {
-        internal get
-        {
-            if (puzzle.is_solved)
-                return false;
-
-            for (uint8 y = 0; y < puzzle.size; y++)
-            {
-                for (uint8 x = puzzle.size; x < puzzle.size * 2; x++)
-                {
-                    if (puzzle.get_tile (x, y) == null)
-                        return true;
-                }
-            }
-            return false;
-        }
-    }
-
     private void redraw_tile (TileImage image)
     {
         queue_draw_area ((int) (image.x + 0.5),
diff --git a/src/puzzle.vala b/src/puzzle.vala
index b0feb0f..921ce36 100644
--- a/src/puzzle.vala
+++ b/src/puzzle.vala
@@ -235,11 +235,13 @@ private class Puzzle : Object
     }
 
     private uint timeout_id = 0;
-    internal bool is_solved_right { internal get; private set; default = false; }
+    [CCode (notify = false)] internal bool game_in_progress { internal get; private set; default = false; }
+    [CCode (notify = true)]  internal bool is_solved_right  { internal get; private set; default = false; }
     internal void switch_tiles (uint8 x0, uint8 y0, uint8 x1, uint8 y1, uint delay_if_finished = 0)
     {
         if (x0 == x1 && y0 == y1)
             return;
+        game_in_progress = true;
 
         Tile? t0 = board [x0, y0];
         Tile? t1 = board [x1, y1];
@@ -265,15 +267,9 @@ private class Puzzle : Object
                     });
         }
         else if (solved_on_right ())
-        {
             is_solved_right = true;
-            solved_right (true);
-        }
         else if (is_solved_right)
-        {
             is_solved_right = false;
-            solved_right (false);
-        }
     }
 
     /*\


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]