1
+ let screen_width = window . innerWidth , screen_height = window . innerHeight ;
2
+ let canvas_width , canvas_height ;
3
+ let fps = 24 , paused = false ;
4
+ let mobile ;
5
+
6
+ if ( / A n d r o i d | w e b O S | i P h o n e | i P a d | i P o d | B l a c k B e r r y | I E M o b i l e | O p e r a M i n i / i. test ( navigator . userAgent ) ) {
7
+ mobile = true ;
8
+ } else {
9
+ mobile = false ;
10
+ }
11
+
12
+ let canvas = document . getElementById ( "canvas" ) ;
13
+ let context = canvas . getContext ( "2d" ) ;
14
+
15
+ if ( mobile ) {
16
+ canvas_width = 0.9 * screen_width ;
17
+ }
18
+ else {
19
+ canvas_width = 0.4 * screen_width ;
20
+ }
21
+ canvas_height = canvas_width ;
22
+
23
+ canvas . width = canvas_width ;
24
+ canvas . height = canvas_height ;
25
+
26
+ let animate = window . requestAnimationFrame
27
+ || window . webkitRequestAnimationFrame
28
+ || window . mozRequestAnimationFrame
29
+ || function ( callback ) {
30
+ window . setTimeout ( callback , 1000 / fps ) ;
31
+ } ;
32
+
33
+ function step ( ) {
34
+ if ( ! paused ) {
35
+ update ( ) ;
36
+ }
37
+ render ( ) ;
38
+ animate ( step ) ;
39
+ }
40
+
41
+ window . onload = function ( ) {
42
+ defaultParams ( ) ;
43
+ initParams ( ) ;
44
+ animate ( step ) ;
45
+ }
46
+
47
+ function defaultParams ( ) {
48
+
49
+ }
50
+
51
+ let click_x , click_y , pressed ;
52
+
53
+ if ( mobile ) {
54
+ canvas . addEventListener ( "touchstart" , function ( e ) {
55
+ getTouchPosition ( canvas , e ) ;
56
+ let touch = e . touches [ 0 ] ;
57
+ let mouseEvent = new MouseEvent ( "mousedown" , {
58
+ clientX : touch . clientX ,
59
+ clientY : touch . clientY
60
+ } ) ;
61
+ canvas . dispatchEvent ( mouseEvent ) ;
62
+ pressed = true ;
63
+ clicked ( ) ;
64
+ } , false ) ;
65
+
66
+ canvas . addEventListener ( "touchmove" , function ( e ) {
67
+ getTouchPosition ( canvas , e ) ;
68
+ let touch = e . touches [ 0 ] ;
69
+ let mouseEvent = new MouseEvent ( "mousemove" , {
70
+ clientX : touch . clientX ,
71
+ clientY : touch . clientY
72
+ } ) ;
73
+ canvas . dispatchEvent ( mouseEvent ) ;
74
+ moved ( ) ;
75
+ } , false ) ;
76
+
77
+ canvas . addEventListener ( "touchend" , function ( e ) {
78
+ getTouchPosition ( canvas , e ) ;
79
+ let touch = e . touches [ 0 ] ;
80
+ let mouseEvent = new MouseEvent ( "mouseup" , {
81
+ clientX : touch . clientX ,
82
+ clientY : touch . clientY
83
+ } ) ;
84
+ canvas . dispatchEvent ( mouseEvent ) ;
85
+ pressed = false ;
86
+ released ( ) ;
87
+ } , false ) ;
88
+ }
89
+ else {
90
+ canvas . addEventListener ( "mousedown" , function ( e ) {
91
+ getMousePosition ( canvas , e ) ;
92
+ pressed = true ;
93
+ clicked ( ) ;
94
+ } ) ;
95
+
96
+ canvas . addEventListener ( "mousemove" , function ( e ) {
97
+ getMousePosition ( canvas , e ) ;
98
+ moved ( ) ;
99
+ } ) ;
100
+
101
+ canvas . addEventListener ( "mouseup" , function ( e ) {
102
+ getMousePosition ( canvas , e ) ;
103
+ pressed = false ;
104
+ released ( ) ;
105
+ } ) ;
106
+
107
+ window . addEventListener ( "keydown" , function ( e ) {
108
+ keyPressed ( e . keyCode ) ;
109
+ } , false ) ;
110
+
111
+ window . addEventListener ( "keydown" , function ( e ) {
112
+ keyReleased ( e . keyCode ) ;
113
+ } , false ) ;
114
+ }
115
+
116
+ function getMousePosition ( canvas , event ) {
117
+ rect = canvas . getBoundingClientRect ( ) ;
118
+ click_x = event . clientX - rect . left ;
119
+ click_y = event . clientY - rect . top ;
120
+ }
121
+
122
+ function getTouchPosition ( canvas , event ) {
123
+ var rect = canvas . getBoundingClientRect ( ) ;
124
+ click_x = event . touches [ 0 ] . clientX - rect . left ;
125
+ click_y = event . touches [ 0 ] . clientY - rect . top ;
126
+ }
0 commit comments