shank 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
metadata CHANGED
@@ -1,61 +1,88 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: shank
3
- version: !ruby/object:Gem::Version
4
- hash: 21
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.6
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 5
10
- version: 0.0.5
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Matt Diebolt
14
9
  - Daniel X. Moore
15
10
  autorequire:
16
11
  bindir: bin
17
12
  cert_chain: []
18
-
19
- date: 2013-03-05 00:00:00 Z
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
13
+ date: 2013-04-24 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rake
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
22
23
  type: :development
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: coffee-script
33
+ requirement: !ruby/object:Gem::Requirement
24
34
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
32
40
  prerelease: false
33
- name: rake
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: sprockets
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
36
55
  type: :runtime
37
- requirement: &id002 !ruby/object:Gem::Requirement
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: pixie_dust
65
+ requirement: !ruby/object:Gem::Requirement
38
66
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :runtime
46
72
  prerelease: false
47
- name: sprockets
48
- version_requirements: *id002
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
49
79
  description: Polyfills for making games in the browser
50
- email:
80
+ email:
51
81
  - pixie@pixieengine.com
52
82
  executables: []
53
-
54
83
  extensions: []
55
-
56
84
  extra_rdoc_files: []
57
-
58
- files:
85
+ files:
59
86
  - .gitignore
60
87
  - Gemfile
61
88
  - LICENSE
@@ -63,16 +90,16 @@ files:
63
90
  - Rakefile
64
91
  - lib/shank.rb
65
92
  - lib/shank/version.rb
93
+ - pixie.json
66
94
  - shank.gemspec
95
+ - source/_init.coffee
67
96
  - source/engine.gamepads.coffee
68
- - source/engine_stats.coffee
69
97
  - source/error_handler.coffee
70
98
  - source/gamepads.coffee
99
+ - source/gamepads.combined_controller.coffee
71
100
  - source/gamepads.controller.coffee
72
- - source/init.coffee
73
- - source/joysticks.coffee
101
+ - source/gamepads.keyboard_controller.coffee
74
102
  - source/jquery.hotkeys.coffee
75
- - source/jquery.reverse_merge.coffee
76
103
  - source/keydown.coffee
77
104
  - source/mouse.coffee
78
105
  - source/music.coffee
@@ -81,46 +108,33 @@ files:
81
108
  - source/shank.coffee
82
109
  - source/sound.coffee
83
110
  - source/storage.coffee
84
- - test/jquery.reverse_merge.coffee
85
111
  - test/keydown.coffee
86
112
  - test/pixie_canvas.coffee
87
113
  - test/request_animation_frame.coffee
88
114
  - test/sound.coffee
89
115
  - test/storage.coffee
90
- - test/xstats.coffee
91
- - vendor/assets/javascripts/xstats.js
92
116
  homepage: https://github.com/PixieEngine/Shank
93
117
  licenses: []
94
-
95
118
  post_install_message:
96
119
  rdoc_options: []
97
-
98
- require_paths:
120
+ require_paths:
99
121
  - lib
100
- required_ruby_version: !ruby/object:Gem::Requirement
122
+ required_ruby_version: !ruby/object:Gem::Requirement
101
123
  none: false
102
- requirements:
103
- - - ">="
104
- - !ruby/object:Gem::Version
105
- hash: 3
106
- segments:
107
- - 0
108
- version: "0"
109
- required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
129
  none: false
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- hash: 3
115
- segments:
116
- - 0
117
- version: "0"
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
118
134
  requirements: []
119
-
120
135
  rubyforge_project:
121
- rubygems_version: 1.8.25
136
+ rubygems_version: 1.8.24
122
137
  signing_key:
123
138
  specification_version: 3
124
139
  summary: Sometimes you gotta stab someone to make a game
125
140
  test_files: []
