Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(635)

Unified Diff: frog/await/samples/dartcombat/views.dart

Issue 10548047: Remove frog from the repository. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Move test and update apidoc.gyp. Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « frog/await/samples/dartcombat/state.dart ('k') | frog/await/samples/mintmaker/mintmaker.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: frog/await/samples/dartcombat/views.dart
diff --git a/frog/await/samples/dartcombat/views.dart b/frog/await/samples/dartcombat/views.dart
deleted file mode 100644
index 4fa3414ddba1cfc166d68758379333ee72f9bd24..0000000000000000000000000000000000000000
--- a/frog/await/samples/dartcombat/views.dart
+++ /dev/null
@@ -1,297 +0,0 @@
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/** Base class for all views. */
-class View {
- Document doc;
- View(this.doc) {}
-}
-
-/** The view displayed to the player for its own grid. */
-class PlayerGridView extends View {
- /** Model associated with the player's state. */
- PlayerState state;
-
- /** A div element containing the grid. */
- Element _rootNode;
-
- PlayerGridView(
- PlayerState this.state, Element rootNode)
- : super(rootNode.document), _rootNode = rootNode {
- render();
- }
-
- /** Create an initial visual representation of this view. */
- void render() {
- String cell = "<div class='icons water'></div>";
- StringBuffer _cells = new StringBuffer();
- for (int i = 0 ; i < state.localGrid.cells.length; i++) {
- _cells.add(cell);
- }
- String cells = _cells.toString();
- String row = "<div class='hbox'>${cells}</div>";
- StringBuffer _rows = new StringBuffer();
- for (int i = 0 ; i < state.localGrid.cells.length; i++) {
- _rows.add(row);
- }
- String rows = _rows.toString();
- String table = "<div class='vbox'>${rows}</div>";
- _rootNode.innerHTML = table;
-
- // Attaches listeners onto this view.
- new PlaceBoatView(state, _rootNode).attach();
- }
-
- /** Adds to this view the respresentation of a missed shot. */
- void addMiss(int x, int y) {
- Element node = ViewUtil.createDiv("icons miss");
- ViewUtil.placeNodeAt(node, x, y);
- _rootNode.nodes.add(node);
- }
-
- /** Adds to this view the respresentation of a shot that hits our boat. */
- void addHit(int x, int y) {
- Element node = ViewUtil.createDiv("icons hit-onboat");
- ViewUtil.placeNodeAt(node, x, y);
- _rootNode.nodes.add(node);
- }
-}
-
-/** View used to interactively set a new boat on the board. */
-class PlaceBoatView extends View {
- PlayerState state;
-
- /** root of the grid. */
- Element _rootNode;
-
- /** start location where the user first clicked. */
- int _boatStartX;
- int _boatStartY;
-
- /** last known mouse location. */
- int _boatLastX;
- int _boatLastY;
-
- /** HTML element rendering the actual boat. */
- Element _possibleBoat;
-
- /** Mouse move-listener to be detached when the boat is placed. */
- Function _moveListener;
-
- PlaceBoatView(
- PlayerState this.state, Element rootNode)
- : super(rootNode.document), _rootNode = rootNode {}
-
- void attach() {
- _rootNode.on.mouseDown.add(handleMouseDown);
- _rootNode.on.mouseUp.add(handleMouseUp);
- }
-
- handleMouseDown(e) {
- e.preventDefault();
- List<int> pos = await ViewUtil.positionFromEvent(_rootNode, e);
- _boatStartX = pos[0];
- _boatStartY = pos[1];
- // error case when the mouse was released out of the boat-placing area
- if (_moveListener != null) {
- _rootNode.on.mouseMove.remove(_moveListener, false);
- _possibleBoat.remove();
- _moveListener = null;
- }
- _possibleBoat = ViewUtil.createDiv("icons boat2");
- ViewUtil.placeNodeAt(_possibleBoat, _boatStartX, _boatStartY);
- _rootNode.nodes.add(_possibleBoat);
- _moveListener = handleMouseMove;
- _rootNode.on.mouseMove.add(_moveListener);
- }
-
- handleMouseMove(e) {
- e.preventDefault();
- List<int> pos = await ViewUtil.positionFromEvent(_rootNode, e);
- if (_boatLastX == pos[0] && _boatLastY == pos[1]) {
- return;
- }
- _boatLastX = pos[0];
- _boatLastY = pos[1];
- int deltaX = _boatLastX - _boatStartX;
- int deltaY = _boatLastY - _boatStartY;
-
- String dir;
- bool flip = false;
- int boatSize = 2;
- if (deltaX.abs() >= deltaY.abs()) {
- dir = deltaX < 0 ? "right" : "left";
- boatSize = Math.max(2, Math.min(5, deltaX.abs() + 1));
- } else {
- dir = deltaY < 0 ? "up" : "down";
- boatSize = Math.max(2, Math.min(5, deltaY.abs() + 1));
- }
-
- _possibleBoat.attributes["class"] = "icons boat${boatSize} boatdir-${dir}";
- }
-
- /** Handle end of positioning of a boat. */
- handleMouseUp(e) {
- _rootNode.on.mouseMove.remove(_moveListener, false);
- _moveListener = null;
- List<int> pos = await ViewUtil.positionFromEvent(_rootNode, e);
- int _boatEndX = pos[0];
- int _boatEndY = pos[1];
-
- int deltaX = _boatEndX - _boatStartX;
- int deltaY = _boatEndY - _boatStartY;
- Boat boat;
-
- if (deltaX.abs() >= deltaY.abs()) {
- int boatSize = Math.max(2, Math.min(5, deltaX.abs() + 1));
- boat = new Boat(deltaX < 0 ? (_boatStartX - boatSize + 1) : _boatStartX,
- _boatStartY, true, boatSize);
- } else {
- int boatSize = Math.max(2, Math.min(5, deltaY.abs() + 1));
- boat = new Boat(_boatStartX,
- deltaY < 0 ? (_boatStartY - boatSize + 1) : _boatStartY,
- false, boatSize);
- }
-
- state.addBoat(boat);
- }
-}
-
-/** The view displayed to the player for its enemy's grid. */
-class EnemyGridView extends View {
- PlayerState state;
- bool _enemyReady;
- Element _rootNode;
- ShootingStatusView statusBar;
-
- EnemyGridView(
- PlayerState this.state, Element rootNode)
- : super(rootNode.document),
- _enemyReady = false,
- _rootNode = rootNode {
-
- String cell = "<div class='icons water'></div>";
- StringBuffer _cells = new StringBuffer();
- for (int i = 0 ; i < state.enemyGrid.cells.length; i++) {
- _cells.add(cell);
- }
- String cells = _cells.toString();
- String row = "<div class='hbox'>${cells}</div>";
- StringBuffer _rows = new StringBuffer();
- for (int i = 0 ; i < state.enemyGrid.cells.length; i++) {
- _rows.add(row);
- }
- String rows = _rows.toString();
- String table = "<div class='vbox'>${rows}</div>";
- _rootNode.innerHTML =
- "${table}<div class='notready'>ENEMY IS NOT READY</div>";
- statusBar = new ShootingStatusView(state, doc);
- _rootNode.nodes.add(statusBar._rootNode);
- _rootNode.on.click.add((Event e) {
- MouseEvent mouseEvent = e;
- handleClick(mouseEvent);
- }, false);
- }
-
- /** Interpret clicks as a shooting action. */
- handleClick(MouseEvent e) {
- List<int> pos = await ViewUtil.positionFromEvent(_rootNode, e);
- state.shoot(pos[0], pos[1]);
- }
-
- /** Update the view to indicate the enemy is ready. */
- void setEnemyReady() {
- if (!_enemyReady) {
- _enemyReady = true;
- _rootNode.query(".notready").remove();
- }
- }
-
-
- /** Update the view to indicate a shot that hit an enemy's boat. */
- void addHit(int x, int y) {
- Element node = ViewUtil.createDiv("icons hit");
- ViewUtil.placeNodeAt(node, x, y);
- _rootNode.nodes.add(node);
- }
-
- /** Update the view to indicate a shot that missed an enemy's boat. */
- void addMiss(int x, int y) {
- Element node = ViewUtil.createDiv("icons miss");
- ViewUtil.placeNodeAt(node, x, y);
- _rootNode.nodes.add(node);
- }
-
- /** Update the view to indicate a shot is in progress. */
- void addMaybeHit(int x, int y) {
- Element node = ViewUtil.createDiv("icons maybe-hit");
- ViewUtil.placeNodeAt(node, x, y);
- _rootNode.nodes.add(node);
- }
-
- /**
- * Remove the icon indicating that a shot is in progress (only called when
- * shots failed due to network errors).
- */
- void removeMaybeHit(int x, int y) {
- for (Element node in _rootNode.queryAll(".maybe-hit")) {
- int xoffset = x * 50;
- int yoffset = y * 50;
- if (node.style.getPropertyValue("top") == "${yoffset}px"
- && node.style.getPropertyValue("left") == "${xoffset}px") {
- node.remove();
- return;
- }
- }
- }
-}
-
-class ShootingStatusView extends View {
- PlayerState state;
- Element _rootNode;
-
- ShootingStatusView(this.state, Document doc)
- : super(doc) {
- _rootNode = ViewUtil.createDiv("shooting-status");
- updateStatus();
- }
-
- /** Update the view to indicate we sunk another enemy's boat. */
- void updateStatus() {
- final total = state.totalShots;
- final hit = state.totalHits;
- final miss = state.totalMisses;
- final accounted = hit + miss;
- final sunk = state.boatsSunk;
- _rootNode.innerHTML =
- "${total} &lt;= ${accounted} (${hit} + ${miss}); ${sunk}";
- }
-}
-
-/** Utility methods used by the views above. */
-class ViewUtil {
-
- /** Extract the position of a mouse event in a containing 500x500 grid. */
- static Future<List<int>> positionFromEvent(Element gridNode, MouseEvent e) {
- ElementRect rect = await gridNode.rect;
- int x = (e.pageX - rect.offset.left) ~/ 50;
- int y = (e.pageY - rect.offset.top) ~/ 50;
- return [x, y];
- }
-
- /** Given a grid node (square or boat) place it at a grid coordinate. */
- static void placeNodeAt(Element node, int x, int y) {
- int xoffset = x * 50;
- int yoffset = y * 50;
- node.style.setProperty("top", yoffset.toString() + "px");
- node.style.setProperty("left", xoffset.toString() + "px");
- }
-
- /** Create a div node with a given class name. */
- static Element createDiv(String className) {
- Element node = new Element.tag("div");
- node.attributes["class"] = className;
- return node;
- }
-}
« no previous file with comments | « frog/await/samples/dartcombat/state.dart ('k') | frog/await/samples/mintmaker/mintmaker.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698