kawaii 0.1.0

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 (108) hide show
  1. data/.DS_Store +0 -0
  2. data/.gitignore +2 -0
  3. data/.yardoc/checksums +19 -0
  4. data/.yardoc/object_types +0 -0
  5. data/.yardoc/objects/root.dat +0 -0
  6. data/.yardoc/proxy_types +0 -0
  7. data/Gemfile +3 -0
  8. data/Gemfile.lock +28 -0
  9. data/LICENSE +22 -0
  10. data/README.md +46 -0
  11. data/Rakefile +2 -0
  12. data/backlog.md +26 -0
  13. data/bin/kawaii +13 -0
  14. data/doc/Kawaii/Animation.html +120 -0
  15. data/doc/Kawaii/AudioManager.html +202 -0
  16. data/doc/Kawaii/ContentManager.html +487 -0
  17. data/doc/Kawaii/Entity.html +604 -0
  18. data/doc/Kawaii/Game.html +1141 -0
  19. data/doc/Kawaii/InputManager.html +120 -0
  20. data/doc/Kawaii/Intro.html +120 -0
  21. data/doc/Kawaii/Math.html +105 -0
  22. data/doc/Kawaii/Node.html +1030 -0
  23. data/doc/Kawaii/NodeManager.html +512 -0
  24. data/doc/Kawaii/Scene.html +120 -0
  25. data/doc/Kawaii/SceneManager.html +200 -0
  26. data/doc/Kawaii/TextField.html +538 -0
  27. data/doc/Kawaii/TmxLayer.html +836 -0
  28. data/doc/Kawaii/TmxTileMap.html +972 -0
  29. data/doc/Kawaii/Tweening.html +120 -0
  30. data/doc/Kawaii/UnsupportedFormatError.html +123 -0
  31. data/doc/Kawaii/Vector2.html +514 -0
  32. data/doc/Kawaii.html +136 -0
  33. data/doc/_index.html +327 -0
  34. data/doc/class_list.html +53 -0
  35. data/doc/css/common.css +1 -0
  36. data/doc/css/full_list.css +57 -0
  37. data/doc/css/style.css +328 -0
  38. data/doc/file.README.html +130 -0
  39. data/doc/file_list.html +55 -0
  40. data/doc/frames.html +28 -0
  41. data/doc/index.html +130 -0
  42. data/doc/js/app.js +214 -0
  43. data/doc/js/full_list.js +173 -0
  44. data/doc/js/jquery.js +4 -0
  45. data/doc/method_list.html +708 -0
  46. data/doc/top-level-namespace.html +112 -0
  47. data/kawaii.gemspec +27 -0
  48. data/lib/kawaii/animation.rb +4 -0
  49. data/lib/kawaii/audio_manager.rb +7 -0
  50. data/lib/kawaii/command.rb +96 -0
  51. data/lib/kawaii/constants.rb +5 -0
  52. data/lib/kawaii/content_manager.rb +34 -0
  53. data/lib/kawaii/entity.rb +25 -0
  54. data/lib/kawaii/errors.rb +6 -0
  55. data/lib/kawaii/game.rb +89 -0
  56. data/lib/kawaii/helpers.rb +22 -0
  57. data/lib/kawaii/input_manager.rb +51 -0
  58. data/lib/kawaii/intro.rb +4 -0
  59. data/lib/kawaii/math.rb +5 -0
  60. data/lib/kawaii/node.rb +62 -0
  61. data/lib/kawaii/node_manager.rb +35 -0
  62. data/lib/kawaii/physics_entity.rb +32 -0
  63. data/lib/kawaii/physics_manager.rb +27 -0
  64. data/lib/kawaii/scene.rb +21 -0
  65. data/lib/kawaii/scene_manager.rb +50 -0
  66. data/lib/kawaii/text_field.rb +22 -0
  67. data/lib/kawaii/tmx_layer.rb +44 -0
  68. data/lib/kawaii/tmx_tile_map.rb +70 -0
  69. data/lib/kawaii/tweening.rb +4 -0
  70. data/lib/kawaii/vector2.rb +26 -0
  71. data/lib/kawaii/version.rb +3 -0
  72. data/lib/kawaii.rb +22 -0
  73. data/samples/.DS_Store +0 -0
  74. data/samples/content/gfx/ball.png +0 -0
  75. data/samples/content/maps/test_map.json +39 -0
  76. data/samples/content/maps/test_map.xml +12 -0
  77. data/samples/sample.rb +25 -0
  78. data/samples/sample_1/.DS_Store +0 -0
  79. data/samples/sample_1/content/gfx/ball.png +0 -0
  80. data/samples/sample_1/content/gfx/map1.png +0 -0
  81. data/samples/sample_1/content/maps/map1.json +50 -0
  82. data/samples/sample_1/content/maps/map1.tmx +16 -0
  83. data/samples/sample_1/content/maps/test_map.json +39 -0
  84. data/samples/sample_1/content/maps/test_map.xml +12 -0
  85. data/samples/sample_1/enemy.rb +11 -0
  86. data/samples/sample_1/sample_game.rb +51 -0
  87. data/samples/sample_chipmunk/sample.rb +0 -0
  88. data/spec/kawaii/audio_manager_spec.rb +9 -0
  89. data/spec/kawaii/content/gfx/ball.png +0 -0
  90. data/spec/kawaii/content/maps/test_map.json +39 -0
  91. data/spec/kawaii/content/maps/test_map.xml +12 -0
  92. data/spec/kawaii/content_manager_spec.rb +33 -0
  93. data/spec/kawaii/entity_spec.rb +38 -0
  94. data/spec/kawaii/game_spec.rb +23 -0
  95. data/spec/kawaii/helpers_spec.rb +31 -0
  96. data/spec/kawaii/input_manager_spec.rb +29 -0
  97. data/spec/kawaii/node_manager_spec.rb +36 -0
  98. data/spec/kawaii/node_spec.rb +81 -0
  99. data/spec/kawaii/physics_entity_spec.rb +37 -0
  100. data/spec/kawaii/physics_manager_spec.rb +45 -0
  101. data/spec/kawaii/scene_manager_spec.rb +34 -0
  102. data/spec/kawaii/scene_spec.rb +31 -0
  103. data/spec/kawaii/text_field_spec.rb +17 -0
  104. data/spec/kawaii/tmx_layer_spec.rb +21 -0
  105. data/spec/kawaii/tmx_tile_map_spec.rb +38 -0
  106. data/spec/kawaii/vector2_spec.rb +34 -0
  107. data/spec/spec_helper.rb +1 -0
  108. metadata +205 -0
