opal-phaser 0.3.0 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 950b60cc79497ed967899f2f3a8071d4e9d91a70
4
- data.tar.gz: db6c023ecddef90375a1179446a27695930ff5c7
3
+ metadata.gz: d94a97387570a6d4760d2fa61b4a1f5c3fe882e8
4
+ data.tar.gz: cdd24fbcb8e731c696f20b4db010d4403e8923e3
5
5
  SHA512:
6
- metadata.gz: e6d63f83e401e573d7021c1b1a186805fe002b8bbc8957c36fe3ee13543346a4cd61f0a492d049205edb44e572536185e0ac928e2c6a137ee5f92a89cfae749c
7
- data.tar.gz: 8cfc0784d3a79296a036d27d39eb3ee83e6ba441429227e267cb02c9a58f805332e4b8c1ac6f99a5e4cf8b1eb58b6c8c6bb639251318998f44b02ce4ead6734f
6
+ metadata.gz: ba08bdafd287aba3028627ff375e4a68ee4b88b4b1478af8e8c3b9b3c5c67fa32aad4a0568cf3759abe269ba5a9dfe6022f1339237fc3f53b706870f475ba913
7
+ data.tar.gz: 4193b91baf5713d61734c5213ed0d68e24966ecba0878c293c823ce09b6e9995113f53d8dae0027ddbf6e02a0168d39fa34b444944812da68b4068c719bcb817
data/README.md CHANGED
@@ -11,12 +11,20 @@ If you have not heard of Phaser, check out these links:
11
11
  * Phaser: https://github.com/photonstorm/phaser
12
12
  * Phaser Examples: https://github.com/photonstorm/phaser-examples
13
13
 
