[gnome-nibbles/wip/vala: 35/64] Replace bonus when countdown reaches 0.
- From: Iulian Radu <iulianradu src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-nibbles/wip/vala: 35/64] Replace bonus when countdown reaches 0.
- Date: Sun, 9 Aug 2015 12:54:22 +0000 (UTC)
commit c56a109c79a7946356d988b1f29bfa12b6df1b25
Author: Iulian Radu <iulian radu67 gmail com>
Date: Fri Jul 3 17:03:58 2015 +0300
Replace bonus when countdown reaches 0.
src/boni.vala | 12 ++++++++++++
src/nibbles-game.vala | 20 ++++++++++++++++++++
src/nibbles-view.vala | 8 ++++++++
src/worm.vala | 3 +++
4 files changed, 43 insertions(+), 0 deletions(-)
---
diff --git a/src/boni.vala b/src/boni.vala
index 2f5462f..a76df64 100644
--- a/src/boni.vala
+++ b/src/boni.vala
@@ -28,6 +28,7 @@ public class Boni : Object
public const int MAX_MISSED = 2;
public signal void bonus_added ();
+ public signal void bonus_removed (Bonus bonus);
public Boni (int numworms)
{
@@ -55,6 +56,17 @@ public class Boni : Object
// if (type != BonusType.REGULAR)
// play_sound ("appear");
}
+
+ public void remove_bonus (int[,] walls, Bonus bonus)
+ {
+ walls[bonus.x, bonus.y] = NibblesGame.EMPTYCHAR;
+ walls[bonus.x + 1, bonus.y] = NibblesGame.EMPTYCHAR;
+ walls[bonus.x, bonus.y + 1] = NibblesGame.EMPTYCHAR;
+ walls[bonus.x + 1, bonus.y + 1] = NibblesGame.EMPTYCHAR;
+
+ bonuses.remove (bonus);
+ bonus_removed (bonus);
+ }
}
public class Bonus : Object
diff --git a/src/nibbles-game.vala b/src/nibbles-game.vala
index 3282969..a64b661 100644
--- a/src/nibbles-game.vala
+++ b/src/nibbles-game.vala
@@ -199,6 +199,26 @@ public class NibblesGame : Object
{
foreach (var worm in worms)
{
+ if (boni.missed > Boni.MAX_MISSED)
+ {
+ if (worm.score > 0)
+ worm.score--;
+ }
+
+ foreach (var bonus in boni.bonuses)
+ {
+ if (bonus.countdown-- == 0)
+ {
+ if (bonus.type == BonusType.REGULAR && !bonus.fake)
+ {
+ boni.remove_bonus (walls, bonus);
+ boni.missed++;
+ add_bonus (true);
+ }
+ else
+ boni.remove_bonus (walls, bonus);
+ }
+ }
if (worm.is_stopped)
continue;
diff --git a/src/nibbles-view.vala b/src/nibbles-view.vala
index 1319b4d..c7c3797 100644
--- a/src/nibbles-view.vala
+++ b/src/nibbles-view.vala
@@ -30,6 +30,7 @@ public class NibblesView : GtkClutter.Embed
_game = value;
_game.boni.bonus_added.connect (bonus_added_cb);
+ _game.boni.bonus_removed.connect (bonus_removed_cb);
}
}
@@ -541,6 +542,13 @@ public class NibblesView : GtkClutter.Embed
bonus_actors.set (bonus, actor);
}
+ public void bonus_removed_cb (Bonus bonus)
+ {
+ var bonus_actor = bonus_actors.get (bonus);
+ bonus_actor.hide ();
+ stage.remove_child (bonus_actor);
+ }
+
public void boni_rescale (int tile_size)
{
float x_pos, y_pos;
diff --git a/src/worm.vala b/src/worm.vala
index b760437..8754c60 100644
--- a/src/worm.vala
+++ b/src/worm.vala
@@ -33,6 +33,8 @@ public class Worm : Object
public bool is_stopped = false;
public int lives { get; private set; }
+ public int score;
+
private WormDirection _direction;
public WormDirection direction
{
@@ -67,6 +69,7 @@ public class Worm : Object
human = true;
starting_direction = direction;
lives = STARTING_LIVES;
+ score = 0;
list = new Gee.LinkedList<Position?> ();
key_queue = new Gee.ArrayQueue<WormDirection> ();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]