metro-ld25 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
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