Index: samples/pop_pop_win/lib/src/game/game.dart |
diff --git a/samples/pop_pop_win/lib/src/game/game.dart b/samples/pop_pop_win/lib/src/game/game.dart |
index b62f1e79f7c4c68c0bd82d046b69a72df7ff81e9..07b8971ec0179cc2c8271dc03172974a62731d74 100644 |
--- a/samples/pop_pop_win/lib/src/game/game.dart |
+++ b/samples/pop_pop_win/lib/src/game/game.dart |
@@ -3,8 +3,9 @@ part of pop_pop_win.game; |
class Game { |
final Field field; |
final Array2d<SquareState> _states; |
- final EventHandle<EventArgs> _updatedEvent = new EventHandle<EventArgs>(); |
- final EventHandle<GameState> _gameStateEvent = new EventHandle<GameState>(); |
+ final StreamController _updatedEvent = new StreamController(); |
+ final StreamController<GameState> _gameStateEvent = |
+ new StreamController<GameState>(); |
GameState _state; |
int _bombsLeft; |
@@ -12,10 +13,11 @@ class Game { |
DateTime _startTime; |
DateTime _endTime; |
- Game(Field field) : |
- this.field = field, |
- _state = GameState.reset, |
- _states = new Array2d<SquareState>(field.width, field.height, SquareState.hidden) { |
+ Game(Field field) |
+ : this.field = field, |
+ _state = GameState.reset, |
+ _states = new Array2d<SquareState>(field.width, field.height, |
+ SquareState.hidden) { |
assert(field != null); |
_bombsLeft = field.bombCount; |
_revealsLeft = field.length - field.bombCount; |
@@ -78,18 +80,18 @@ class Game { |
return false; |
} |
- List<Coordinate> reveal(int x, int y) { |
+ List<Point> reveal(int x, int y) { |
_ensureStarted(); |
require(canReveal(x, y), "Item cannot be revealed."); |
final currentSS = _states.get(x, y); |
- List<Coordinate> reveals; |
+ List<Point> reveals; |
// normal reveal |
if (currentSS == SquareState.hidden) { |
if (field.get(x, y)) { |
_setLost(); |
- reveals = <Coordinate>[]; |
+ reveals = <Point>[]; |
} else { |
reveals = _doReveal(x, y); |
} |
@@ -172,7 +174,7 @@ class Game { |
return false; |
} |
- List<Coordinate> _doChord(int x, int y) { |
+ List<Point> _doChord(int x, int y) { |
// this does not repeat a bunch of validations that have already happened |
// be careful |
final currentSS = _states.get(x, y); |
@@ -199,11 +201,10 @@ class Game { |
// for now we assume counts have been checked |
assert(flagged.length == adjCount); |
- var reveals = <Coordinate>[]; |
+ var reveals = <Point>[]; |
// if any of the hidden are bombs, we've failed |
if (failed) { |
- // TODO: assert one of the flags must be wrong, right? |
_setLost(); |
} else { |
for (final i in hidden) { |
@@ -217,12 +218,12 @@ class Game { |
return reveals; |
} |
- List<Coordinate> _doReveal(int x, int y) { |
+ List<Point> _doReveal(int x, int y) { |
assert(_states.get(x, y) == SquareState.hidden); |
_states.set(x, y, SquareState.revealed); |
_revealsLeft--; |
assert(_revealsLeft >= 0); |
- var reveals = [new Coordinate(x, y)]; |
+ var reveals = [new Point(x, y)]; |
if (_revealsLeft == 0) { |
_setWon(); |
} else if (field.getAdjacentCount(x, y) == 0) { |
@@ -257,7 +258,7 @@ class Game { |
_setState(GameState.lost); |
} |
- void _update() => _updatedEvent.add(EventArgs.empty); |
+ void _update() => _updatedEvent.add(null); |
void _setState(GameState value) { |
assert(value != null); |