[gnome-tetravex] Fix a bug.
- From: Arnaud B. <arnaudb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-tetravex] Fix a bug.
- Date: Sat, 21 Sep 2019 00:45:49 +0000 (UTC)
commit a30768e9c90d265d2c24fd6522b191cdc36d581d
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date: Fri Sep 20 23:41:18 2019 +0200
Fix a bug.
Looks like you can select a
tile after puzzle is solved
because you gave up. Ooops.
src/gnome-tetravex.vala | 5 +----
src/puzzle-view.vala | 4 ++--
src/puzzle.vala | 29 +++++++++++++++--------------
3 files changed, 18 insertions(+), 20 deletions(-)
---
diff --git a/src/gnome-tetravex.vala b/src/gnome-tetravex.vala
index 428f7b8..b35368d 100644
--- a/src/gnome-tetravex.vala
+++ b/src/gnome-tetravex.vala
@@ -485,9 +485,6 @@ private class Tetravex : Gtk.Application
{
puzzle.solve ();
new_game_solve_stack.set_visible_child_name ("new-game");
- pause_action.set_enabled (false);
- solve_action.set_enabled (false);
- finish_action.set_enabled (false);
}
}
@@ -507,7 +504,7 @@ private class Tetravex : Gtk.Application
if (size == settings.get_int (KEY_GRID_SIZE))
return;
- if (puzzle.game_in_progress)
+ if (puzzle.game_in_progress && !puzzle.is_solved)
{
MessageDialog dialog = new MessageDialog (window,
DialogFlags.MODAL,
diff --git a/src/puzzle-view.vala b/src/puzzle-view.vala
index 9bfb05c..76bf21e 100644
--- a/src/puzzle-view.vala
+++ b/src/puzzle-view.vala
@@ -491,7 +491,7 @@ private class PuzzleView : Gtk.DrawingArea
protected override bool button_press_event (Gdk.EventButton event)
{
- if (puzzle.paused)
+ if (puzzle.paused || puzzle.is_solved)
return false;
if (event.button == 1)
@@ -554,7 +554,7 @@ private class PuzzleView : Gtk.DrawingArea
protected override bool button_release_event (Gdk.EventButton event)
{
- if (puzzle.paused)
+ if (puzzle.paused || puzzle.is_solved)
return false;
if (event.button == 1 && selected_tile != null && selection_timeout == 0)
diff --git a/src/puzzle.vala b/src/puzzle.vala
index 921ce36..102ef6a 100644
--- a/src/puzzle.vala
+++ b/src/puzzle.vala
@@ -70,24 +70,23 @@ private class Puzzle : Object
internal signal void show_end_game ();
internal signal void tick ();
- [CCode (notify = false)] internal bool is_solved
+ [CCode (notify = false)] internal bool is_solved { internal get; private set; default = false; }
+ private bool check_if_solved ()
{
- internal get
+ /* Solved if entire left hand side is complete (we ensure only tiles
+ that fit are allowed */
+ for (uint8 x = 0; x < size; x++)
{
- /* Solved if entire left hand side is complete (we ensure only tiles
- that fit are allowed */
- for (uint8 x = 0; x < size; x++)
+ for (uint8 y = 0; y < size; y++)
{
- for (uint8 y = 0; y < size; y++)
- {
- Tile? tile = board [x, y];
- if (tile == null)
- return false;
- }
+ Tile? tile = board [x, y];
+ if (tile == null)
+ return false;
}
-
- return true;
}
+
+ is_solved = true;
+ return true;
}
internal Puzzle (uint8 size)
@@ -253,7 +252,7 @@ private class Puzzle : Object
if (t1 != null)
tile_moved ((!) t1, x0, y0);
- if (is_solved)
+ if (check_if_solved ())
{
stop_clock ();
solved ();
@@ -368,6 +367,8 @@ private class Puzzle : Object
tile_moved (tile, tile.x, tile.y);
}
+ is_solved = true;
+ solved ();
stop_clock ();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]