metro-ld25 0.3.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 (177) hide show
  1. data/.gitignore +17 -0
  2. data/.rspec +2 -0
  3. data/.rvmrc +1 -0
  4. data/.travis.yml +6 -0
  5. data/Gemfile +12 -0
  6. data/Guardfile +4 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +189 -0
  9. data/Rakefile +18 -0
  10. data/bin/metro +16 -0
  11. data/changelog.md +157 -0
  12. data/lib/assets/menu-movement.wav +0 -0
  13. data/lib/assets/menu-selection.wav +0 -0
  14. data/lib/assets/missing.ogg +0 -0
  15. data/lib/assets/missing.png +0 -0
  16. data/lib/assets/missing.wav +0 -0
  17. data/lib/assets/missing_animation.png +0 -0
  18. data/lib/commands/generate_game.rb +13 -0
  19. data/lib/commands/generate_model.rb +25 -0
  20. data/lib/commands/generate_scene.rb +36 -0
  21. data/lib/commands/generate_view.rb +21 -0
  22. data/lib/commands/thor.rb +83 -0
  23. data/lib/core_ext/class.rb +14 -0
  24. data/lib/core_ext/numeric.rb +59 -0
  25. data/lib/gosu_ext/color.rb +62 -0
  26. data/lib/gosu_ext/gosu_constants.rb +53 -0
  27. data/lib/locale/en.yml +35 -0
  28. data/lib/locale/locale.rb +1 -0
  29. data/lib/metro.rb +140 -0
  30. data/lib/metro/animation.rb +135 -0
  31. data/lib/metro/animation/after_interval_factory.rb +12 -0
  32. data/lib/metro/animation/animation_factory.rb +15 -0
  33. data/lib/metro/animation/easing/ease_in.rb +15 -0
  34. data/lib/metro/animation/easing/easing.rb +51 -0
  35. data/lib/metro/animation/easing/linear.rb +15 -0
  36. data/lib/metro/animation/has_animations.rb +70 -0
  37. data/lib/metro/animation/implicit_animation.rb +100 -0
  38. data/lib/metro/animation/on_update_operation.rb +96 -0
  39. data/lib/metro/animation/scene_animation.rb +16 -0
  40. data/lib/metro/asset_path.rb +97 -0
  41. data/lib/metro/events/control_definition.rb +11 -0
  42. data/lib/metro/events/controls.rb +42 -0
  43. data/lib/metro/events/event_data.rb +60 -0
  44. data/lib/metro/events/event_dictionary.rb +52 -0
  45. data/lib/metro/events/event_factory.rb +17 -0
  46. data/lib/metro/events/event_relay.rb +300 -0
  47. data/lib/metro/events/event_state_manager.rb +63 -0
  48. data/lib/metro/events/events.rb +3 -0
  49. data/lib/metro/events/has_events.rb +108 -0
  50. data/lib/metro/events/hit_list.rb +75 -0
  51. data/lib/metro/events/unknown_sender.rb +5 -0
  52. data/lib/metro/font.rb +69 -0
  53. data/lib/metro/game.rb +102 -0
  54. data/lib/metro/game/dsl.rb +68 -0
  55. data/lib/metro/image.rb +68 -0
  56. data/lib/metro/logging.rb +33 -0
  57. data/lib/metro/missing_scene.rb +21 -0
  58. data/lib/metro/models/audio/song.rb +33 -0
  59. data/lib/metro/models/draws.rb +86 -0
  60. data/lib/metro/models/key_value_coding.rb +38 -0
  61. data/lib/metro/models/model.rb +236 -0
  62. data/lib/metro/models/model_factory.rb +32 -0
  63. data/lib/metro/models/models.rb +62 -0
  64. data/lib/metro/models/properties/animation_property.rb +115 -0
  65. data/lib/metro/models/properties/array_property.rb +24 -0
  66. data/lib/metro/models/properties/boolean_property.rb +27 -0
  67. data/lib/metro/models/properties/color_property.rb +116 -0
  68. data/lib/metro/models/properties/dimensions_property.rb +84 -0
  69. data/lib/metro/models/properties/font_property.rb +130 -0
  70. data/lib/metro/models/properties/image_property.rb +96 -0
  71. data/lib/metro/models/properties/model_property.rb +84 -0
  72. data/lib/metro/models/properties/numeric_property.rb +29 -0
  73. data/lib/metro/models/properties/options_property/no_option.rb +29 -0
  74. data/lib/metro/models/properties/options_property/options.rb +94 -0
  75. data/lib/metro/models/properties/options_property/options_property.rb +125 -0
  76. data/lib/metro/models/properties/position_property.rb +90 -0
  77. data/lib/metro/models/properties/property.rb +221 -0
  78. data/lib/metro/models/properties/property_owner.rb +137 -0
  79. data/lib/metro/models/properties/sample_property.rb +84 -0
  80. data/lib/metro/models/properties/scale_property.rb +80 -0
  81. data/lib/metro/models/properties/song_property.rb +89 -0
  82. data/lib/metro/models/properties/text_property.rb +75 -0
  83. data/lib/metro/models/ui/animated_sprite.rb +85 -0
  84. data/lib/metro/models/ui/border.rb +95 -0
  85. data/lib/metro/models/ui/fps.rb +54 -0
  86. data/lib/metro/models/ui/generic.rb +66 -0
  87. data/lib/metro/models/ui/grid_drawer.rb +74 -0
  88. data/lib/metro/models/ui/image.rb +87 -0
  89. data/lib/metro/models/ui/label.rb +175 -0
  90. data/lib/metro/models/ui/menu.rb +214 -0
  91. data/lib/metro/models/ui/model_label.rb +65 -0
  92. data/lib/metro/models/ui/model_labeler.rb +79 -0
  93. data/lib/metro/models/ui/rectangle.rb +59 -0
  94. data/lib/metro/models/ui/sprite.rb +79 -0
  95. data/lib/metro/models/ui/tile_map.rb +162 -0
  96. data/lib/metro/models/ui/ui.rb +13 -0
  97. data/lib/metro/parameters/command_line_args_parser.rb +68 -0
  98. data/lib/metro/parameters/options.rb +25 -0
  99. data/lib/metro/parameters/parameters.rb +2 -0
  100. data/lib/metro/sample.rb +40 -0
  101. data/lib/metro/scene.rb +477 -0
  102. data/lib/metro/scenes.rb +154 -0
  103. data/lib/metro/song.rb +56 -0
  104. data/lib/metro/template_message.rb +60 -0
  105. data/lib/metro/transitions/edit_transition_scene.rb +100 -0
  106. data/lib/metro/transitions/fade_transition_scene.rb +66 -0
  107. data/lib/metro/transitions/scene_transitions.rb +44 -0
  108. data/lib/metro/transitions/transition_scene.rb +19 -0
  109. data/lib/metro/units/bounds.rb +8 -0
  110. data/lib/metro/units/calculation_validations.rb +74 -0
  111. data/lib/metro/units/dimensions.rb +60 -0
  112. data/lib/metro/units/point.rb +51 -0
  113. data/lib/metro/units/rectangle_bounds.rb +85 -0
  114. data/lib/metro/units/scale.rb +46 -0
  115. data/lib/metro/units/units.rb +6 -0
  116. data/lib/metro/version.rb +32 -0
  117. data/lib/metro/views/json_view.rb +60 -0
  118. data/lib/metro/views/no_view.rb +34 -0
  119. data/lib/metro/views/parsers.rb +42 -0
  120. data/lib/metro/views/scene_view.rb +107 -0
  121. data/lib/metro/views/view.rb +133 -0
  122. data/lib/metro/views/writers.rb +43 -0
  123. data/lib/metro/views/yaml_view.rb +94 -0
  124. data/lib/metro/window.rb +94 -0
  125. data/lib/setup_handlers/exit_if_dry_run.rb +26 -0
  126. data/lib/setup_handlers/game_execution.rb +65 -0
  127. data/lib/setup_handlers/load_game_configuration.rb +65 -0
  128. data/lib/setup_handlers/load_game_files.rb +101 -0
  129. data/lib/setup_handlers/move_to_game_directory.rb +25 -0
  130. data/lib/setup_handlers/reload_game_on_game_file_changes.rb +79 -0
  131. data/lib/templates/game/README.md.tt +52 -0
  132. data/lib/templates/game/assets/brand.jpg +0 -0
  133. data/lib/templates/game/assets/hero.png +0 -0
  134. data/lib/templates/game/lib/custom_easing.rb +32 -0
  135. data/lib/templates/game/metro.tt +63 -0
  136. data/lib/templates/game/models/hero.rb +62 -0
  137. data/lib/templates/game/scenes/brand_scene.rb +19 -0
  138. data/lib/templates/game/scenes/brand_to_title_scene.rb +13 -0
  139. data/lib/templates/game/scenes/first_scene.rb +28 -0
  140. data/lib/templates/game/scenes/game_scene.rb +43 -0
  141. data/lib/templates/game/scenes/title_scene.rb +15 -0
  142. data/lib/templates/game/views/brand.yaml +4 -0
  143. data/lib/templates/game/views/brand_to_title.yaml +8 -0
  144. data/lib/templates/game/views/first.yaml +26 -0
  145. data/lib/templates/game/views/title.yaml +11 -0
  146. data/lib/templates/message.erb +23 -0
  147. data/lib/templates/model.rb.tt +111 -0
  148. data/lib/templates/scene.rb.tt +140 -0
  149. data/lib/templates/view.yaml.tt +11 -0
  150. data/lib/tmxed_ext/tile_set.rb +34 -0
  151. data/metro.gemspec +56 -0
  152. data/spec/core_ext/numeric_spec.rb +78 -0
  153. data/spec/core_ext/string_spec.rb +33 -0
  154. data/spec/gosu_ext/color_spec.rb +80 -0
  155. data/spec/metro/events/event_state_manager_spec.rb +5 -0
  156. data/spec/metro/models/key_value_coding_spec.rb +61 -0
  157. data/spec/metro/models/properties/array_property_spec.rb +60 -0
  158. data/spec/metro/models/properties/color_property_spec.rb +85 -0
  159. data/spec/metro/models/properties/dimensions_spec.rb +29 -0
  160. data/spec/metro/models/properties/font_property_spec.rb +127 -0
  161. data/spec/metro/models/properties/numeric_property_spec.rb +46 -0
  162. data/spec/metro/models/properties/options_property/no_option_spec.rb +25 -0
  163. data/spec/metro/models/properties/options_property/options_property_spec.rb +133 -0
  164. data/spec/metro/models/properties/options_property/options_spec.rb +125 -0
  165. data/spec/metro/models/properties/position_property_spec.rb +90 -0
  166. data/spec/metro/models/ui/label_spec.rb +259 -0
  167. data/spec/metro/parameters/command_line_args_parser_spec.rb +42 -0
  168. data/spec/metro/scene_spec.rb +15 -0
  169. data/spec/metro/scene_views/json_view_spec.rb +27 -0
  170. data/spec/metro/scene_views/yaml_view_spec.rb +38 -0
  171. data/spec/metro/scenes_spec.rb +77 -0
  172. data/spec/metro/units/point_spec.rb +132 -0
  173. data/spec/metro/views/view_spec.rb +53 -0
  174. data/spec/setup_handlers/exit_if_dry_run_spec.rb +27 -0
  175. data/spec/setup_handlers/reload_game_on_game_file_changes_spec.rb +68 -0
  176. data/spec/spec_helper.rb +20 -0
  177. metadata +374 -0
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm gemset use gaming
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ before_install:
6
+ - sudo apt-get install build-essential freeglut3-dev libfreeimage-dev libgl1-mesa-dev libopenal-dev libpango1.0-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsndfile-dev libxinerama-dev
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in metro.gemspec
4
+ gemspec
5
+
6
+ gem 'rake'
7
+
8
+ group 'development' do
9
+ gem 'guard'
10
+ gem 'guard-rspec'
11
+ gem 'rb-fsevent', '~> 0.9.1'
12
+ end
@@ -0,0 +1,4 @@
1
+ guard 'rspec', version: 2, cli: "-c -f d" do
2
+ watch(%r{^spec/.+_spec\.rb$})
3
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
4
+ end
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Franklin Webber
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,189 @@
1
+ ```
2
+ ______ ___ _____
3
+ ___ |/ /_____ __ /_______________
4
+ __ /|_/ / _ _ \_ __/__ ___/_ __ \
5
+ _ / / / / __// /_ _ / / /_/ /
6
+ /_/ /_/ \___/ \__/ /_/ \____/
7
+
8
+ ```
9
+
10
+ Metro is a framework built around [gosu](https://github.com/jlnr/gosu) (the 2D
11
+ game development library in Ruby). The goal of Metro is to enforce common
12
+ conceptual structures and conventions making it easier to quickly generate a
13
+ game.
14
+
15
+ [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/burtlo/metro)
16
+
17
+ [![Build Status](https://travis-ci.org/burtlo/metro.png)](https://travis-ci.org/burtlo/metro)
18
+
19
+ [![Dependency Status](https://gemnasium.com/burtlo/metro.png)](https://gemnasium.com/burtlo/metro)
20
+
21
+ ## Why Use Metro?
22
+
23
+ You want to develop games in Ruby.
24
+
25
+ ### Why not just use Gosu?
26
+
27
+ Gosu does a lot of great work bringing OpenGL to Ruby. However, when you finish
28
+ the [initial tutorial](https://github.com/jlnr/gosu/wiki/Ruby-Tutorial) you are
29
+ left with a brittle game that is very resistant to changes or new features.
30
+
31
+ * Metro provides the concept of a
32
+ [Scene](https://github.com/burtlo/metro/wiki/Scenes) which is the first
33
+ abstraction you would likely build after completing the tutorial.
34
+
35
+ > Developing your game in individual scenes will make it easier to logically
36
+ layout your game.
37
+
38
+ * Sane management of images, animations, fonts, songs, and samples through
39
+ [model properties](https://github.com/burtlo/metro/wiki/Model-properties).
40
+
41
+ > Having to load and cache fonts and images in every one of your models is
42
+ tedious. It is also is wasteful as several of the same fonts are being used all
43
+ over the place.
44
+
45
+ * [Key-frame animations](https://github.com/burtlo/metro/wiki/Animations)
46
+
47
+ > Metro makes it simple to move an actor from one position to another position.
48
+ So simple movements, fades, color changes, and really any property change over
49
+ time is defined very simply.
50
+
51
+ * [Event Handling](https://github.com/burtlo/metro/wiki/Events)
52
+
53
+ > Delete those huge `if ... elsif ... else` input checking structures for
54
+ keyboard, gamepad, and mouse button presses (down,up, and held). Metro makes it
55
+ easy to define them and an attach a course of action to take when the event
56
+ happens.
57
+
58
+ ### Why not use Chingu or Gamebox?
59
+
60
+ Both [Gamebox](https://github.com/shawn42/gamebox) and
61
+ [Chingu](https://github.com/ippa/chingu) are more mature libraries with a
62
+ larger set of features. I encourage you to check out those libraries.
63
+
64
+ Metro's primary goal is to be a framework of features that make game development
65
+ joyful.
66
+
67
+ * Active Reloading while building your scenes.
68
+
69
+ > Adjustments to your game code while working on a scene will automatically
70
+ reload your game code. The template game sets up a shortcut key (**Ctrl+R**)
71
+ that allows you to explicitly reload the game and the current scene.
72
+
73
+ * Scene Edit Support
74
+
75
+ > Scenes can enter an edit mode which allows you to re-position actors within
76
+ the scene. The changes can then be saved back to the view. This allows you to
77
+ fine tune the layout of those scene elements, making it easier to get things
78
+ pixel perfect.
79
+
80
+ Metro's secondary goal is to make it easier for individuals familiar with Rails
81
+ get into game development. That is the reason for some of the design choices,
82
+ the opinionated structure, and generators that come with Metro.
83
+
84
+ ### Why you shouldn't use Metro?
85
+
86
+ Metro has some the following limitations:
87
+
88
+ * Limited to the gems defined within Metro
89
+
90
+ > At this point in time you are not able to define and package additional
91
+ dependencies with your game. This means if you are using a gem that is not
92
+ already defined by Metro you will run into trouble when running it on alternate
93
+ systems. This will likely be addressed in the future when more demand arises.
94
+
95
+ * Difficult Deployment
96
+
97
+ > For individuals to play your game, they will also have to install Metro.
98
+ However, work is being made to bring some simple packaging to Metro games to
99
+ make them stand-along executables.
100
+
101
+ ## Installation
102
+
103
+ ```bash
104
+ $ gem install metro
105
+ ```
106
+
107
+ ## Usage
108
+
109
+ ### Running a Game
110
+
111
+ By default `metro` will look for a file named 'metro' within the current working
112
+ directory if no *gamefilename* has been provided.
113
+
114
+ ```bash
115
+ $ metro GAMEFILENAME
116
+ ```
117
+
118
+ Please take a look at the [example game project](https://github.com/burtlo/starry-knight) that is being built alongside of 'metro'. It currently showcases all the current features available to the game.
119
+
120
+ ```bash
121
+ $ git clone git://github.com/burtlo/starry-knight.git
122
+ $ cd starry-knight
123
+ $ metro
124
+ ```
125
+
126
+ ### Creating a Game
127
+
128
+ Metro contains content generators to assist you.
129
+
130
+ Creating a Game can be done with a single command.
131
+
132
+ ```bash
133
+ $ metro new GAMENAME
134
+ ```
135
+
136
+ This should generate for you a starting game with a branding scene and a title
137
+ scene. The game allows the player to start the game.
138
+
139
+ The game is missing the `first` scene of the game. This can be created with the
140
+ scene generator:
141
+
142
+ ```bash
143
+ $ metro generate scene first
144
+ ```
145
+
146
+ This should generate a scene in the scenes directory. The scene file contains a lot of examples of how to draw, animate and have your scene listen to events.
147
+
148
+ ## Resources
149
+
150
+ ### Programming
151
+
152
+ * [YAML for Ruby](http://www.yaml.org/YAML_for_ruby.html) reference which can help you define views in the game.
153
+ * [JSONLint](http://jsonlint.com/) is a JSON Validator
154
+
155
+ ### Art
156
+
157
+ * [Lost Garden](http://www.lostgarden.com/2007/05/dancs-miraculously-flexible-game.html)
158
+ * [Text to ASCII Art Generator](http://patorjk.com/software/taag)
159
+ * [Icons](http://css-tricks.com/flat-icons-icon-fonts/)
160
+ * [Subtle Patterns](http://subtlepatterns.com/) various backgrounds and textures.
161
+
162
+ ### Drawing
163
+
164
+ * [Tiled Map Editor](http://www.mapeditor.org/) generates tile maps.
165
+ * [Pixen](http://pixenapp.com/) generates sprites and animations.
166
+ * [Zwoptex](http://www.zwopple.com/zwoptex/) generates sprite sheets.
167
+
168
+ ### Animation
169
+
170
+ * [TimelieFX](http://www.rigzsoft.co.uk/) particle editor allows you to export animations.
171
+
172
+ ### Sound
173
+
174
+ * [as3sfxr](http://www.superflashbros.net/as3sfxr/) generates unique sounds.
175
+ * [bfxr](http://www.bfxr.net/) generates unique sounds.
176
+ * [Audacity](http://audacity.sourceforge.net/) for recording and editing.
177
+ * [Ableton](https://www.ableton.com/en/) music generation tool.
178
+
179
+ ### Books
180
+
181
+ * [Rules of Play](http://www.amazon.com/dp/0262240459)
182
+ * [Game Programming Gems 8](http://www.amazon.com/dp/1584507020)
183
+ * [Game Feel](http://www.amazon.com/dp/0123743281)
184
+ * [Game Coding Complete](http://www.amazon.com/dp/1584506806)
185
+ * [Game Design Workshop](http://www.amazon.com/dp/0240809742)
186
+ * [Challenges For Game Designers](http://www.amazon.com/dp/158450580X)
187
+ * [The Art of Game Design: A book of lenses](http://www.amazon.com/dp/0123694965)
188
+ * [A Theory of Fun](http://www.theoryoffun.com)
189
+ * [Andrew Rollings and Ernest Adams on Game Design](http://www.amazon.com/dp/1592730019)
@@ -0,0 +1,18 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ begin
4
+
5
+ require 'rspec/core/rake_task'
6
+
7
+ desc "Run all rspecs"
8
+ RSpec::Core::RakeTask.new(:spec) do |t|
9
+ t.pattern = 'spec/**/*_spec.rb'
10
+ t.rspec_opts = '-c'
11
+ end
12
+
13
+ task :default => :spec
14
+
15
+ rescue LoadError
16
+ puts "please install rspec to run tests"
17
+ puts "install with gem install rspec"
18
+ end
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ path = __FILE__
4
+ while File.symlink?(path)
5
+ path = File.expand_path(File.readlink(__FILE__), File.dirname(__FILE__))
6
+ end
7
+ $:.unshift(File.join(File.dirname(File.expand_path(path)), '..', 'lib'))
8
+
9
+ require 'metro'
10
+ require 'commands/thor'
11
+
12
+ if Metro::Thor.tasks.keys.include? ARGV.first
13
+ Metro::Thor.start
14
+ else
15
+ Metro.run(*ARGV)
16
+ end
@@ -0,0 +1,157 @@
1
+ # Metro
2
+
3
+ ## 0.3.4 / 2012-12-02
4
+
5
+ * 'Metro::UI::Sprite' and 'Metro::UI::AnimatedSprite' are now available
6
+ for defining models that have visual representation, positions, locations
7
+ dimensions, bounds, scale, and angle.
8
+ * 'Metro::UI::TimeMap' is now available. This is a mapping of the Tile
9
+ Editor output (JSON only export)
10
+ * More informative error message when a model is not found and you
11
+ get stuck with a Generic.
12
+ * Positions can now be defined as strings
13
+
14
+ ## 0.3.3 / 2012-11-28
15
+
16
+ * Edit Mode - actors within a scene can have their position edited
17
+ and saved. Actors within the scene that have a valid bounds
18
+ specified will appear within the scene with name and bounding box.
19
+ * Dimensions can now be defined as strings
20
+ * Game bounds and Game dimensions return objects of that type
21
+ * `metr::ui::fps` added and has some shortcut placements settings
22
+
23
+ ## 0.3.2 / 2012-11-26
24
+
25
+ * Debug Mode will now automatically reload the game and scene on source
26
+ file changes.
27
+ * Reloading the game will no longer take down the app for syntax errors
28
+ and other errors that are easily detected by simply loading the code.
29
+ * Template game is now automatically has debug mode enabled by default
30
+
31
+ ## 0.3.1 / 2012-11-25
32
+
33
+ * FIX issue with some Gosu example code left in the oven
34
+
35
+ ## 0.3.0 / 2012-11-25
36
+
37
+ * FIX lots of typos in the documentation
38
+ * Removed `up_action_missing` and `down_ation_missing` event handling
39
+ * Notification events now have block support for 0, 1 and 2 parameters
40
+ * FIX Registration of custom defined custom view parsers
41
+ * FIX Grid Layer layout for Edit Mode
42
+
43
+
44
+ ## 0.2.7 / 2012/11-20
45
+
46
+ * FIX to the new game template
47
+ * Updated the game template to give more movement to the hero in the first scene
48
+ * Added the fade-in, fade-out helper to show all the instructions
49
+
50
+ ## 0.2.6 / 2012/11-20
51
+
52
+ * Menus now support vertical and horizontal layout
53
+ * Menus now support movement and selection noises
54
+ * Menus can now have a default selection
55
+ * Menus can be enabled/disabled
56
+ * Added Array Property, Boolean Property, and Menu Options Property
57
+ * FIX label horizontal center and right alignments
58
+ * Generic Models will now show a warning instead of raising an exception
59
+ * Removed event chain debug messaging
60
+
61
+ ## 0.2.5 / 2012-11-18
62
+
63
+ * FIX metro::ui::rectangle calculation
64
+ * FIX remaining references to metro::models::* to metro::ui::*
65
+ * FIX Models will use their setters over setting raw properties
66
+ * Metro::UI::Label now supports horizontal alignment, vertical alignment, and multiple lines
67
+
68
+ ## 0.2.4 / 2012-11-15
69
+
70
+ * All retrieved models from properties are now cached for better performance
71
+ * Animations were re-vamped to accept more parameters
72
+ * Metro models names in code are now referred to as "metro::models::*" to "metro::ui::*"
73
+
74
+ ## 0.2.3 / 2012-11-11
75
+
76
+ * FIX metro generators and templates generating out-of-date formats
77
+ * FIX YAML views will now return an empty hash instead of false on empty files
78
+ * Added first scene and model to template.
79
+ * FIX better error message when a directory is specified
80
+ * Added the `g` generator shortcut: `metro g scene NAME`
81
+
82
+ ## 0.2.2 / 2012-11-10
83
+
84
+ * Song support added (scene methods and model properties)
85
+ * Sample support added (model properties)
86
+ * Added a missing sample/song
87
+ * Implicit Animation easings can now be more easily created and registered.
88
+ * Properties can now be defined with a block
89
+ * FIX Dimensions parse creation called wrong method
90
+ * Removed support for specifying a color in animation
91
+
92
+ ## 0.2.1 / 2012-11-08
93
+
94
+ * FIX Scene fade transition color changing and implicit animations
95
+ for colors
96
+ * Games creating custom properties will appear in the property list
97
+ * Properties now correctly default to numeric properties
98
+ * Point objects can be added to other point objects.
99
+
100
+ ## 0.2.0 / 2012-11-07
101
+
102
+ * Views now use position instead of `x`, `y`, and `z-order`
103
+ * Point, Scale, and Dimensions is available in model and scenes.
104
+ * Events are shared from superclasses to subclasses.
105
+ * Templates updated to use GameScene and GameModel for each game.
106
+ * Models are automatically added to the update loop
107
+ * Model properties now make it easier to store/retrieve various
108
+ common numeric, position font, image, and animation properties.
109
+
110
+
111
+ ## 0.1.6 / 2012-11-07
112
+
113
+ * Events are shared from superclasses to subclasses.
114
+ * Templates updated to use GameScene and GameModel for each game.
115
+ * Models are automatically added to the update loop
116
+ * Model properties now make it easier to store/retrieve various
117
+ common numeric, position font, image, and animation properties.
118
+
119
+ ## 0.1.5 / 2012-11-01
120
+
121
+ * Metro.reload! will reload all game classes
122
+ * Scenes can now an editable state where the position of items can be
123
+ updated and saved.
124
+ * Event blocks can optionally receive an event object. The event object
125
+ includes modifier key information.
126
+
127
+
128
+ ## 0.1.4 / 2012-10-28
129
+
130
+ * Removed dependency on the sender gem so metro is playable on Windows
131
+
132
+ ## 0.1.3 / 2012-10-28
133
+
134
+ * Fade Scene Transition support added
135
+ * Numeric#seconds and Numeric#ticks helpers added
136
+ * Scenes can now define delayed events `after 2.seconds do ; end`
137
+ * Labels have more defaults and more font options and size
138
+ * Labels and images will default to center of screen
139
+ * Able to define game controls within your metro file
140
+ * Implicit animations support color change.
141
+
142
+ ## 0.1.2 / 2012-10-26
143
+
144
+ * Generators for games, scenes, models, and views
145
+
146
+ ## 0.1.1 / 2012-10-25
147
+
148
+ * FIX: Requiring the sender gem
149
+
150
+ ## 0.1.0 / 2012-10-25
151
+
152
+ * Better error handling for missing metro file and missing scene
153
+ * FIX: Scenes without Scene suffix will work again
154
+ * Gosu::Color supports creation with various formats: rgb, rgba, and hex
155
+ * Animations can be defined with class level helpers
156
+ * Removed Scene#events as Events can be defined at the class level
157
+ * Scenes and Models can generate custom notification events