14
- Also, to get examples of opal-phaser in action, check out the [opal-phaser-examples repository](https://github.com/orbitalimpact/opal-phaser-examples).
14
+ ## Projects built with opal-phaser
15
15
 
16
- A few games made with opal-phaser:
16
+ ### Examples
17
17
 
18
+ Phaser usage examples converted to Ruby: https://github.com/orbitalimpact/opal-phaser-examples.
19
+
20
+ ### Games
21
+
22
+ Some of the games that have been made so far with opal-phaser:
23
+
24
+ * [Official demo](https://github.com/orbitalimpact/opal-phaser/tree/master/demo)
18
25
  * [Flutterjump](https://github.com/orbitalimpact/flutterjump)
19
26
  * [A pong clone](https://github.com/opengamedev/pong-opal-phaser)
27
+ * [Tankgame](https://github.com/tangentstorm/tankgame)
20
28
 
21
29
  ## Cloning this repository
22
30
 
@@ -89,7 +89,7 @@ class Platforms
89
89
 
90
90
  def create_ground
91
91
  ground = @platforms.create(0, @game.world.height - 64, @sprite_key)
92
- ground.scale.setTo(2, 2)
92
+ ground.scale.set(2, 2)
93
93
  ground.body.immovable = true
94
94
  end
95
95
 
@@ -161,9 +161,9 @@ class Game
161
161
  end
162
162
 
163
163
  def run
164
- game = Phaser::Game.new
165
- state = MainLevel.new(game)
166
- game.state.add(:main, state, true)
164
+ $game = Phaser::Game.new
165
+ state = MainLevel.new($game)
166
+ $game.state.add(:main, state, true)
167
167
  end
168
168
  end
169
169
 
@@ -4,13 +4,14 @@
4
4
  <meta charset= "utf-8" />
5
5
  <title>Opal-Phaser</title>
6
6
  <link rel="stylesheet" href="style.css">
7
- <script src="//cdn.jsdelivr.net/phaser/2.2.2/phaser.js"></script>
7
+ <script src="//cdn.jsdelivr.net/phaser/2.4.3/phaser.js"></script>
8
8
  <script src="/assets/main.js"></script>
9
9
  </head>
10
10
 
11
11
  <body>
12
12
  <script>
13
13
  window.onload = function() {
14
+ Opal.load("main")
14
15
  opal_game = Opal.Game.$new()
15
16
  }
16
17
  </script>
@@ -1,3 +1,4 @@
1
+ require 'opal-pixi'
1
2
  if RUBY_ENGINE == 'opal'
2
3
  require 'opal/phaser/setup'
3
4
 
@@ -16,13 +16,15 @@ module Phaser
16
16
  end
17
17
 
18
18
  def self.generate_frame_names(args = {})
19
- prefix = args[:prefix]
20
- start_num = args[:start_num]
21
- stop_num = args[:stop_num]
22
- suffix = args[:suffix, ""]
23
- zeros_padding = args[:zeros_padding, 0]
19
+ optional_args = {suffix: "", zeros_padding: 0}
24
20
 
25
- `Phaser.Animation.generateFrameNames(prefix, start_num, stop_num, suffix, zeros_padding)`
21
+ optional_args.each do |optional_arg, default_value|
22
+ unless args.include?(optional_arg)
23
+ args[optional_arg] = default_value
24
+ end
25
+ end
26
+
27
+ `Phaser.Animation.generateFrameNames(#{args[:prefix]}, #{args[:start_num]}, #{args[:stop_num]}, #{args[:suffix]}, #{args[:zeros_padding]})`
26
28
  end
27
29
 
28
30
  alias_native :is_playing?, :isPlaying
@@ -9,6 +9,8 @@ require 'opal/phaser/math/random_data_generator'
9
9
  require 'opal/phaser/core/camera'
10
10
  require 'opal/phaser/core/loader'
11
11
  require 'opal/phaser/core/scale_manager'
12
+ require 'opal/phaser/pixi/web_gl_renderer'
13
+ require 'opal/pixi/canvas_renderer'
12
14
 
13
15
  module Phaser
14
16
  AUTO = `Phaser.AUTO`
@@ -54,12 +56,14 @@ module Phaser
54
56
  #alias_native :time, :time, as: Time
55
57
  alias_native :rnd, :rnd, as: RandomDataGenerator
56
58
  alias_native :camera, :camera, as: Camera
57
- alias_native :scale, :scale, as: ScaleManager
59
+ alias_native :scale, :scale, as: ScaleManager
58
60
 
59
61
  alias_native :make, :make, as: GameObjectCreator
60
62
  alias_native :load, :load, as: Loader
61
63
  alias_native :debug
64
+ alias_native :device
62
65
  alias_native :width
66
+ alias_native :height
63
67
  alias_native :paused
64
68
  alias_native :destroy
65
69
 
@@ -70,5 +74,17 @@ module Phaser
70
74
  def paused=(bool)
71
75
  `#@native.paused = bool`
72
76
  end
77
+
78
+ def renderer
79
+ if `#@native.renderer instanceof PIXI.WebGLRenderer`
80
+ PIXI::WebGLRenderer.new(`#@native.renderer`)
81
+ else
82
+ PIXI::CanvasRenderer.new(`#@native.renderer`)
83
+ end
84
+ end
85
+
86
+ def is_booted?
87
+ `#@native.isBooted`
88
+ end
73
89
  end
74
90
  end
@@ -14,6 +14,7 @@ module Phaser
14
14
  alias_native :spritesheet
15
15
  alias_native :atlas
16
16
  alias_native :start
17
+ alias_native :audio
17
18
 
18
19
  alias_native :onFileComplete
19
20
  alias_native :onFileError
@@ -24,7 +25,8 @@ module Phaser
24
25
  alias_native :atlasJSONHash
25
26
  alias_native :atlasXML
26
27
 
27
- alias_native :cross_origin=, :crossOrigin
28
+ alias_native :set_preload_sprite, :setPreloadSprite
29
+ alias_native :cross_origin=, :crossOrigin
28
30
 
29
31
  def cross_origin=(value)
30
32
  `#@native.crossOrigin = #{value}`
@@ -6,6 +6,7 @@ require 'opal/phaser/game_objects/bitmap_data'
6
6
  require 'opal/phaser/tween/tween'
7
7
  require 'opal/phaser/game_objects/tile_sprite'
8
8
  require 'opal/phaser/game_objects/button'
9
+ require 'opal/phaser/sound/sound'
9
10
 
10
11
  module Phaser
11
12
  class GameObjectFactory
@@ -19,5 +20,6 @@ module Phaser
19
20
  alias_native :tween, :tween, as: Tween
20
21
  alias_native :tile_sprite, :tileSprite, as: TileSprite
21
22
  alias_native :button, :button, as: Button
23
+ alias_native :audio, :audio, as: Sound
22
24
  end
23
25
  end
@@ -1,24 +1,21 @@
1
1
  require 'opal/phaser/core/anchor'
2
+ require 'opal/phaser/game_objects/events'
3
+
2
4
  module Phaser
3
- class Image
5
+ class Image < PIXI::Sprite
4
6
  include Native
5
7
 
6
- alias_native :x
7
- alias_native :y
8
- alias_native :x=
9
- alias_native :y=
10
- alias_native :height
11
- alias_native :width
12
8
  alias_native :input
9
+ alias_native :name
10
+ alias_native :kill
13
11
 
14
- alias_native :scale
15
- alias_native :destroy
16
-
17
- alias_native :load_texture, :loadTexture
18
- alias_native :anchor, :anchor, as: Anchor
12
+ alias_native :smoothed=
19
13
 
20
- def smoothed=(bool)
21
- `#@native.smoothed = bool`
14
+ def input_enabled=(bool)
15
+ `#@native.inputEnabled = bool`
22
16
  end
17
+
18
+ alias_native :load_texture, :loadTexture
19
+ alias_native :events, :events, as: Events
23
20
  end
24
21
  end
@@ -4,41 +4,28 @@ require 'opal/phaser/animation/animation_manager'
4
4
  require 'opal/phaser/game_objects/events'
5
5
 
6
6
  module Phaser
7
- class Sprite
7
+ class Sprite < PIXI::Sprite
8
8
  include Native
9
9
 
10
10
  alias_native :key
11
- alias_native :scale
12
11
  alias_native :bounce
13
12
 
14
- alias_native :kill
15
- alias_native :destroy
16
13
  alias_native :play
14
+ alias_native :crop
17
15
 
18
- alias_native :visible=
19
16
  alias_native :exists=
20
17
  alias_native :alive=
21
18
  alias_native :frame=
19
+ alias_native :smoothed=
22
20
 
23
- alias_native :z
24
- alias_native :z=
25
- alias_native :x
26
- alias_native :x=
27
- alias_native :y
28
- alias_native :y=
29
- alias_native :width
30
- alias_native :height
31
21
  alias_native :right
32
22
 
23
+ alias_native :kill
33
24
 
34
25
  def input_enabled=(bool)
35
26
  `#@native.inputEnabled = bool`
36
27
  end
37
28
 
38
- def smoothed=(bool)
39
- `#@native.smoothed = bool`
40
- end
41
-
42
29
  def frame_name=(name)
43
30
  `#@native.frameName = name`
44
31
  end
@@ -51,10 +38,13 @@ module Phaser
51
38
  `#@native.checkWorldBounds = bool`
52
39
  end
53
40
 
41
+ def update_crop
42
+ `#@native.updateCrop()`
43
+ end
44
+
54
45
  alias_native :load_texture, :loadTexture
55
46
 
56
47
  alias_native :body, :body, as: Physics::Arcade::Body
57
- alias_native :anchor, :anchor, as: Anchor
58
48
  alias_native :animations, :animations, as: AnimationManager
59
49
  alias_native :events, :events, as: Events
60
50
 
@@ -1,6 +1,6 @@
1
1
  require 'opal/phaser/geometry/point'
2
2
  module Phaser
3
- class TileSprite
3
+ class TileSprite < PIXI::Extras::TilingSprite
4
4
  include Native
5
5
 
6
6
  alias_native :auto_scroll, :autoScroll
@@ -16,5 +16,7 @@ module Phaser
16
16
  alias_native :x=
17
17
  alias_native :y
18
18
  alias_native :y=
19
+ alias_native :set
20
+ alias_native :setTo, :set_to
19
21
  end
20
22
  end
@@ -1,9 +1,14 @@
1
1
  module Phaser
2
- class Rectangle < `Phaser.Rectangle`
2
+ class Rectangle
3
3
  include Native
4
4
 
5
- def self.new(x, y, w, h)
6
- `new Phaser.Rectangle(x, y, w, h)`
5
+ def initialize(x, y, w, h)
6
+ super `new Phaser.Rectangle(x, y, w, h)`
7
7
  end
8
+
9
+ alias_native :x
10
+ alias_native :x=
11
+ alias_native :y
12
+ alias_native :y=
8
13
  end
9
14
  end
@@ -0,0 +1,2 @@
1
+ class PIXI::CanvasRenderer
2
+ end
@@ -0,0 +1,3 @@
1
+ class PIXI::WebGLRenderer
2
+ alias_native :offset, :offset, as: Phaser::Point
3
+ end
@@ -0,0 +1,22 @@
1
+ module Phaser
2
+ class Sound
3
+ include Native
4
+
5
+ def play(args = {})
6
+ arg_list = {marker: "", position: 0, volume: 1, loop: false, force_restart: true}
7
+
8
+ arg_list.each do |name, default_value|
9
+ unless args.include?(name)
10
+ args[name] = default_value
11
+ end
12
+ end
13
+
14
+ `#@native.play(#{args[:marker]}, #{args[:position]}, #{args[:volume]}, #{args[:loop]}, #{args[:force_restart]})`
15
+ end
16
+
17
+ alias_native :stop
18
+ alias_native :destroy
19
+
20
+ alias_native :fade_in, :fadeIn
21
+ end
22
+ end
@@ -1,5 +1,9 @@
1
1
  module Phaser
2
2
  module Easing
3
+ def self.Default
4
+ `Phaser.Easing.Default`
5
+ end
6
+
3
7
  module Quadratic
4
8
  def self.In
5
9
  `Phaser.Easing.Quadratic.In`
@@ -13,5 +17,11 @@ module Phaser
13
17
  `Phaser.Easing.Quadratic.Out`
14
18
  end
15
19
  end
20
+
21
+ module Linear
22
+ def self.None
23
+ `Phaser.Easing.Linear.None`
24
+ end
25
+ end
16
26
  end
17
27
  end
@@ -1,8 +1,34 @@
1
1
  module Phaser
2
2
  class Tween
3
3
  include Native
4
-
5
- alias_native :to
4
+
6
5
  alias_native :start
6
+
7
+ def to(args = {})
8
+ optional_args = {duration: 1000, ease: Phaser::Easing.Default, auto_start: false, delay: 0, repeat: 0, yoyo: false}
9
+
10
+ optional_args.each do |name, default_value|
11
+ unless args.include?(name)
12
+ args[name] = default_value
13
+ end
14
+ end
15
+
16
+ Tween.new `#@native.to(#{args[:properties].to_n}, #{args[:duration]}, #{args[:ease]}, #{args[:auto_start]}, #{args[:delay]}, #{args[:repeat]}, #{args[:yoyo]})`
17
+ end
18
+
19
+ def on(type, context = nil, &block)
20
+ case type.to_sym
21
+ when :child_complete
22
+ `#@native.onChildComplete.add(#{block.to_n}, #{context})`
23
+ when :complete
24
+ `#@native.onComplete.add(#{block.to_n}, #{context})`
25
+ when :loop
26
+ `#@native.onLoop.add(#{block.to_n}, #{context})`
27
+ when :repeat
28
+ `#@native.onRepeat.add(#{block.to_n}, #{context})`
29
+ when start
30
+ `#@native.onStart.add(#{block.to_n}, #{context})`
31
+ end
32
+ end
7
33
  end
8
34
  end
@@ -1,5 +1,5 @@
1
1
  module Opal
2
2
  module Phaser
3
- VERSION = '0.3.0'
3
+ VERSION = '0.4.5'
4
4
  end
5
5
  end
@@ -6,16 +6,17 @@ Gem::Specification.new do |s|
6
6
  s.version = Opal::Phaser::VERSION
7
7
  s.author = 'George Plymale'
8
8
  s.email = 'george@orbitalimpact.com'
9
- s.homepage = 'http://github.com/orbitalimpact/opal-phaser'
10
- s.summary = 'Opal access to phaser'
11
- s.description = 'Opal DOM library for phaser'
9
+ s.homepage = 'http://opalphaser.com'
10
+ s.summary = 'Ruby access to Phaser'
11
+ s.description = 'Opal wrapper library for the Phaser framework'
12
12
 
13
13
  s.files = `git ls-files`.split("\n")
14
14
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
15
15
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
16
  s.require_paths = ['lib']
17
17
 
18
- s.add_runtime_dependency 'opal', '>= 0.7.0', '< 0.9.0'
18
+ s.add_runtime_dependency 'opal', '>= 0.8.0', '<= 0.9.0'
19
+ s.add_runtime_dependency 'opal-pixi'
19
20
  s.add_development_dependency 'opal-rspec', '~> 0.4.0'
20
21
  s.add_development_dependency 'yard'
21
22
  s.add_development_dependency 'rake'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-phaser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - George Plymale
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-07 00:00:00.000000000 Z
11
+ date: 2015-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -16,8 +16,8 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.7.0
20
- - - "<"
19
+ version: 0.8.0
20
+ - - "<="
21
21
  - !ruby/object:Gem::Version
22
22
  version: 0.9.0
23
23
  type: :runtime
@@ -26,10 +26,24 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 0.7.0
30
- - - "<"
29
+ version: 0.8.0
30
+ - - "<="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 0.9.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: opal-pixi
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
33
47
  - !ruby/object:Gem::Dependency
34
48
  name: opal-rspec
35
49
  requirement: !ruby/object:Gem::Requirement
@@ -72,7 +86,7 @@ dependencies:
72
86
  - - ">="
73
87
  - !ruby/object:Gem::Version
74
88
  version: '0'
75
- description: Opal DOM library for phaser
89
+ description: Opal wrapper library for the Phaser framework
76
90
  email: george@orbitalimpact.com
77
91
  executables: []
78
92
  extensions: []
@@ -137,7 +151,10 @@ files:
137
151
  - lib/opal/phaser/math/random_data_generator.rb
138
152
  - lib/opal/phaser/physics/files.rb
139
153
  - lib/opal/phaser/physics/physics.rb
154
+ - lib/opal/phaser/pixi/canvas_renderer.rb
155
+ - lib/opal/phaser/pixi/web_gl_renderer.rb
140
156
  - lib/opal/phaser/setup.rb
157
+ - lib/opal/phaser/sound/sound.rb
141
158
  - lib/opal/phaser/time/files.rb
142
159
  - lib/opal/phaser/time/time.rb
143
160
  - lib/opal/phaser/time/timer.rb
@@ -152,7 +169,7 @@ files:
152
169
  - spec/html/index.html.erb
153
170
  - spec/html/phaser.js
154
171
  - spec/spec_helper.rb
155
- homepage: http://github.com/orbitalimpact/opal-phaser
172
+ homepage: http://opalphaser.com
156
173
  licenses: []
157
174
  metadata: {}
158
175
  post_install_message:
@@ -174,7 +191,7 @@ rubyforge_project:
174
191
  rubygems_version: 2.4.5
175
192
  signing_key:
176
193
  specification_version: 4
177
- summary: Opal access to phaser
194
+ summary: Ruby access to Phaser
178
195
  test_files:
179
196
  - spec/core/loader_spec.rb
180
197
  - spec/html/index.html.erb