joybox 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +18 -0
  3. data/Gemfile +6 -0
  4. data/Gemfile.lock +27 -0
  5. data/LICENSE +22 -0
  6. data/README.md +86 -0
  7. data/Rakefile +14 -0
  8. data/app/app_delegate.rb +49 -0
  9. data/app/layers/box2d_layer.rb +109 -0
  10. data/app/layers/cocos2d_layer.rb +14 -0
  11. data/app/layers/cocos_motion_layer.rb +145 -0
  12. data/app/layers/menu_layer.rb +59 -0
  13. data/joybox.gemspec +25 -0
  14. data/lib/joybox.rb +47 -0
  15. data/lib/joybox/box2d/body.rb +106 -0
  16. data/lib/joybox/box2d/world.rb +79 -0
  17. data/lib/joybox/cocos2d/actions/actions.rb +7 -0
  18. data/lib/joybox/cocos2d/actions/move.rb +31 -0
  19. data/lib/joybox/cocos2d/actions/repeat.rb +24 -0
  20. data/lib/joybox/cocos2d/actions/rotate.rb +31 -0
  21. data/lib/joybox/cocos2d/actions/scale.rb +31 -0
  22. data/lib/joybox/cocos2d/actions/sequence.rb +22 -0
  23. data/lib/joybox/cocos2d/actions/skew.rb +36 -0
  24. data/lib/joybox/cocos2d/cocos2d.rb +15 -0
  25. data/lib/joybox/cocos2d/common/cg_point.rb +37 -0
  26. data/lib/joybox/cocos2d/common/color.rb +49 -0
  27. data/lib/joybox/cocos2d/common/gc_size.rb +39 -0
  28. data/lib/joybox/cocos2d/common/ns_set.rb +5 -0
  29. data/lib/joybox/cocos2d/common/numeric.rb +14 -0
  30. data/lib/joybox/cocos2d/common/screen.rb +39 -0
  31. data/lib/joybox/cocos2d/common/ui_touch.rb +15 -0
  32. data/lib/joybox/cocos2d/configuration/configuration.rb +68 -0
  33. data/lib/joybox/cocos2d/configuration/file_utils.rb +33 -0
  34. data/lib/joybox/cocos2d/configuration/gl_view.rb +44 -0
  35. data/lib/joybox/cocos2d/configuration/texture_2d.rb +27 -0
  36. data/lib/joybox/cocos2d/core/layer.rb +87 -0
  37. data/lib/joybox/cocos2d/core/node.rb +26 -0
  38. data/lib/joybox/cocos2d/core/physics_sprite.rb +52 -0
  39. data/lib/joybox/cocos2d/core/scene.rb +24 -0
  40. data/lib/joybox/cocos2d/core/sprite.rb +43 -0
  41. data/lib/joybox/cocos2d/core/sprite_batch.rb +24 -0
  42. data/lib/joybox/cocos2d/director.rb +43 -0
  43. data/lib/joybox/cocos2d/macros.rb +234 -0
  44. data/lib/joybox/cocos2d/ui/label.rb +34 -0
  45. data/lib/joybox/cocos2d/ui/menu.rb +25 -0
  46. data/lib/joybox/cocos2d/ui/menu_image.rb +22 -0
  47. data/lib/joybox/cocos2d/ui/menu_label.rb +45 -0
  48. data/lib/joybox/cocos2d/ui/ui.rb +7 -0
  49. data/lib/joybox/version.rb +3 -0
  50. data/resources/box2d/blocks_sprite_sheet.png +0 -0
  51. data/resources/cocos_motion/dot.png +0 -0
  52. data/resources/cocos_motion/dot_selected.png +0 -0
  53. data/resources/cocos_motion/grossini.png +0 -0
  54. data/resources/cocos_motion/grossinis_sister.png +0 -0
  55. data/resources/cocos_motion/grossinis_sister_two.png +0 -0
  56. data/resources/cocos_motion/left_arrow.png +0 -0
  57. data/resources/cocos_motion/left_arrow_selected.png +0 -0
  58. data/resources/cocos_motion/right_arrow.png +0 -0
  59. data/resources/cocos_motion/right_arrow_selected.png +0 -0
  60. data/resources/fps_images-hd.png +0 -0
  61. data/resources/fps_images-ipadhd.png +0 -0
  62. data/resources/fps_images.png +0 -0
  63. data/spec/lib/joybox/cocos2d/cocos2d_spec.rb +7 -0
  64. data/spec/lib/joybox/cocos2d/macros_spec.rb +37 -0
  65. data/spec/main_spec.rb +9 -0
  66. data/vendor/Box2D.framework/Box2D +0 -0
  67. data/vendor/Box2D.framework/Box2D.framework.bridgesupport +166 -0
  68. data/vendor/Box2D.framework/Versions/A/Box2D +0 -0
  69. data/vendor/Box2D.framework/Versions/A/Headers/Collision/B2DContactListener.h +25 -0
  70. data/vendor/Box2D.framework/Versions/A/Headers/Collision/Shapes/B2DEdgeShape.h +17 -0
  71. data/vendor/Box2D.framework/Versions/A/Headers/Collision/Shapes/B2DPolygonShape.h +16 -0
  72. data/vendor/Box2D.framework/Versions/A/Headers/Collision/Shapes/B2DShape.h +15 -0
  73. data/vendor/Box2D.framework/Versions/A/Headers/Dynamics/B2DBody.h +43 -0
  74. data/vendor/Box2D.framework/Versions/A/Headers/Dynamics/B2DWorld.h +41 -0
  75. data/vendor/Box2D.framework/Versions/A/Resources/Box2DConfig.cmake +3 -0
  76. data/vendor/Box2D.framework/Versions/A/Resources/CMakeLists.txt +205 -0
  77. data/vendor/Cocos2D/Cocos2D.bridgesupport +7808 -0
  78. data/vendor/Cocos2D/include/CCAction.h +195 -0
  79. data/vendor/Cocos2D/include/CCActionCamera.h +73 -0
  80. data/vendor/Cocos2D/include/CCActionCatmullRom.h +139 -0
  81. data/vendor/Cocos2D/include/CCActionEase.h +159 -0
  82. data/vendor/Cocos2D/include/CCActionGrid.h +165 -0
  83. data/vendor/Cocos2D/include/CCActionGrid3D.h +205 -0
  84. data/vendor/Cocos2D/include/CCActionInstant.h +227 -0
  85. data/vendor/Cocos2D/include/CCActionInterval.h +431 -0
  86. data/vendor/Cocos2D/include/CCActionManager.h +113 -0
  87. data/vendor/Cocos2D/include/CCActionPageTurn3D.h +42 -0
  88. data/vendor/Cocos2D/include/CCActionProgressTimer.h +59 -0
  89. data/vendor/Cocos2D/include/CCActionTiledGrid.h +211 -0
  90. data/vendor/Cocos2D/include/CCActionTween.h +62 -0
  91. data/vendor/Cocos2D/include/CCAnimation.h +150 -0
  92. data/vendor/Cocos2D/include/CCAnimationCache.h +74 -0
  93. data/vendor/Cocos2D/include/CCArray.h +119 -0
  94. data/vendor/Cocos2D/include/CCAtlasNode.h +96 -0
  95. data/vendor/Cocos2D/include/CCCamera.h +98 -0
  96. data/vendor/Cocos2D/include/CCConfiguration.h +126 -0
  97. data/vendor/Cocos2D/include/CCDirector.h +344 -0
  98. data/vendor/Cocos2D/include/CCDirectorIOS.h +104 -0
  99. data/vendor/Cocos2D/include/CCDrawingPrimitives.h +139 -0
  100. data/vendor/Cocos2D/include/CCES2Renderer.h +83 -0
  101. data/vendor/Cocos2D/include/CCESRenderer.h +54 -0
  102. data/vendor/Cocos2D/include/CCFileUtils.h +188 -0
  103. data/vendor/Cocos2D/include/CCGL.h +72 -0
  104. data/vendor/Cocos2D/include/CCGLProgram.h +150 -0
  105. data/vendor/Cocos2D/include/CCGLView.h +160 -0
  106. data/vendor/Cocos2D/include/CCGrabber.h +44 -0
  107. data/vendor/Cocos2D/include/CCGrid.h +130 -0
  108. data/vendor/Cocos2D/include/CCLabelAtlas.h +68 -0
  109. data/vendor/Cocos2D/include/CCLabelBMFont.h +216 -0
  110. data/vendor/Cocos2D/include/CCLabelTTF.h +132 -0
  111. data/vendor/Cocos2D/include/CCLayer.h +280 -0
  112. data/vendor/Cocos2D/include/CCMenu.h +100 -0
  113. data/vendor/Cocos2D/include/CCMenuItem.h +423 -0
  114. data/vendor/Cocos2D/include/CCMotionStreak.h +87 -0
  115. data/vendor/Cocos2D/include/CCNS.h +54 -0
  116. data/vendor/Cocos2D/include/CCNode+Debug.h +39 -0
  117. data/vendor/Cocos2D/include/CCNode.h +569 -0
  118. data/vendor/Cocos2D/include/CCParallaxNode.h +50 -0
  119. data/vendor/Cocos2D/include/CCParticleBatchNode.h +99 -0
  120. data/vendor/Cocos2D/include/CCParticleExamples.h +95 -0
  121. data/vendor/Cocos2D/include/CCParticleSystem.h +453 -0
  122. data/vendor/Cocos2D/include/CCParticleSystemQuad.h +73 -0
  123. data/vendor/Cocos2D/include/CCProfiling.h +89 -0
  124. data/vendor/Cocos2D/include/CCProgressTimer.h +94 -0
  125. data/vendor/Cocos2D/include/CCProtocols.h +132 -0
  126. data/vendor/Cocos2D/include/CCRenderTexture.h +139 -0
  127. data/vendor/Cocos2D/include/CCScene.h +43 -0
  128. data/vendor/Cocos2D/include/CCScheduler.h +230 -0
  129. data/vendor/Cocos2D/include/CCShaderCache.h +60 -0
  130. data/vendor/Cocos2D/include/CCSprite.h +288 -0
  131. data/vendor/Cocos2D/include/CCSpriteBatchNode.h +138 -0
  132. data/vendor/Cocos2D/include/CCSpriteFrame.h +126 -0
  133. data/vendor/Cocos2D/include/CCSpriteFrameCache.h +121 -0
  134. data/vendor/Cocos2D/include/CCTMXLayer.h +164 -0
  135. data/vendor/Cocos2D/include/CCTMXObjectGroup.h +67 -0
  136. data/vendor/Cocos2D/include/CCTMXTiledMap.h +145 -0
  137. data/vendor/Cocos2D/include/CCTMXXMLParser.h +217 -0
  138. data/vendor/Cocos2D/include/CCTexture2D.h +357 -0
  139. data/vendor/Cocos2D/include/CCTextureAtlas.h +188 -0
  140. data/vendor/Cocos2D/include/CCTextureCache.h +146 -0
  141. data/vendor/Cocos2D/include/CCTexturePVR.h +129 -0
  142. data/vendor/Cocos2D/include/CCTileMapAtlas.h +83 -0
  143. data/vendor/Cocos2D/include/CCTouchDelegateProtocol.h +75 -0
  144. data/vendor/Cocos2D/include/CCTouchDispatcher.h +120 -0
  145. data/vendor/Cocos2D/include/CCTouchHandler.h +93 -0
  146. data/vendor/Cocos2D/include/CCTransition.h +296 -0
  147. data/vendor/Cocos2D/include/CCTransitionPageTurn.h +60 -0
  148. data/vendor/Cocos2D/include/CCTransitionProgress.h +62 -0
  149. data/vendor/Cocos2D/include/CCVertex.h +36 -0
  150. data/vendor/Cocos2D/include/CGPointExtension.h +344 -0
  151. data/vendor/Cocos2D/include/CocosDenshion/CDAudioManager.h +243 -0
  152. data/vendor/Cocos2D/include/CocosDenshion/CDConfig.h +60 -0
  153. data/vendor/Cocos2D/include/CocosDenshion/CDOpenALSupport.h +77 -0
  154. data/vendor/Cocos2D/include/CocosDenshion/CDXPropertyModifierAction.h +45 -0
  155. data/vendor/Cocos2D/include/CocosDenshion/CocosDenshion.h +440 -0
  156. data/vendor/Cocos2D/include/CocosDenshion/SimpleAudioEngine.h +90 -0
  157. data/vendor/Cocos2D/include/NSThread+performBlock.h +22 -0
  158. data/vendor/Cocos2D/include/OpenGL_Internal.h +86 -0
  159. data/vendor/Cocos2D/include/RubyMotionSchedule.h +7 -0
  160. data/vendor/Cocos2D/include/TGAlib.h +55 -0
  161. data/vendor/Cocos2D/include/TransformUtils.h +36 -0
  162. data/vendor/Cocos2D/include/ZipUtils.h +91 -0
  163. data/vendor/Cocos2D/include/base64.h +33 -0
  164. data/vendor/Cocos2D/include/ccCArray.h +229 -0
  165. data/vendor/Cocos2D/include/ccConfig.h +245 -0
  166. data/vendor/Cocos2D/include/ccDeprecated.h +300 -0
  167. data/vendor/Cocos2D/include/ccGLStateCache.h +138 -0
  168. data/vendor/Cocos2D/include/ccMacros.h +353 -0
  169. data/vendor/Cocos2D/include/ccShader_PositionColor_frag.h +12 -0
  170. data/vendor/Cocos2D/include/ccShader_PositionColor_vert.h +17 -0
  171. data/vendor/Cocos2D/include/ccShader_PositionTextureA8Color_frag.h +16 -0
  172. data/vendor/Cocos2D/include/ccShader_PositionTextureA8Color_vert.h +21 -0
  173. data/vendor/Cocos2D/include/ccShader_PositionTextureColorAlphaTest_frag.h +23 -0
  174. data/vendor/Cocos2D/include/ccShader_PositionTextureColor_frag.h +14 -0
  175. data/vendor/Cocos2D/include/ccShader_PositionTextureColor_vert.h +22 -0
  176. data/vendor/Cocos2D/include/ccShader_PositionTexture_frag.h +13 -0
  177. data/vendor/Cocos2D/include/ccShader_PositionTexture_uColor_frag.h +16 -0
  178. data/vendor/Cocos2D/include/ccShader_PositionTexture_uColor_vert.h +18 -0
  179. data/vendor/Cocos2D/include/ccShader_PositionTexture_vert.h +17 -0
  180. data/vendor/Cocos2D/include/ccShader_Position_uColor_frag.h +12 -0
  181. data/vendor/Cocos2D/include/ccShader_Position_uColor_vert.h +19 -0
  182. data/vendor/Cocos2D/include/ccShaders.h +45 -0
  183. data/vendor/Cocos2D/include/ccTypes.h +374 -0
  184. data/vendor/Cocos2D/include/ccUtils.h +36 -0
  185. data/vendor/Cocos2D/include/cocos2d.h +178 -0
  186. data/vendor/Cocos2D/include/kazmath/GL/mat4stack.h +51 -0
  187. data/vendor/Cocos2D/include/kazmath/GL/matrix.h +58 -0
  188. data/vendor/Cocos2D/include/kazmath/aabb.h +53 -0
  189. data/vendor/Cocos2D/include/kazmath/kazmath.h +39 -0
  190. data/vendor/Cocos2D/include/kazmath/mat3.h +75 -0
  191. data/vendor/Cocos2D/include/kazmath/mat4.h +93 -0
  192. data/vendor/Cocos2D/include/kazmath/neon_matrix_impl.h +41 -0
  193. data/vendor/Cocos2D/include/kazmath/plane.h +70 -0
  194. data/vendor/Cocos2D/include/kazmath/quaternion.h +113 -0
  195. data/vendor/Cocos2D/include/kazmath/ray2.h +50 -0
  196. data/vendor/Cocos2D/include/kazmath/utility.h +74 -0
  197. data/vendor/Cocos2D/include/kazmath/vec2.h +64 -0
  198. data/vendor/Cocos2D/include/kazmath/vec3.h +68 -0
  199. data/vendor/Cocos2D/include/kazmath/vec4.h +68 -0
  200. data/vendor/Cocos2D/include/uthash.h +972 -0
  201. data/vendor/Cocos2D/include/utlist.h +490 -0
  202. data/vendor/Cocos2D/libCocosDenshion.a +0 -0
  203. data/vendor/Cocos2D/libcocos2d.a +0 -0
  204. metadata +277 -0
