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

Side by Side Diff: sky/examples/game/lib/game_box.dart

Issue 1179333002: Playable demo game and bug fixes in sprites (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 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 unified diff | Download patch
OLDNEW
(Empty)
1 part of game;
2
3 const double _steeringThreshold = 20.0;
4 const double _steeringMax = 50.0;
5
6 class GameBox extends SpriteBox {
7
8 GameBox(GameWorld game) : super(game, SpriteBoxTransformMode.letterbox);
9
10 GameWorld get _gameWorld => this.rootNode;
11
12 // Handle pointers
13 int _firstPointer = -1;
14 int _secondPointer = -1;
15 Vector2 _firstPointerDownPos;
16
17 void handleEvent(Event event, BoxHitTestEntry entry) {
18 if (event is PointerEvent) {
19 Vector2 pointerPos = new Vector2(event.x, event.y);
20 int pointer = event.pointer;
21
22 switch (event.type) {
23 case 'pointerdown':
24 if (_firstPointer == -1) {
25 // Assign the first pointer
26 _firstPointer = pointer;
27 _firstPointerDownPos = pointerPos;
28 }
29 else if (_secondPointer == -1) {
30 // Assign second pointer
31 _secondPointer = pointer;
32 _gameWorld.controlThrust(1.0);
33 }
34 else {
35 // There is a pointer used for steering, let's fire instead
36 _gameWorld.controlFire();
37 }
38 break;
39 case 'pointermove':
40 if (pointer == _firstPointer) {
41 // Handle turning control
42 double deltaX = pointerPos[0] - _firstPointerDownPos[0];
43 if (deltaX > _steeringThreshold || deltaX < -_steeringThreshold) {
44 double turnForce = (deltaX - _steeringThreshold)/(_steeringMax - _ steeringThreshold);
45 if (turnForce > 1.0) turnForce = 1.0;
46 if (turnForce < -1.0) turnForce = -1.0;
47 _gameWorld.controlSteering(turnForce);
48 print("steering: $turnForce");
49 }
50 }
51 break;
52 case 'pointerup':
53 case 'pointercancel':
54 if (pointer == _firstPointer) {
55 // Un-assign the first pointer
56 _firstPointer = -1;
57 _firstPointerDownPos = null;
58 _gameWorld.controlSteering(null);
59 }
60 else if (pointer == _secondPointer) {
61 _secondPointer = -1;
62 _gameWorld.controlThrust(null);
63 }
64 break;
65 default:
66 break;
67 }
68 }
69 }
70
71 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698