126
-
@@ -1,12 +0,0 @@
1
- root = (exports ? this)
2
-
3
- root.Engine.Stats = (I={}, self) ->
4
- stats = xStats()
5
-
6
- $(stats.element).css
7
- position: "absolute"
8
- right: 0
9
- top: 0
10
- .appendTo("body")
11
-
12
- return {}
@@ -1,240 +0,0 @@
1
- root = (exports ? this)
2
-
3
- root.Joysticks = ( ->
4
- type = "application/x-boomstickjavascriptjoysticksupport"
5
- plugin = null
6
- MAX_BUFFER = 2000
7
- AXIS_MAX = 32767 - MAX_BUFFER
8
- DEAD_ZONE = AXIS_MAX * 0.2
9
- TRIP_HIGH = AXIS_MAX * 0.75
10
- TRIP_LOW = AXIS_MAX * 0.5
11
-
12
- # Raw Joysticks data
13
- previousJoysticks = []
14
- joysticks = []
15
-
16
- controllers = []
17
-
18
- buttonMappingDefault =
19
- "A": 1
20
- "B": 2
21
-
22
- # X/C, Y/D are interchangeable
23
- "C": 4
24
- "D": 8
25
- "X": 4
26
- "Y": 8
27
-
28
- "R": 32
29
- "RB": 32
30
- "R1": 32
31
-
32
- "L": 16
33
- "LB": 16
34
- "L1": 16
35
-
36
- "SELECT": 64
37
- "BACK": 64
38
-
39
- "START": 128
40
-
41
- "HOME": 256
42
- "GUIDE": 256
43
-
44
- "TL": 512
45
- "TR": 1024
46
-
47
- "ANY": 0xFFFFFF
48
-
49
- buttonMappingOSX =
50
- "A": 2048
51
- "B": 4096
52
-
53
- "C": 8192
54
- "D": 16384
55
- "X": 8192
56
- "Y": 16384
57
-
58
- "R": 512
59
-
60
- "L": 256
61
-
62
- "SELECT": 32
63
- "BACK": 32
64
-
65
- "START": 16
66
-
67
- "HOME": 1024
68
-
69
- "LT": 64
70
- "TR": 128
71
-
72
- "ANY": 0xFFFFFF0
73
-
74
- axisMappingDefault =
75
- 0: 0
76
- 1: 1
77
- 2: 2
78
- 3: 3
79
- 4: 4
80
- 5: 5
81
-
82
- axisMappingOSX =
83
- 0: 2
84
- 1: 3
85
- 2: 4
86
- 3: 5
87
- 4: 0
88
- 5: 1
89
-
90
- displayInstallPrompt = (text, url) ->
91
- $ "<a />",
92
- css:
93
- backgroundColor: "yellow"
94
- boxSizing: "border-box"
95
- color: "#000"
96
- display: "block"
97
- fontWeight: "bold"
98
- left: 0
99
- padding: "1em"
100
- position: "absolute"
101
- textDecoration: "none"
102
- top: 0
103
- width: "100%"
104
- zIndex: 2000
105
- href: url
106
- target: "_blank"
107
- text: text
108
- .appendTo("body")
109
-
110
- Controller = (i, remapOSX) ->
111
- if remapOSX == undefined
112
- remapOSX = navigator.platform.match(/^Mac/)
113
-
114
- if remapOSX
115
- buttonMapping = buttonMappingOSX
116
- axisMapping = axisMappingOSX
117
- else
118
- buttonMapping = buttonMappingDefault
119
- axisMapping = axisMappingDefault
120
-
121
- currentState = ->
122
- joysticks[i]
123
-
124
- previousState = ->
125
- previousJoysticks[i]
126
-
127
- axisTrips = []
128
-
129
- self = Core().include(Bindable).extend
130
- actionDown: (buttons...) ->
131
- if state = currentState()
132
- buttons.inject false, (down, button) ->
133
- down || state.buttons & buttonMapping[button]
134
- else
135
- false
136
-
137
- # true if button was just pressed
138
- buttonPressed: (button) ->
139
- buttonId = buttonMapping[button]
140
-
141
- return (self.buttons() & buttonId) && !(previousState().buttons & buttonId)
142
-
143
- position: (stick=0) ->
144
- if state = currentState()
145
- p = Point(self.axis(2*stick), self.axis(2*stick+1))
146
-
147
- magnitude = p.magnitude()
148
-
149
- if magnitude > AXIS_MAX
150
- p.norm()
151
- else if magnitude < DEAD_ZONE
152
- Point(0, 0)
153
- else
154
- ratio = magnitude / AXIS_MAX
155
-
156
- p.scale(ratio / AXIS_MAX)
157
-
158
- else
159
- Point(0, 0)
160
-
161
- axis: (n) ->
162
- n = axisMapping[n]
163
-
164
- self.axes()[n] || 0
165
-
166
- axes: ->
167
- if state = currentState()
168
- state.axes
169
- else
170
- []
171
-
172
- buttons: ->
173
- if state = currentState()
174
- state.buttons
175
-
176
- processEvents: ->
177
- [x, y] = [0, 1].map (n) ->
178
- if !axisTrips[n] && self.axis(n).abs() > TRIP_HIGH
179
- axisTrips[n] = true
180
-
181
- return self.axis(n).sign()
182
-
183
- if axisTrips[n] && self.axis(n).abs() < TRIP_LOW
184
- axisTrips[n] = false
185
-
186
- return 0
187
-
188
- self.trigger("tap", Point(x, y)) if !x || !y
189
-
190
- drawDebug: (canvas) ->
191
- lineHeight = 18
192
- canvas.fillColor("#FFF")
193
-
194
- for axis, i in self.axes()
195
- canvas.fillText(axis, 0, i * lineHeight)
196
-
197
- canvas.fillText(self.buttons(), 0, i * lineHeight)
198
-
199
- getController: (i) ->
200
- controllers[i] ||= Controller(i)
201
-
202
- init: ->
203
- unless plugin
204
- plugin = document.createElement("object")
205
- plugin.type = type
206
- plugin.width = 0
207
- plugin.height = 0
208
-
209
- $("body").append(plugin)
210
-
211
- plugin.maxAxes = 6
212
-
213
- unless plugin.status
214
- promptElement = displayInstallPrompt("Your browser does not yet handle joysticks, please click here to install the Boomstick plugin!", "https://github.com/STRd6/Boomstick/wiki")
215
-
216
- # The periodic check will remove the prompt if the player
217
- # needs to accept or run the plugin manually
218
- periodicCheck = ->
219
- if plugin.status
220
- promptElement.remove()
221
- else
222
- setTimeout periodicCheck, 500
223
-
224
- periodicCheck()
225
-
226
- status: ->
227
- plugin?.status
228
-
229
- update: ->
230
- if plugin.joysticksJSON
231
- previousJoysticks = joysticks
232
- joysticks = JSON.parse(plugin.joysticksJSON())
233
-
234
- for controller in controllers
235
- controller?.processEvents()
236
-
237
- joysticks: ->
238
- joysticks
239
- )()
240
-
@@ -1,21 +0,0 @@
1
- ###*
2
- Merges properties from objects into target without overiding.
3
- First come, first served.
4
-
5
- @name reverseMerge
6
- @methodOf jQuery#
7
-
8
- @param {Object} target the object to merge the given properties onto
9
- @param {Object} objects... one or more objects whose properties are merged onto target
10
-
11
- @return {Object} target
12
- ###
13
- jQuery.extend
14
- reverseMerge: (target, objects...) ->
15
- for object in objects
16
- for name of object
17
- unless target.hasOwnProperty(name)
18
- target[name] = object[name]
19
-
20
- return target
21
-
@@ -1,43 +0,0 @@
1
- module "jQuery.reverseMerge"
2
-
3
- test "reverse merge", ->
4
- o = {
5
- exists: "cool"
6
- }
7
-
8
- $.reverseMerge o,
9
- another: "also cool"
10
- exists: "not cool"
11
- u: undefined
12
-
13
- equal o.exists, "cool"
14
- equal o.another, "also cool"
15
- equal o.u, undefined
16
- ok "u" of o
17
-
18
- test "multiple arguments", ->
19
- o = {
20
- a: 0
21
- }
22
-
23
- $.reverseMerge o, {
24
- a: 1
25
- b: 1
26
- }, {
27
- a: 2
28
- b: 2
29
- c: 2
30
- }, {
31
- a: 3
32
- b: 3
33
- c: 3
34
- d: 3
35
- }
36
-
37
- equal o.a, 0
38
- equal o.b, 1
39
- equal o.c, 2
40
- equal o.d, 3
41
-
42
- module()
43
-
data/test/xstats.coffee DELETED
@@ -1,7 +0,0 @@
1
- module "Xstats"
2
-
3
- test "exists", ->
4
- Engine.Stats()
5
-
6
- # Clear out the module
7
- module()