OLD | NEW |
| (Empty) |
1 part of pop_pop_win.canvas; | |
2 | |
3 class BoardElement extends ParentThing { | |
4 Array2d<SquareElement> _elements; | |
5 | |
6 BoardElement(): super(0, 0) { | |
7 cacheEnabled = true; | |
8 } | |
9 | |
10 int get visualChildCount { | |
11 if (_elements == null) { | |
12 return 0; | |
13 } else { | |
14 return _elements.length; | |
15 } | |
16 } | |
17 | |
18 Thing getVisualChild(int index) { | |
19 return _elements[index]; | |
20 } | |
21 | |
22 void update() { | |
23 if (_game == null) { | |
24 _elements = null; | |
25 } else if(_elementsNeedUpdate) { | |
26 _elements = new Array2d<SquareElement>( | |
27 _game.field.width, _game.field.height); | |
28 | |
29 for (int i = 0; i < _elements.length; i++) { | |
30 final coords = _elements.getCoordinate(i); | |
31 final se = new SquareElement(coords.item1, coords.item2); | |
32 se.registerParent(this); | |
33 | |
34 _gameElement.wireSquareMouseEvent(se); | |
35 | |
36 // position the square | |
37 final etx = se.addTransform(); | |
38 etx.setToTranslation(coords.item1 * SquareElement._size, | |
39 coords.item2 * SquareElement._size); | |
40 | |
41 _elements[i] = se; | |
42 } | |
43 | |
44 size = new Size(_game.field.width * SquareElement._size, | |
45 _game.field.height * SquareElement._size); | |
46 } | |
47 super.update(); | |
48 } | |
49 | |
50 GameElement get _gameElement => (parent as CanvasThing).parent; | |
51 | |
52 Game get _game => _gameElement._game; | |
53 | |
54 bool get _elementsNeedUpdate { | |
55 assert(_game != null); | |
56 return _elements == null || | |
57 _elements.width != _game.field.width || | |
58 _elements.height != _game.field.height; | |
59 } | |
60 | |
61 TextureData get _textureData => _gameElement._textureData; | |
62 | |
63 } | |
OLD | NEW |