@@ -0,0 +1,59 @@
1
+ class MenuLayer < Joybox::Core::Layer
2
+
3
+ scene
4
+
5
+ def on_enter
6
+
7
+ layout_title
8
+ layout_menu
9
+ end
10
+
11
+
12
+ def layout_title
13
+
14
+ title_label = Label.new text: 'Scenes',
15
+ font_size: 50,
16
+ position: [Screen.half_width, Screen.height - 80],
17
+ color: Color.from_hex('#4AA419')
18
+
19
+ self << title_label
20
+ end
21
+
22
+
23
+ def layout_menu
24
+
25
+ MenuLabel.default_font_size = 40
26
+
27
+ cocos2d_menu_item = MenuLabel.new text: 'Cocos 2D',
28
+ color: Color.new(252, 253, 167),
29
+ do |menu_item|
30
+
31
+ director.replace_scene(Cocos2DLayer.scene)
32
+ end
33
+
34
+
35
+ box2d_button = MenuLabel.new text: 'Box 2D',
36
+ color: Color.from_hex('82CCFB'),
37
+ do |menu_item|
38
+
39
+ director.replace_scene(Box2DLayer.scene)
40
+ end
41
+
42
+
43
+ cocos_motion_button = MenuLabel.new text: 'Cocos Motion',
44
+ color: Color.from_hex('FE7058'),
45
+ do |menu_item|
46
+
47
+ director.replace_scene(CocosMotionLayer.scene)
48
+ end
49
+
50
+
51
+ menu = Menu.new items: [cocos2d_menu_item, box2d_button, cocos_motion_button],
52
+ position: [Screen.half_width, (Screen.height - 80) / 2]
53
+
54
+ menu.align_items_vertically
55
+
56
+ self.add_child(menu, z: 1)
57
+ end
58
+
59
+ end
data/joybox.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/joybox/version.rb', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.name = 'joybox'
6
+ gem.version = Joybox::VERSION
7
+
8
+ gem.authors = ['Juan José Karam']
9
+ gem.email = 'juanjokaram@gmail.com'
10
+
11
+ gem.description = <<-DESC
12
+ A Cocos2D & Box2D DSL for RubyMotion
13
+ DESC
14
+
15
+ gem.summary = 'A Cocos2D & Box2D DSL for RubyMotion'
16
+ gem.homepage = 'http://joybox.io'
17
+
18
+ gem.files = `git ls-files`.split($\)
19
+ gem.require_paths = ['lib']
20
+ gem.test_files = gem.files.grep(%r{^spec/})
21
+
22
+ gem.add_dependency 'rake'
23
+ gem.add_development_dependency 'rspec'
24
+
25
+ end
data/lib/joybox.rb ADDED
@@ -0,0 +1,47 @@
1
+ #unless defined?(Motion::Project::Config)
2
+ # raise "The joybox gem must be required within a RubyMotion project Rakefile."
3
+ #end
4
+
5
+ Motion::Project::App.setup do |app|
6
+
7
+ app.frameworks += ["QuartzCore",
8
+ "CoreGraphics",
9
+ "Foundation",
10
+ "ApplicationServices",
11
+ "OpenAL",
12
+ "AVFoundation",
13
+ "AudioToolbox",
14
+ "QuartzCore"]
15
+
16
+ app.libs << "/usr/lib/libz.dylib"
17
+
18
+ # Scans app.files until it finds app/ (the default)
19
+ # if found, it inserts just before those files, otherwise it will insert to
20
+ # the end of the list
21
+ insert_point = 0
22
+ app.files.each_index do |index|
23
+ file = app.files[index]
24
+ if file =~ /^(?:\.\/)?app\//
25
+ # found app/, so stop looking
26
+ break
27
+ end
28
+ insert_point = index + 1
29
+ end
30
+
31
+ cocos2d_vendor = File.expand_path(File.join(File.dirname(__FILE__), '../vendor/Cocos2D'))
32
+ box2d_vendor = File.expand_path(File.join(File.dirname(__FILE__), '../vendor/Box2D.framework'))
33
+
34
+ app.vendor_project(cocos2d_vendor,
35
+ :static,
36
+ :products => ["libcocos2d.a", "libCocosDenshion.a"],
37
+ :headers_dir => "include")
38
+
39
+ app.vendor_project(box2d_vendor,
40
+ :static,
41
+ :products => ['Box2D'],
42
+ :headers_dir => "Headers")
43
+
44
+ Dir.glob(File.join(File.dirname(__FILE__), 'joybox/**/*.rb')).reverse.each do |file|
45
+ app.files.insert(insert_point, file)
46
+ end
47
+ end
@@ -0,0 +1,106 @@
1
+ Joybox::Body = B2DBody
2
+
3
+ class B2DBody
4
+
5
+ def self.defaults
6
+ {
7
+ position: [0, 0],
8
+ type: KStaticBodyType
9
+ }
10
+ end
11
+
12
+
13
+ def self.new(world, options = {})
14
+
15
+ options = options.nil? ? defaults : defaults.merge!(options)
16
+
17
+ # This line is needed to ensure that the position is a CGPoint
18
+ position = CGPointMake(options[:position][0], options[:position][1])
19
+
20
+ world.createBodyInPosition(position.to_pixel_coordinates,
21
+ type: options[:type])
22
+ end
23
+
24
+
25
+ def fixure_defaults
26
+ {
27
+ friction: 0.2,
28
+ restitution: 0,
29
+ density: 0,
30
+ is_sensor: false
31
+ }
32
+ end
33
+
34
+
35
+ def edge_fixure(*hash)
36
+
37
+ options = hash.pop
38
+ options = options.nil? ? fixure_defaults : fixure_defaults.merge!(options)
39
+
40
+ # The following lines are needed to ensure that the start_point and
41
+ # end_points are CGPoints
42
+ start_point = CGPointMake(options[:start_point][0], options[:start_point][1])
43
+ end_point = CGPointMake(options[:end_point][0], options[:end_point][1])
44
+
45
+ edge_shape = B2DEdgeShape.alloc.initWithStartPoint(start_point.to_pixel_coordinates,
46
+ endPoint: end_point.to_pixel_coordinates)
47
+
48
+ addFixureForShape(edge_shape,
49
+ friction: options[:friction],
50
+ restitution: options[:restitution],
51
+ density: options[:density],
52
+ isSensor: options[:is_sensor])
53
+ end
54
+
55
+
56
+ def polygon_fixure(*hash)
57
+
58
+ options = hash.pop
59
+ options = options.nil? ? fixure_defaults : fixure_defaults.merge!(options)
60
+
61
+ # This line is needed to ensure that the box is a CGSize
62
+ box_size = CGSizeMake(options[:box][0], options[:box][1])
63
+
64
+ polygon_shape = B2DPolygonShape.alloc.initWithBoxSize(box_size.to_pixel_coordinates)
65
+
66
+ addFixureForShape(polygon_shape,
67
+ friction: options[:friction],
68
+ restitution: options[:restitution],
69
+ density: options[:density],
70
+ isSensor: options[:is_sensor])
71
+ end
72
+
73
+
74
+ def apply_force_defaults
75
+ {
76
+ location: self.center,
77
+ as_impulse: true
78
+ }
79
+ end
80
+
81
+
82
+ def apply_force(options = {})
83
+
84
+ options = options.nil? ? apply_force_defaults : apply_force_defaults.merge!(options)
85
+
86
+ applyForce(options[:force],
87
+ atLocation: options[:location],
88
+ asImpulse: options[:as_impulse])
89
+ end
90
+
91
+
92
+ def apply_torque_defaults
93
+ {
94
+ as_impulse: true
95
+ }
96
+ end
97
+
98
+
99
+ def apply_torque(options = {})
100
+
101
+ options = options.nil? ? apply_torque_defaults : apply_torque_defaults.merge!(options)
102
+
103
+ applyTorque(options[:torque],
104
+ asImpulse: options[:as_impulse])
105
+ end
106
+ end
@@ -0,0 +1,79 @@
1
+ module Joybox
2
+
3
+ class World < B2DWorld
4
+
5
+ def self.defaults
6
+ {
7
+ gravity: [0, 0],
8
+ allows_sleeping: true,
9
+ continuos_physics: true
10
+ }
11
+ end
12
+
13
+
14
+ def self.new(options)
15
+
16
+ options = options.nil? ? defaults : defaults.merge!(options)
17
+
18
+ world = World.alloc.init
19
+
20
+ world.gravity = options[:gravity]
21
+ world.allowsSleeping = options[:allows_sleeping]
22
+ world.continuosPhysics = options[:continuos_physics]
23
+
24
+ world
25
+ end
26
+
27
+
28
+ def step_defaults
29
+ {
30
+ velocity_interactions: 8,
31
+ position_interactions: 1
32
+ }
33
+ end
34
+
35
+
36
+ def step(options = {})
37
+
38
+ options = options.nil? ? step_defaults : step_defaults.merge!(options)
39
+
40
+ stepWithDelta(options[:delta],
41
+ velocityInteractions: options[:velocity_interactions],
42
+ positionInteractions: options[:position_interactions])
43
+ end
44
+
45
+
46
+ def new_body(options = {}, &block)
47
+
48
+ body = Body.new(self, options)
49
+ body.instance_eval(&block)
50
+
51
+ body
52
+ end
53
+
54
+
55
+ def setup_collision_listener
56
+
57
+ @contact_listener = B2DContactListener.new
58
+ addContactListener(@contact_listener)
59
+
60
+ @listening_bodies = Hash.new
61
+
62
+ @contact_listener.beginContact = lambda { | first_body, second_body, is_touching |
63
+
64
+ @listening_bodies[first_body].call(second_body, is_touching) if @listening_bodies.include? first_body
65
+ @listening_bodies[second_body].call(first_body, is_touching) if @listening_bodies.include? second_body
66
+ }
67
+ end
68
+
69
+
70
+ def when_collide(body, &block)
71
+
72
+ setup_collision_listener unless @contact_listener
73
+
74
+ @listening_bodies[body] = block
75
+ end
76
+
77
+ end
78
+
79
+ end
@@ -0,0 +1,7 @@
1
+ module Joybox
2
+ module Actions
3
+
4
+ include Joybox::Common
5
+
6
+ end
7
+ end
@@ -0,0 +1,31 @@
1
+ module Joybox
2
+ module Actions
3
+
4
+ class Move
5
+
6
+ def self.defaults
7
+ {
8
+ duration: 0.3,
9
+ position: [0, 0]
10
+ }
11
+ end
12
+
13
+ def self.by(options = {})
14
+
15
+ options = options.nil? ? defaults : defaults.merge!(options)
16
+
17
+ CCMoveBy.actionWithDuration(options[:duration], position: options[:position])
18
+ end
19
+
20
+
21
+ def self.to(options = {})
22
+
23
+ options = options.nil? ? defaults : defaults.merge!(options)
24
+
25
+ CCMoveTo.actionWithDuration(options[:duration], position: options[:position])
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,24 @@
1
+ module Joybox
2
+ module Actions
3
+
4
+ class Repeat
5
+
6
+ def self.defaults
7
+ {
8
+ action: nil
9
+ }
10
+ end
11
+
12
+ #TODO: Revisar esto, no estoy completamente seguro que deba de cambiar la implementacion
13
+ # original (nombre del metodo)
14
+ def self.forever(options = {})
15
+
16
+ options = options.nil? ? defaults : defaults.merge!(options)
17
+
18
+ CCRepeatForever.actionWithAction(options[:action])
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,31 @@
1
+ module Joybox
2
+ module Actions
3
+
4
+ class Rotate
5
+
6
+ def self.defaults
7
+ {
8
+ duration: 0.3,
9
+ angle: 0
10
+ }
11
+ end
12
+
13
+ def self.by(options = {})
14
+
15
+ options = options.nil? ? defaults : defaults.merge!(options)
16
+
17
+ CCRotateBy.actionWithDuration(options[:duration], angle: options[:angle])
18
+ end
19
+
20
+
21
+ def self.to(options = {})
22
+
23
+ options = options.nil? ? defaults : defaults.merge!(options)
24
+
25
+ CCRotateTo.actionWithDuration(options[:duration], angle: options[:angle])
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,31 @@
1
+ module Joybox
2
+ module Actions
3
+
4
+ class Scale
5
+
6
+ def self.defaults
7
+ {
8
+ duration: 0.3,
9
+ scale: 0
10
+ }
11
+ end
12
+
13
+ def self.by(options = {})
14
+
15
+ options = options.nil? ? defaults : defaults.merge!(options)
16
+
17
+ CCScaleBy.actionWithDuration(options[:duration], scale: options[:scale])
18
+ end
19
+
20
+
21
+ def self.to(options = {})
22
+
23
+ options = options.nil? ? defaults : defaults.merge!(options)
24
+
25
+ CCScaleTo.actionWithDuration(options[:duration], scale: options[:scale])
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+ end