@@ -0,0 +1,112 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Top Level Namespace
8
+
9
+ &mdash; Documentation by YARD 0.8.2.1
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '';
20
+ framesUrl = "frames.html#!" + escape(window.location.href);
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="_index.html">Index</a> &raquo;
35
+
36
+
37
+ <span class="title">Top Level Namespace</span>
38
+
39
+
40
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
+ </div>
42
+
43
+ <div id="search">
44
+
45
+ <a class="full_list_link" id="class_list_link"
46
+ href="class_list.html">
47
+ Class List
48
+ </a>
49
+
50
+ <a class="full_list_link" id="method_list_link"
51
+ href="method_list.html">
52
+ Method List
53
+ </a>
54
+
55
+ <a class="full_list_link" id="file_list_link"
56
+ href="file_list.html">
57
+ File List
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
62
+ </div>
63
+
64
+ <iframe id="search_frame"></iframe>
65
+
66
+ <div id="content"><h1>Top Level Namespace
67
+
68
+
69
+
70
+ </h1>
71
+
72
+ <dl class="box">
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+ </dl>
82
+ <div class="clear"></div>
83
+
84
+ <h2>Defined Under Namespace</h2>
85
+ <p class="children">
86
+
87
+
88
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Kawaii.html" title="Kawaii (module)">Kawaii</a></span>
89
+
90
+
91
+
92
+
93
+ </p>
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+ </div>
104
+
105
+ <div id="footer">
106
+ Generated on Wed Jul 11 13:46:34 2012 by
107
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
108
+ 0.8.2.1 (ruby-1.9.3).
109
+ </div>
110
+
111
+ </body>
112
+ </html>
data/kawaii.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require 'kawaii/version'
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.version = Kawaii::VERSION
6
+
7
+ gem.name = "kawaii"
8
+ gem.date = %q[2012-07-11]
9
+ gem.authors = ["Erik Skoglund"]
10
+ gem.platform = Gem::Platform::RUBY
11
+ gem.email = "erikskoglund88@gmail.com"
12
+ gem.summary = "game library that extends gosu"
13
+ gem.homepage = "https://github.com/eriksk/kawaii"
14
+ gem.description = "kawaii provides a tiny game library that extends gosu"
15
+
16
+ gem.files = `git ls-files`.split($\)
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+
22
+ gem.default_executable = 'kawaii'
23
+
24
+ gem.add_dependency('gosu', '>= 0.7.43')
25
+ gem.add_dependency('chipmunk', '>= 5.3.4.5')
26
+ gem.add_development_dependency('rspec')
27
+ end
@@ -0,0 +1,4 @@
1
+ module Kawaii
2
+ class Animation
3
+ end
4
+ end
@@ -0,0 +1,7 @@
1
+ module Kawaii
2
+ class AudioManager
3
+ def initialize game
4
+ @game = game
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,96 @@
1
+ class String
2
+ # colorization
3
+ def colorize(text, color_code)
4
+ "\e[#{color_code}m#{text}\e[0m"
5
+ end
6
+
7
+ def red
8
+ colorize(self, 31)
9
+ end
10
+ def green
11
+ colorize(self, 32)
12
+ end
13
+ def yellow
14
+ colorize(self, 33)
15
+ end
16
+ def pink
17
+ colorize(self, 35)
18
+ end
19
+ end
20
+
21
+ module Kawaii
22
+ class Command
23
+ def self.run command, args
24
+ puts ""
25
+ case command
26
+ when "new"
27
+ new_game_template(args)
28
+ when "help"
29
+ print_help()
30
+ else
31
+ end
32
+ puts ""
33
+ end
34
+
35
+ private
36
+ def self.new_game_template args
37
+ width = 800
38
+ height = 600
39
+ fullscreen = false
40
+ game_class_name = args.first.capitalize
41
+ File.open(args.first + ".rb", "w+") do |f|
42
+ f.write <<-EOF
43
+ require 'kawaii'
44
+
45
+ class #{game_class_name} < Kawaii::Game
46
+
47
+ WIDTH = #{width}
48
+ HEIGHT = #{height}
49
+ FULLSCREEN = #{fullscreen}
50
+ CONTENT_ROOT = "content"
51
+
52
+ def initialize
53
+ super WIDTH, HEIGHT, FULLSCREEN, CONTENT_ROOT
54
+ load_game
55
+ end
56
+
57
+ def load_game
58
+ # TODO: load code goes here
59
+ end
60
+
61
+ def input
62
+ # TODO: input goes here
63
+ if button_down?Gosu::KbEscape
64
+ exit
65
+ end
66
+ end
67
+
68
+ def before_update
69
+ # TODO: game logic goes here
70
+ input
71
+ end
72
+
73
+ def after_update
74
+ # TODO: game logic goes here
75
+ end
76
+ end
77
+
78
+ # entry point
79
+ game = #{game_class_name}.new
80
+ game.show
81
+ EOF
82
+ end
83
+
84
+ puts "Successfully created new game '#{game_class_name}'".green
85
+ puts "Run it with the command: " + "ruby #{args.first}.rb".yellow
86
+ end
87
+
88
+ def self.print_help
89
+ puts "Kawaii <3".pink
90
+ puts <<-EOF
91
+ Commands:
92
+ new [name] # create new game template
93
+ EOF
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,5 @@
1
+ module Kawaii
2
+ GRAVITY = 0.00098
3
+ DEFAULT_CELL_SIZE = 32
4
+ SCENE_TRANSITION_DURATION = 1000
5
+ end
@@ -0,0 +1,34 @@
1
+ require 'gosu'
2
+
3
+ module Kawaii
4
+ class ContentManager
5
+
6
+ attr_accessor :root, :images
7
+
8
+ def initialize window, root
9
+ @window = window
10
+ @root = root
11
+ @images = {}
12
+ end
13
+
14
+ def clear
15
+ @images.clear
16
+ end
17
+
18
+ # loads an image and caches it for further use
19
+ # if an image has been loaded it is just being returned
20
+ def load_image(path, tileable = false)
21
+ if !@images[path]
22
+ @images[path] = Gosu::Image.new(@window, "#{@root}/#{path}", tileable)
23
+ end
24
+ @images[path]
25
+ end
26
+
27
+ def load_tiled_images(path, cell_size)
28
+ if !@images[path]
29
+ @images[path] = Gosu::Image.load_tiles(@window, "#{@root}/#{path}", cell_size, cell_size, true)
30
+ end
31
+ @images[path]
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,25 @@
1
+ require_relative 'node'
2
+
3
+ module Kawaii
4
+ class Entity < Kawaii::Node
5
+
6
+ attr_accessor :flipped_h, :flipped_v, :texture
7
+
8
+ def initialize texture
9
+ super()
10
+ @flipped_v, @flipped_h = false, false
11
+ @texture = texture
12
+ end
13
+
14
+ def before_update dt
15
+ end
16
+
17
+ def after_update dt
18
+ end
19
+
20
+ def draw
21
+ # TODO: draw flipped v & h
22
+ @texture.draw_rot(self.position.x, self.position.y, 0, 0) # TODO: rotation
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,6 @@
1
+ module Kawaii
2
+ class UnsupportedFormatError < StandardError
3
+ end
4
+ class WrongTypeError < StandardError
5
+ end
6
+ end
@@ -0,0 +1,89 @@
1
+ require 'gosu'
2
+
3
+ module Kawaii
4
+ class Game < Gosu::Window
5
+
6
+ attr_accessor :width, :height, :fullscreen, :show_fps, :font, :node_manager, :content_manager, :physics_manager
7
+
8
+ def initialize width = 800, height = 600, fullscreen = false, content_root = "content", debug = true
9
+ super width, height, fullscreen
10
+ @width, @height, @fullscreen = width, height, fullscreen
11
+
12
+ # managers
13
+ @node_manager = Kawaii::NodeManager.new
14
+ @content_manager = Kawaii::ContentManager.new(self, content_root)
15
+ @audio_manager = Kawaii::AudioManager.new(self)
16
+ @input_manager = Kawaii::InputManager.new(self)
17
+ @physics_manager = Kawaii::PhysicsManager.new
18
+
19
+ # stats
20
+ @top_color = Gosu::Color.new(0xFF1EB1FA)
21
+ @bottom_color = Gosu::Color.new(0xFF1D4DB5)
22
+ @font = Gosu::Font.new(self, Gosu::default_font_name, 18)
23
+ @debug = debug
24
+
25
+ if @debug
26
+ puts "Game settings:"
27
+ puts "\tResolution: #{width}:#{height}"
28
+ puts "\tFullscreen: #{fullscreen}"
29
+ puts "\tContent root: #{content_root}"
30
+ print_stats
31
+ end
32
+ end
33
+
34
+ def add_child node
35
+ @node_manager.nodes.push node
36
+ end
37
+
38
+ def remove_child node
39
+ @node_manager.nodes.delete node
40
+ end
41
+
42
+ def print_stats
43
+ puts "Statistics:"
44
+ puts "Nodes: #{node_manager.count}"
45
+ end
46
+
47
+ def update
48
+ if self.class.method_defined? :before_update
49
+ before_update
50
+ end
51
+
52
+ @dt = delta()
53
+ @node_manager.update @dt
54
+
55
+ if self.class.method_defined? :after_update
56
+ after_update
57
+ end
58
+ end
59
+
60
+ def delta
61
+ 16.0 # TODO: real delta
62
+ end
63
+
64
+ def get_fps
65
+ 1000.0 / delta
66
+ end
67
+
68
+ def before_draw
69
+ end
70
+
71
+ def after_draw
72
+ end
73
+
74
+ def draw
75
+ draw_quad(
76
+ 0, 0, @top_color,
77
+ @width, 0, @top_color,
78
+ @width, @height, @bottom_color,
79
+ 0, @height, @bottom_color,
80
+ )
81
+ before_draw
82
+ @node_manager.draw
83
+ if @debug
84
+ @font.draw("FPS: #{get_fps}", 14, 14, 0)
85
+ end
86
+ after_draw
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,22 @@
1
+ module Kawaii
2
+
3
+ def self.lerp min, max, weight
4
+ min + (max - min) * weight
5
+ end
6
+
7
+ def self.clerp min, max, weight
8
+ weight2 = (1.0 - Math::cos(weight * Math::PI)) / 2.0
9
+ min * (1.0 - weight2) + max * weight2
10
+ end
11
+
12
+ def self.smooth_step y0, y1, y2, y3, mu
13
+
14
+ mu2 = mu*mu
15
+ a0 = y3 - y2 - y0 + y1
16
+ a1 = y0 - y1 - a0
17
+ a2 = y2 - y0
18
+ a3 = y1
19
+
20
+ (a0*mu*mu2+a1*mu2+a2*mu+a3)
21
+ end
22
+ end
@@ -0,0 +1,51 @@
1
+ module Kawaii
2
+ class InputManager
3
+
4
+ attr_accessor :game
5
+
6
+ def initialize game, bound_buttons = []
7
+ @game = game
8
+ @buttons = []
9
+ @bound_buttons = bound_buttons
10
+
11
+ @old_mouse_x = 0.0
12
+ @old_mouse_y = 0.0
13
+ end
14
+
15
+ def update
16
+ @buttons.clear
17
+ @bound_buttons.each do |btn|
18
+ @buttons.push btn if button_down? btn
19
+ end
20
+ @old_mouse_x = mouse_x
21
+ @old_mouse_y = mouse_y
22
+ end
23
+
24
+ def button_down? button
25
+ @game.button_down?(button)
26
+ end
27
+
28
+ def button_clicked? button
29
+ @buttons.include?(button) && !@game.button_down?(button)
30
+ end
31
+
32
+ def mouse_x
33
+ @game.mouse_x
34
+ end
35
+ def mouse_y
36
+ @game.mouse_y
37
+ end
38
+ def old_mouse_x
39
+ @old_mouse_x
40
+ end
41
+ def old_mouse_y
42
+ @old_mouse_y
43
+ end
44
+ def mouse_dif_x
45
+ mouse_x - old_mouse_x
46
+ end
47
+ def mouse_dif_y
48
+ mouse_y - old_mouse_y
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,4 @@
1
+ module Kawaii
2
+ class Intro
3
+ end
4
+ end
@@ -0,0 +1,5 @@
1
+ module Kawaii
2
+ module Math
3
+
4
+ end
5
+ end
@@ -0,0 +1,62 @@
1
+
2
+ module Kawaii
3
+ class Node
4
+ attr_accessor :position, :velocity, :rotation, :gravity, :static, :children
5
+
6
+ def initialize static = false, position = Vector2.new, velocity = Vector2.new, gravity = Kawaii::Vector2.new(0, Kawaii::GRAVITY)
7
+ @children = []
8
+ @rotation = 0.0
9
+ @position = position
10
+ @velocity = velocity
11
+ @gravity = gravity
12
+ @static = static
13
+ end
14
+
15
+ def count
16
+ sum = 1
17
+ @children.each do |child|
18
+ sum += child.count
19
+ end
20
+ sum
21
+ end
22
+
23
+ def add_child node
24
+ @children.push(node)
25
+ end
26
+
27
+ def remove_child node
28
+ @children.delete(node)
29
+ end
30
+
31
+ def has_children?
32
+ @children.size > 0
33
+ end
34
+
35
+ def update dt
36
+ if self.class.method_defined? :before_update
37
+ before_update dt
38
+ end
39
+
40
+ if !@static
41
+ @velocity.x += @gravity.x * dt
42
+ @velocity.y += @gravity.y * dt
43
+ @position.x += @velocity.x * dt
44
+ @position.y += @velocity.y * dt
45
+ end
46
+
47
+ @children.each do |child|
48
+ child.update dt
49
+ end
50
+
51
+ if self.class.method_defined? :after_update
52
+ after_update dt
53
+ end
54
+ end
55
+
56
+ def draw
57
+ @children.each do |child|
58
+ child.draw
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,35 @@
1
+
2
+ module Kawaii
3
+ class NodeManager
4
+
5
+ attr_accessor :nodes
6
+
7
+ def initialize
8
+ @nodes = []
9
+ end
10
+
11
+ def count
12
+ sum = 0
13
+ nodes.each do |node|
14
+ sum += node.count
15
+ end
16
+ sum
17
+ end
18
+
19
+ def update dt
20
+ nodes.each do |node|
21
+ node.update dt
22
+ end
23
+ end
24
+
25
+ def draw
26
+ nodes.each do |node|
27
+ node.draw
28
+ end
29
+ end
30
+
31
+ def clear
32
+ nodes.clear
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,32 @@
1
+ require 'chipmunk'
2
+
3
+ module Kawaii
4
+ class PhysicsEntity < Entity
5
+
6
+ attr_accessor :shape, :body, :geom
7
+
8
+ def initialize geom, args
9
+ @geom = geom
10
+ case geom
11
+ when :circle
12
+ create_circle(args[:radius])
13
+ when :rectangle
14
+ create_rectangle(args[:width], args[:height])
15
+ end
16
+ end
17
+
18
+ def add_to_space chipmunk_space
19
+ # TODO: check if body is static etc...
20
+ end
21
+
22
+ def remove_from_space chipmunk_space
23
+ end
24
+
25
+ protected
26
+ def create_circle radius
27
+ end
28
+
29
+ def create_rectangle width, height
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,27 @@
1
+ require 'chipmunk'
2
+
3
+ module Kawaii
4
+ class PhysicsManager
5
+
6
+ attr_accessor :space, :entities
7
+
8
+ def initialize
9
+ @space = CP::Space.new
10
+ @entities = []
11
+ end
12
+
13
+ def add_physics_entity entity
14
+ if entity.class == PhysicsEntity
15
+ @entities.push entity
16
+ entity.add_to_space @space
17
+ else
18
+ raise WrongTypeError, "Only PhysicsEntity and derivatives are accepted"
19
+ end
20
+ end
21
+
22
+ def remove_physics_entity entity
23
+ @entities.delete entity
24
+ entity.remove_from_space @space
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,21 @@
1
+ module Kawaii
2
+ class Scene
3
+ attr_accessor :name, :scene_manager
4
+
5
+ def initialize scene_manager
6
+ @scene_manager = scene_manager
7
+ end
8
+
9
+ def transition_in current, duration
10
+ end
11
+
12
+ def transition_out current, duration
13
+ end
14
+
15
+ def update dt
16
+ end
17
+
18
+ def draw
19
+ end
20
+ end
21
+ end