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.
- 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
|
+
[](https://codeclimate.com/github/burtlo/metro)
|
|
16
|
+
|
|
17
|
+
[](https://travis-ci.org/burtlo/metro)
|
|
18
|
+
|
|
19
|
+
[](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
|