Index: samples/pop_pop_win/lib/src/canvas/game_root.dart |
diff --git a/samples/pop_pop_win/lib/src/canvas/game_root.dart b/samples/pop_pop_win/lib/src/canvas/game_root.dart |
deleted file mode 100644 |
index fdd719059d85ec4fec72f522ab5bf611a1bf3961..0000000000000000000000000000000000000000 |
--- a/samples/pop_pop_win/lib/src/canvas/game_root.dart |
+++ /dev/null |
@@ -1,148 +0,0 @@ |
-part of pop_pop_win.canvas; |
- |
-class GameRoot extends GameManager { |
- final Stage _stage; |
- final CanvasElement _canvas; |
- final GameElement _gameElement; |
- final AffineTransform _gameElementTx; |
- |
- bool _frameRequested = false; |
- |
- factory GameRoot(int width, int height, int bombCount, |
- CanvasElement canvasElement, TextureData textureData) { |
- |
- final rootElement = new GameElement(textureData); |
- final stage = new Stage(canvasElement, rootElement); |
- new MouseManager(stage); |
- |
- return new GameRoot._internal(width, height, bombCount, |
- canvasElement, stage, rootElement); |
- } |
- |
- GameRoot._internal(int width, int height, int bombCount, |
- this._canvas, this._stage, GameElement gameElement) : |
- this._gameElement = gameElement, |
- _gameElementTx = gameElement.addTransform(), |
- super(width, height, bombCount) { |
- |
- _gameElement.setGameManager(this); |
- _stage.invalidated.listen(_stageInvalidated); |
- |
- _gameElement.newGameClick.listen((args) => newGame()); |
- |
- MouseManager.getMouseMoveStream(_gameElement).listen(_mouseMoveHandler); |
- MouseManager.getMouseOutStream(_stage).listen(_mouseOutHandler); |
- |
- window.onResize.listen((args) => _updateCanvasSize()); |
- _updateCanvasSize(); |
- } |
- |
- void newGame() { |
- super.newGame(); |
- _gameElement.game = super.game; |
- _requestFrame(); |
- } |
- |
- bool get canRevealTarget => _gameElement.canRevealTarget; |
- |
- bool get canFlagTarget => _gameElement.canFlagTarget; |
- |
- void revealTarget() => _gameElement.revealTarget(); |
- |
- void toggleTargetFlag() => _gameElement.toggleTargetFlag(); |
- |
- Stream get targetChanged => _gameElement.targetChanged; |
- |
- void onGameStateChanged(GameState newState) { |
- switch (newState) { |
- case GameState.won: |
- GameAudio.win(); |
- break; |
- } |
- } |
- |
- void _updateCanvasSize() { |
- final windowSize = new Size(window.innerWidth, window.innerHeight); |
- |
- _canvas.width = min(windowSize.width, _gameElement.width).toInt(); |
- _canvas.height = min(windowSize.height, _gameElement.height).toInt(); |
- |
- // now move it! |
- final delta = new Vector(windowSize.width - _canvas.width, |
- windowSize.height - _canvas.height).scale(0.5); |
- |
- _canvas.style.left = "${delta.x.toInt()}px"; |
- |
- // add a little padding at the top (up to 20) if there's room |
- // but don't try to vertically center |
- final topDelta = min(delta.y, 20).toInt(); |
- _canvas.style.top = "${topDelta}px"; |
- |
- _requestFrame(); |
- } |
- |
- void _requestFrame() { |
- if (!_frameRequested) { |
- _frameRequested = true; |
- window.requestAnimationFrame(_onFrame); |
- } |
- } |
- |
- void _onFrame(double time) { |
- final boardInnerBox = _gameElement._scaledInnerBox; |
- final xScale = _stage.size.width / boardInnerBox.width; |
- final yScale = _stage.size.height / boardInnerBox.height; |
- |
- final prettyScale = min(1, min(xScale, yScale)); |
- |
- final newDimensions = _gameElement.size * prettyScale; |
- |
- final delta = new Vector(_stage.size.width - newDimensions.width, |
- min(40, _stage.size.height - newDimensions.height)) |
- .scale(0.5) |
- .scale(1/prettyScale); |
- |
- _gameElementTx.setToScale(prettyScale, prettyScale); |
- _gameElementTx.translate(delta.x, delta.y); |
- |
- var updated = _stage.draw(); |
- _frameRequested = false; |
- if (updated) { |
- _requestFrame(); |
- } |
- } |
- |
- void updateClock() { |
- _requestFrame(); |
- super.updateClock(); |
- } |
- |
- void gameUpdated(args) { |
- _requestFrame(); |
- } |
- |
- void _stageInvalidated(args) { |
- _requestFrame(); |
- } |
- |
- void _mouseMoveHandler(ThingMouseEventArgs args) { |
- bool showPointer = false; |
- if (!game.gameEnded && args.thing is SquareElement) { |
- final SquareElement se = args.thing; |
- showPointer = game.canReveal(se.x, se.y); |
- } else if (args.thing is NewGameElement) { |
- showPointer = true; |
- } else if (args.thing is GameTitleElement) { |
- showPointer = true; |
- } |
- _updateCursor(showPointer); |
- } |
- |
- void _mouseOutHandler(args) { |
- _updateCursor(false); |
- } |
- |
- void _updateCursor(bool showFinger) { |
- _canvas.style.cursor = showFinger ? 'pointer' : 'inherit'; |
- } |
-} |