metro-ld25 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/.rvmrc +1 -0
- data/.travis.yml +6 -0
- data/Gemfile +12 -0
- data/Guardfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +189 -0
- data/Rakefile +18 -0
- data/bin/metro +16 -0
- data/changelog.md +157 -0
- data/lib/assets/menu-movement.wav +0 -0
- data/lib/assets/menu-selection.wav +0 -0
- data/lib/assets/missing.ogg +0 -0
- data/lib/assets/missing.png +0 -0
- data/lib/assets/missing.wav +0 -0
- data/lib/assets/missing_animation.png +0 -0
- data/lib/commands/generate_game.rb +13 -0
- data/lib/commands/generate_model.rb +25 -0
- data/lib/commands/generate_scene.rb +36 -0
- data/lib/commands/generate_view.rb +21 -0
- data/lib/commands/thor.rb +83 -0
- data/lib/core_ext/class.rb +14 -0
- data/lib/core_ext/numeric.rb +59 -0
- data/lib/gosu_ext/color.rb +62 -0
- data/lib/gosu_ext/gosu_constants.rb +53 -0
- data/lib/locale/en.yml +35 -0
- data/lib/locale/locale.rb +1 -0
- data/lib/metro.rb +140 -0
- data/lib/metro/animation.rb +135 -0
- data/lib/metro/animation/after_interval_factory.rb +12 -0
- data/lib/metro/animation/animation_factory.rb +15 -0
- data/lib/metro/animation/easing/ease_in.rb +15 -0
- data/lib/metro/animation/easing/easing.rb +51 -0
- data/lib/metro/animation/easing/linear.rb +15 -0
- data/lib/metro/animation/has_animations.rb +70 -0
- data/lib/metro/animation/implicit_animation.rb +100 -0
- data/lib/metro/animation/on_update_operation.rb +96 -0
- data/lib/metro/animation/scene_animation.rb +16 -0
- data/lib/metro/asset_path.rb +97 -0
- data/lib/metro/events/control_definition.rb +11 -0
- data/lib/metro/events/controls.rb +42 -0
- data/lib/metro/events/event_data.rb +60 -0
- data/lib/metro/events/event_dictionary.rb +52 -0
- data/lib/metro/events/event_factory.rb +17 -0
- data/lib/metro/events/event_relay.rb +300 -0
- data/lib/metro/events/event_state_manager.rb +63 -0
- data/lib/metro/events/events.rb +3 -0
- data/lib/metro/events/has_events.rb +108 -0
- data/lib/metro/events/hit_list.rb +75 -0
- data/lib/metro/events/unknown_sender.rb +5 -0
- data/lib/metro/font.rb +69 -0
- data/lib/metro/game.rb +102 -0
- data/lib/metro/game/dsl.rb +68 -0
- data/lib/metro/image.rb +68 -0
- data/lib/metro/logging.rb +33 -0
- data/lib/metro/missing_scene.rb +21 -0
- data/lib/metro/models/audio/song.rb +33 -0
- data/lib/metro/models/draws.rb +86 -0
- data/lib/metro/models/key_value_coding.rb +38 -0
- data/lib/metro/models/model.rb +236 -0
- data/lib/metro/models/model_factory.rb +32 -0
- data/lib/metro/models/models.rb +62 -0
- data/lib/metro/models/properties/animation_property.rb +115 -0
- data/lib/metro/models/properties/array_property.rb +24 -0
- data/lib/metro/models/properties/boolean_property.rb +27 -0
- data/lib/metro/models/properties/color_property.rb +116 -0
- data/lib/metro/models/properties/dimensions_property.rb +84 -0
- data/lib/metro/models/properties/font_property.rb +130 -0
- data/lib/metro/models/properties/image_property.rb +96 -0
- data/lib/metro/models/properties/model_property.rb +84 -0
- data/lib/metro/models/properties/numeric_property.rb +29 -0
- data/lib/metro/models/properties/options_property/no_option.rb +29 -0
- data/lib/metro/models/properties/options_property/options.rb +94 -0
- data/lib/metro/models/properties/options_property/options_property.rb +125 -0
- data/lib/metro/models/properties/position_property.rb +90 -0
- data/lib/metro/models/properties/property.rb +221 -0
- data/lib/metro/models/properties/property_owner.rb +137 -0
- data/lib/metro/models/properties/sample_property.rb +84 -0
- data/lib/metro/models/properties/scale_property.rb +80 -0
- data/lib/metro/models/properties/song_property.rb +89 -0
- data/lib/metro/models/properties/text_property.rb +75 -0
- data/lib/metro/models/ui/animated_sprite.rb +85 -0
- data/lib/metro/models/ui/border.rb +95 -0
- data/lib/metro/models/ui/fps.rb +54 -0
- data/lib/metro/models/ui/generic.rb +66 -0
- data/lib/metro/models/ui/grid_drawer.rb +74 -0
- data/lib/metro/models/ui/image.rb +87 -0
- data/lib/metro/models/ui/label.rb +175 -0
- data/lib/metro/models/ui/menu.rb +214 -0
- data/lib/metro/models/ui/model_label.rb +65 -0
- data/lib/metro/models/ui/model_labeler.rb +79 -0
- data/lib/metro/models/ui/rectangle.rb +59 -0
- data/lib/metro/models/ui/sprite.rb +79 -0
- data/lib/metro/models/ui/tile_map.rb +162 -0
- data/lib/metro/models/ui/ui.rb +13 -0
- data/lib/metro/parameters/command_line_args_parser.rb +68 -0
- data/lib/metro/parameters/options.rb +25 -0
- data/lib/metro/parameters/parameters.rb +2 -0
- data/lib/metro/sample.rb +40 -0
- data/lib/metro/scene.rb +477 -0
- data/lib/metro/scenes.rb +154 -0
- data/lib/metro/song.rb +56 -0
- data/lib/metro/template_message.rb +60 -0
- data/lib/metro/transitions/edit_transition_scene.rb +100 -0
- data/lib/metro/transitions/fade_transition_scene.rb +66 -0
- data/lib/metro/transitions/scene_transitions.rb +44 -0
- data/lib/metro/transitions/transition_scene.rb +19 -0
- data/lib/metro/units/bounds.rb +8 -0
- data/lib/metro/units/calculation_validations.rb +74 -0
- data/lib/metro/units/dimensions.rb +60 -0
- data/lib/metro/units/point.rb +51 -0
- data/lib/metro/units/rectangle_bounds.rb +85 -0
- data/lib/metro/units/scale.rb +46 -0
- data/lib/metro/units/units.rb +6 -0
- data/lib/metro/version.rb +32 -0
- data/lib/metro/views/json_view.rb +60 -0
- data/lib/metro/views/no_view.rb +34 -0
- data/lib/metro/views/parsers.rb +42 -0
- data/lib/metro/views/scene_view.rb +107 -0
- data/lib/metro/views/view.rb +133 -0
- data/lib/metro/views/writers.rb +43 -0
- data/lib/metro/views/yaml_view.rb +94 -0
- data/lib/metro/window.rb +94 -0
- data/lib/setup_handlers/exit_if_dry_run.rb +26 -0
- data/lib/setup_handlers/game_execution.rb +65 -0
- data/lib/setup_handlers/load_game_configuration.rb +65 -0
- data/lib/setup_handlers/load_game_files.rb +101 -0
- data/lib/setup_handlers/move_to_game_directory.rb +25 -0
- data/lib/setup_handlers/reload_game_on_game_file_changes.rb +79 -0
- data/lib/templates/game/README.md.tt +52 -0
- data/lib/templates/game/assets/brand.jpg +0 -0
- data/lib/templates/game/assets/hero.png +0 -0
- data/lib/templates/game/lib/custom_easing.rb +32 -0
- data/lib/templates/game/metro.tt +63 -0
- data/lib/templates/game/models/hero.rb +62 -0
- data/lib/templates/game/scenes/brand_scene.rb +19 -0
- data/lib/templates/game/scenes/brand_to_title_scene.rb +13 -0
- data/lib/templates/game/scenes/first_scene.rb +28 -0
- data/lib/templates/game/scenes/game_scene.rb +43 -0
- data/lib/templates/game/scenes/title_scene.rb +15 -0
- data/lib/templates/game/views/brand.yaml +4 -0
- data/lib/templates/game/views/brand_to_title.yaml +8 -0
- data/lib/templates/game/views/first.yaml +26 -0
- data/lib/templates/game/views/title.yaml +11 -0
- data/lib/templates/message.erb +23 -0
- data/lib/templates/model.rb.tt +111 -0
- data/lib/templates/scene.rb.tt +140 -0
- data/lib/templates/view.yaml.tt +11 -0
- data/lib/tmxed_ext/tile_set.rb +34 -0
- data/metro.gemspec +56 -0
- data/spec/core_ext/numeric_spec.rb +78 -0
- data/spec/core_ext/string_spec.rb +33 -0
- data/spec/gosu_ext/color_spec.rb +80 -0
- data/spec/metro/events/event_state_manager_spec.rb +5 -0
- data/spec/metro/models/key_value_coding_spec.rb +61 -0
- data/spec/metro/models/properties/array_property_spec.rb +60 -0
- data/spec/metro/models/properties/color_property_spec.rb +85 -0
- data/spec/metro/models/properties/dimensions_spec.rb +29 -0
- data/spec/metro/models/properties/font_property_spec.rb +127 -0
- data/spec/metro/models/properties/numeric_property_spec.rb +46 -0
- data/spec/metro/models/properties/options_property/no_option_spec.rb +25 -0
- data/spec/metro/models/properties/options_property/options_property_spec.rb +133 -0
- data/spec/metro/models/properties/options_property/options_spec.rb +125 -0
- data/spec/metro/models/properties/position_property_spec.rb +90 -0
- data/spec/metro/models/ui/label_spec.rb +259 -0
- data/spec/metro/parameters/command_line_args_parser_spec.rb +42 -0
- data/spec/metro/scene_spec.rb +15 -0
- data/spec/metro/scene_views/json_view_spec.rb +27 -0
- data/spec/metro/scene_views/yaml_view_spec.rb +38 -0
- data/spec/metro/scenes_spec.rb +77 -0
- data/spec/metro/units/point_spec.rb +132 -0
- data/spec/metro/views/view_spec.rb +53 -0
- data/spec/setup_handlers/exit_if_dry_run_spec.rb +27 -0
- data/spec/setup_handlers/reload_game_on_game_file_changes_spec.rb +68 -0
- data/spec/spec_helper.rb +20 -0
- metadata +374 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm gemset use gaming
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
data/LICENSE.txt
ADDED
@@ -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.
|
data/README.md
ADDED
@@ -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)
|
data/Rakefile
ADDED
@@ -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
|
data/bin/metro
ADDED
@@ -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
|
data/changelog.md
ADDED
@@ -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
|