OLD | NEW |
| (Empty) |
1 part of pop_pop_win.html; | |
2 | |
3 class GameView extends GameManager { | |
4 static const String _xKey = 'x'; | |
5 static const String _yKey = 'y'; | |
6 | |
7 final TableElement _table; | |
8 final Element _leftCountDiv; | |
9 final Element _gameStateDiv; | |
10 final Element _clockDiv; | |
11 | |
12 GameView(int width, int height, int bombCount, | |
13 this._table, this._leftCountDiv, this._gameStateDiv, | |
14 this._clockDiv) : super(width, height, bombCount); | |
15 | |
16 void updateElement() { | |
17 updateClock(); | |
18 _gameStateDiv.innerHtml = game.state.name; | |
19 _leftCountDiv.innerHtml = game.bombsLeft.toString(); | |
20 | |
21 if(_table.children.length == 0) { | |
22 | |
23 for(int r = 0; r < game.field.height; r++) { | |
24 TableRowElement row = _table.insertRow(-1); | |
25 | |
26 for(int c = 0; c < game.field.width; c++) { | |
27 TableCellElement cell = row.insertCell(-1); | |
28 cell.onMouseDown.listen(_cellClick); | |
29 cell.dataset[_xKey] = c.toString(); | |
30 cell.dataset[_yKey] = r.toString(); | |
31 } | |
32 } | |
33 } | |
34 | |
35 for(int r = 0; r < game.field.height; r++) { | |
36 for(int c = 0; c < game.field.width; c++) { | |
37 TableRowElement row = _table.rows[r]; | |
38 TableCellElement cell = row.cells[c]; | |
39 | |
40 cell.classes.clear(); | |
41 cell.classes.add('game-square'); | |
42 final ss = game.getSquareState(c, r); | |
43 cell.classes.add(ss.name); | |
44 if(ss == SquareState.revealed) { | |
45 final adj = game.field.getAdjacentCount(c, r); | |
46 assert(adj != null); | |
47 if(adj > 0) { | |
48 cell.innerHtml = adj.toString(); | |
49 } | |
50 } | |
51 } | |
52 } | |
53 | |
54 } | |
55 | |
56 void newGame() { | |
57 super.newGame(); | |
58 _table.children.clear(); | |
59 updateElement(); | |
60 } | |
61 | |
62 void updateClock() { | |
63 if(game.duration == null) { | |
64 _clockDiv.innerHtml = ''; | |
65 } else { | |
66 _clockDiv.innerHtml = game.duration.inSeconds.toString(); | |
67 } | |
68 | |
69 super.updateClock(); | |
70 } | |
71 | |
72 void _cellClick(MouseEvent args) { | |
73 if(args.button == 0 && _canClick) { | |
74 final TableCellElement cell = args.currentTarget; | |
75 final xStr = cell.dataset[_xKey]; | |
76 final yStr = cell.dataset[_yKey]; | |
77 | |
78 final x = int.parse(xStr); | |
79 final y = int.parse(yStr); | |
80 _click(x, y, args.shiftKey); | |
81 } | |
82 } | |
83 | |
84 void gameUpdated(args) { | |
85 updateElement(); | |
86 } | |
87 } | |
OLD | NEW |