metro-ld26 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/.travis.yml +6 -0
- data/Gemfile +14 -0
- data/Guardfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +177 -0
- data/Rakefile +18 -0
- data/bin/metro +16 -0
- data/changelog.md +153 -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 +144 -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 +342 -0
- data/lib/metro/events/event_state_manager.rb +70 -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 +75 -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 +246 -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 +98 -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 +132 -0
- data/lib/metro/models/ui/tmx/isometric_position.rb +43 -0
- data/lib/metro/models/ui/tmx/orthogonal_position.rb +15 -0
- data/lib/metro/models/ui/tmx/tile_layer.rb +78 -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 +478 -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 +148 -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 +95 -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 +43 -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/tmx_ext/object.rb +26 -0
- data/lib/tmx_ext/tile_set.rb +41 -0
- data/metro.gemspec +57 -0
- data/metro.png +0 -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/image_spec.rb +33 -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/units/rectangle_bounds_spec.rb +56 -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
- data/spec/tmx_ext/object_spec.rb +96 -0
- data/spec/tmx_ext/tile_set_spec.rb +24 -0
- metadata +379 -0
@@ -0,0 +1,43 @@
|
|
1
|
+
# <%= name %>
|
2
|
+
|
3
|
+
## Details
|
4
|
+
|
5
|
+
Additional information or backstory about the game that you
|
6
|
+
are creating. This file's intention is to allow a user to
|
7
|
+
refer to this for more information related to the game or
|
8
|
+
possibly any notes or caveats about the game.
|
9
|
+
|
10
|
+
## Contact
|
11
|
+
|
12
|
+
|
13
|
+
## Resources
|
14
|
+
|
15
|
+
### Programming
|
16
|
+
|
17
|
+
* [YAML for Ruby](http://www.yaml.org/YAML_for_ruby.html) reference which can help you define views in the game.
|
18
|
+
* [JSONLint](http://jsonlint.com/) is a JSON Validator
|
19
|
+
|
20
|
+
### Art
|
21
|
+
|
22
|
+
* [Lost Garden](http://www.lostgarden.com/2007/05/dancs-miraculously-flexible-game.html)
|
23
|
+
* [TimelieFX](http://www.rigzsoft.co.uk/) particle editor allows you to export animations.
|
24
|
+
* [Text to ASCII Art Generator](http://patorjk.com/software/taag)
|
25
|
+
* [Icons](http://css-tricks.com/flat-icons-icon-fonts/)
|
26
|
+
* [Subtle Patterns](http://subtlepatterns.com/) various backgrounds and textures.
|
27
|
+
|
28
|
+
### Sound
|
29
|
+
|
30
|
+
* [as3sfxr](http://www.superflashbros.net/as3sfxr/) generates unique sounds.
|
31
|
+
* [Ableton](https://www.ableton.com/en/) music generation tool.
|
32
|
+
|
33
|
+
### Books
|
34
|
+
|
35
|
+
* [Rules of Play](http://www.amazon.com/dp/0262240459)
|
36
|
+
* [Game Programming Gems 8](http://www.amazon.com/dp/1584507020)
|
37
|
+
* [Game Feel](http://www.amazon.com/dp/0123743281)
|
38
|
+
* [Game Coding Complete](http://www.amazon.com/dp/1584506806)
|
39
|
+
* [Game Design Workshop](http://www.amazon.com/dp/0240809742)
|
40
|
+
* [Challenges For Game Designers](http://www.amazon.com/dp/158450580X)
|
41
|
+
* [The Art of Game Design: A book of lenses](http://www.amazon.com/dp/0123694965)
|
42
|
+
* [A Theory of Fun](http://www.theoryoffun.com)
|
43
|
+
* [Andrew Rollings and Ernest Adams on Game Design](http://www.amazon.com/dp/1592730019)
|
Binary file
|
Binary file
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#
|
2
|
+
# The lib folder is a great place for you to define:
|
3
|
+
#
|
4
|
+
# * New Units
|
5
|
+
# * Monkey Patches for Metro
|
6
|
+
# * New model properties
|
7
|
+
# * Custom Easings
|
8
|
+
# * Custom View Parers/Writers
|
9
|
+
# * Anything that isn't quite a model, scene, or view
|
10
|
+
#
|
11
|
+
|
12
|
+
#
|
13
|
+
# This custom easing is an exact copy of the 'Ease In' easing defined in Metro.
|
14
|
+
# It is present here as an example.
|
15
|
+
#
|
16
|
+
class CustomEasing < Metro::Easing
|
17
|
+
|
18
|
+
#
|
19
|
+
# @param [Float] moment the point in time within the interval. For example for
|
20
|
+
# a 60 tick interval, this would be the values 0, 1, 2, 3, 4, 5, 6, ... 59.
|
21
|
+
# @param [Float] start the starting value of the property
|
22
|
+
# @param [Float] change the final value for the property
|
23
|
+
# @param [Float] interval the total length of the interval
|
24
|
+
#
|
25
|
+
# @return [Float] the value at the particular moment of the interval
|
26
|
+
def self.calculation(moment,start,change,interval)
|
27
|
+
# @note this is the exact same as the already defined Ease In
|
28
|
+
change * (moment = moment / interval) * moment + start
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
Metro::Easing.register :custom, CustomEasing
|
@@ -0,0 +1,63 @@
|
|
1
|
+
#
|
2
|
+
# This is the main game file which contains information
|
3
|
+
# about your game.
|
4
|
+
#
|
5
|
+
# Remember, this is really a ruby file, so anything
|
6
|
+
# that can be done with Ruby can be written here.
|
7
|
+
#
|
8
|
+
# "With great power comes great responsibility" ~ Uncle Ben
|
9
|
+
|
10
|
+
#
|
11
|
+
# This is the name of your game...
|
12
|
+
name "<%= name %>"
|
13
|
+
|
14
|
+
#
|
15
|
+
# The author of the game. This method can be executed
|
16
|
+
# twice if more people are working on this game.
|
17
|
+
#
|
18
|
+
author "Your Name"
|
19
|
+
|
20
|
+
#
|
21
|
+
# The website where the person playing this game
|
22
|
+
# could learn more about this game, other games, the
|
23
|
+
# authors, or perhaps ask for help or support.
|
24
|
+
#
|
25
|
+
website "www.idsoftware.com"
|
26
|
+
|
27
|
+
#
|
28
|
+
# The contact email address where a person that is
|
29
|
+
# playing the game might want to contact to thank
|
30
|
+
# or reach out for help.
|
31
|
+
#
|
32
|
+
contact "person@personemail.com"
|
33
|
+
|
34
|
+
#
|
35
|
+
# This sets the resolution for the game
|
36
|
+
#
|
37
|
+
resolution 640, 480
|
38
|
+
|
39
|
+
#
|
40
|
+
# The scene that will be shown first when the game
|
41
|
+
# starts.
|
42
|
+
#
|
43
|
+
first_scene :brand
|
44
|
+
|
45
|
+
#
|
46
|
+
# Defines controls which are meta events. They can be used group button
|
47
|
+
# events together under a single name so that you can use it throughout
|
48
|
+
# the game and also will allow for players of your game to redefine the
|
49
|
+
# keys.
|
50
|
+
#
|
51
|
+
controls do
|
52
|
+
# NAME_OF_EVENT, is: EVENT TYPE, with: [ ALL_EVENTS ]
|
53
|
+
confirmation is: :button_up, with: [ KbReturn, KbEnter, KbSpace, GpButton0 ]
|
54
|
+
cancel is: :button_up, with: [ KbEscape, KbDelete ]
|
55
|
+
end
|
56
|
+
|
57
|
+
#
|
58
|
+
# Enable debug mode for the game. Which could
|
59
|
+
# allow different logic. When this is set the
|
60
|
+
# Game.debug? method will return a true
|
61
|
+
# value.
|
62
|
+
#
|
63
|
+
debug true
|
@@ -0,0 +1,62 @@
|
|
1
|
+
class Hero < Metro::UI::Sprite
|
2
|
+
|
3
|
+
# A Metro::UI::Sprite predefines a number of commmon properties:
|
4
|
+
#
|
5
|
+
# * position
|
6
|
+
# * dimensions
|
7
|
+
# * color
|
8
|
+
# * angle
|
9
|
+
# * scale
|
10
|
+
#
|
11
|
+
# These properties add getter and setter methods of the following:
|
12
|
+
#
|
13
|
+
# * position, x, y, z and z_order (both z and z_order are the same)
|
14
|
+
# * dimensions, width, and height
|
15
|
+
# * color, red, green, blue, alpha
|
16
|
+
# * angle
|
17
|
+
# * scale, x_factor, y_factor
|
18
|
+
|
19
|
+
property :image, path: "hero.png"
|
20
|
+
|
21
|
+
property :move_amount, default: 1.5
|
22
|
+
property :turn_amount, default: 90.0
|
23
|
+
|
24
|
+
event :on_hold, KbLeft, GpLeft do
|
25
|
+
self.x -= move_amount
|
26
|
+
end
|
27
|
+
|
28
|
+
event :on_hold, KbRight, GpRight do
|
29
|
+
self.x += move_amount
|
30
|
+
end
|
31
|
+
|
32
|
+
event :on_hold, KbUp, GpUp do
|
33
|
+
self.y -= move_amount
|
34
|
+
end
|
35
|
+
|
36
|
+
event :on_hold, KbDown, GpDown do
|
37
|
+
self.y += move_amount
|
38
|
+
end
|
39
|
+
|
40
|
+
event :on_up, KbSpace do
|
41
|
+
self.angle += turn_amount
|
42
|
+
end
|
43
|
+
|
44
|
+
# By default a Metro::UI::Sprite defines a #draw method which will
|
45
|
+
# draw the associated image with the position, rotation, and scale.
|
46
|
+
#
|
47
|
+
# If you would like to maintain the current draw functionality but augment
|
48
|
+
# it, you can define a draw method which calls to super.
|
49
|
+
#
|
50
|
+
# def draw
|
51
|
+
# super
|
52
|
+
# # custom drawing alongside the image
|
53
|
+
# end
|
54
|
+
#
|
55
|
+
# You may find it necessary to replace the existing draw functionality.
|
56
|
+
# Here you could define your own draw that overrides the original.
|
57
|
+
#
|
58
|
+
# def draw
|
59
|
+
# # custom drawing without the original image draw
|
60
|
+
# end
|
61
|
+
|
62
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class BrandScene < GameScene
|
2
|
+
|
3
|
+
draws :brand
|
4
|
+
|
5
|
+
after 2.seconds do
|
6
|
+
transition_to_brand_to_title
|
7
|
+
end
|
8
|
+
|
9
|
+
event :confirmation do
|
10
|
+
transition_to_brand_to_title
|
11
|
+
end
|
12
|
+
|
13
|
+
def transition_to_brand_to_title
|
14
|
+
animate :brand, to: { alpha: 0 }, interval: 1.second do
|
15
|
+
transition_to :brand_to_title
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class FirstScene < GameScene
|
2
|
+
|
3
|
+
if Game.debug?
|
4
|
+
draw :fps, model: "metro::ui::fps", placement: 'bottom_right'
|
5
|
+
end
|
6
|
+
|
7
|
+
draw :hero, position: Game.center
|
8
|
+
|
9
|
+
draws :first_instruction, :second_instruction, :third_instruction,
|
10
|
+
:fourth_instruction, :fifth_instruction
|
11
|
+
|
12
|
+
after 1.second do
|
13
|
+
fade_in_and_out :first_instruction do
|
14
|
+
fade_in_and_out :second_instruction do
|
15
|
+
fade_in_and_out :third_instruction do
|
16
|
+
fade_in_and_out :fourth_instruction do
|
17
|
+
fade_in_and_out :fifth_instruction
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def update
|
25
|
+
hero.position = Point.new (hero.x % Game.width), (hero.y % Game.height)
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class GameScene < Metro::Scene
|
2
|
+
|
3
|
+
#
|
4
|
+
# The game scene is a place where you can define actors and
|
5
|
+
# events here that will be present within all the subclassed
|
6
|
+
# scenes.
|
7
|
+
|
8
|
+
#
|
9
|
+
# @example Setting up the ability for all subclassed scenes
|
10
|
+
# to be reloaded with the 'Ctrl+R' event
|
11
|
+
#
|
12
|
+
event :on_up, KbR do |event|
|
13
|
+
if event.control?
|
14
|
+
if Metro.game_has_valid_code?
|
15
|
+
after(1.tick) { Metro.reload! ; transition_to(scene_name) }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
#
|
21
|
+
# @example Setting up the ability for all subclassed scenes
|
22
|
+
# to be edited with the 'Ctrl+E' event
|
23
|
+
#
|
24
|
+
event :on_up, KbE do |event|
|
25
|
+
if event.control?
|
26
|
+
transition_to scene_name, with: :edit
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
#
|
31
|
+
# This animation helper will fade in and fade out information.
|
32
|
+
#
|
33
|
+
def fade_in_and_out(name)
|
34
|
+
animate name, to: { alpha: 255 }, interval: 2.seconds do
|
35
|
+
after 1.second do
|
36
|
+
animate name, to: { alpha: 0 }, interval: 1.second do
|
37
|
+
yield if block_given?
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Using the power of YAML to define anchors and references it makes it easy
|
2
|
+
# to generate a common view item and then add to it or manipulate it as needed.
|
3
|
+
---
|
4
|
+
instruction: &instruction
|
5
|
+
model: metro::ui::label
|
6
|
+
font:
|
7
|
+
name: Arial
|
8
|
+
size: 40
|
9
|
+
color: "rgba(255,255,0,0.0)"
|
10
|
+
align: center
|
11
|
+
position: "320,300,1"
|
12
|
+
first_instruction:
|
13
|
+
<<: *instruction
|
14
|
+
text: "Hold <- to move left"
|
15
|
+
second_instruction:
|
16
|
+
<<: *instruction
|
17
|
+
text: "Hold -> to move right"
|
18
|
+
third_instruction:
|
19
|
+
<<: *instruction
|
20
|
+
text: "Hold ^ (up arrow) to move up"
|
21
|
+
fourth_instruction:
|
22
|
+
<<: *instruction
|
23
|
+
text: "Hold V (down arrow) to move down"
|
24
|
+
fifth_instruction:
|
25
|
+
<<: *instruction
|
26
|
+
text: "Press <SPACE> to rotate yourself"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
********************************************************************************
|
2
|
+
______ ___ _____
|
3
|
+
___ |/ /_____ __ /_______________
|
4
|
+
__ /|_/ / _ _ \_ __/__ ___/_ __ \
|
5
|
+
_ / / / / __// /_ _ / / /_/ /
|
6
|
+
/_/ /_/ \___/ \__/ /_/ \____/
|
7
|
+
|
8
|
+
--------------------------------------------------------------------------------
|
9
|
+
<% messages.each do |message| %>
|
10
|
+
## <%= message.title %>
|
11
|
+
|
12
|
+
<%= message.message %>
|
13
|
+
|
14
|
+
<% unless message.actions.empty? %>## Details
|
15
|
+
|
16
|
+
<%= message.actions %><% end %><% end %>
|
17
|
+
<% if website.present? || email.present? %>
|
18
|
+
## Contact
|
19
|
+
|
20
|
+
<%= website %>
|
21
|
+
<%= email %>
|
22
|
+
<% end %>
|
23
|
+
********************************************************************************
|
@@ -0,0 +1,111 @@
|
|
1
|
+
class <%= model_name %> < Metro::Model
|
2
|
+
|
3
|
+
#
|
4
|
+
# Properties
|
5
|
+
#
|
6
|
+
# Models commonly have properties that you want to be able to get, set, and save.
|
7
|
+
# Usually within ruby you would write attr_accessor methods and initialize them.
|
8
|
+
# Metro provides some shorthand class helper methods that allow you to quickly
|
9
|
+
# define these properties with the added benefit that they will be persisted when
|
10
|
+
# the model is saved within the view and the type will be maintained.
|
11
|
+
#
|
12
|
+
# # @example of adding a `position` property to your model
|
13
|
+
# # Property defines a `position` accessor as well as `x`, `y`, and `z` (or `z_order`)
|
14
|
+
# # accessors.
|
15
|
+
# property :position
|
16
|
+
#
|
17
|
+
# # @example of adding an `image` property to your model
|
18
|
+
# # An image property can be set up with an image path or that can be set later
|
19
|
+
# # through the `image` accessor that is added.
|
20
|
+
#
|
21
|
+
# property :image, path: "player.png"
|
22
|
+
#
|
23
|
+
# # @example of adding an `numeric` property to your model
|
24
|
+
# # A lot of times you want to track some numeric value like score. Here we
|
25
|
+
# # create a `score` accessor and assign a default value.
|
26
|
+
# property :score, type: numeric, default: 0
|
27
|
+
#
|
28
|
+
# # @example of adding an `text` property to your model
|
29
|
+
# # A lot of times you want to track some numeric value like score. Here we
|
30
|
+
# # create a `text` accessor and assign a default value.
|
31
|
+
# property :description, type: text, default: 'Greetings Earthling!'
|
32
|
+
#
|
33
|
+
# For more information see the other defined properties.
|
34
|
+
#
|
35
|
+
# @see Metro::Model::AnimationProperty
|
36
|
+
# @see Metro::Model::ImageProperty
|
37
|
+
# @see Metro::Model::SongProperty
|
38
|
+
# @see Metro::Model::SampleProperty
|
39
|
+
# @see Metro::Model::NumericProperty
|
40
|
+
# @see Metro::Model::ScaleProperty
|
41
|
+
# @see Metro::Model::TextProperty
|
42
|
+
# @see Metro::Model::PositionProperty
|
43
|
+
# @see Metro::Model::FontProperty
|
44
|
+
#
|
45
|
+
|
46
|
+
#
|
47
|
+
# Events
|
48
|
+
#
|
49
|
+
# # @example Registering the keyboard down event to execute a block of code
|
50
|
+
# event :on_down, GpLeft, GpUp, do
|
51
|
+
# turn_left
|
52
|
+
# end
|
53
|
+
#
|
54
|
+
# # @example Registering the keyboard up key to execute the method `jump`
|
55
|
+
# event :on_up, KbEscape, do: :jump
|
56
|
+
#
|
57
|
+
# # @example Registering for button held events that would build the model's acceleration
|
58
|
+
# event :on_hold, KbRight, GpRight do
|
59
|
+
# acceleration += 1
|
60
|
+
# end
|
61
|
+
#
|
62
|
+
# Keystroke and Game Event Reference
|
63
|
+
#
|
64
|
+
# @see https://github.com/jlnr/gosu/blob/master/Gosu/ButtonsMac.hpp
|
65
|
+
# @see https://github.com/jlnr/gosu/blob/master/Gosu/ButtonsX.hpp
|
66
|
+
# @see https://github.com/jlnr/gosu/blob/master/Gosu/ButtonsWin.hpp
|
67
|
+
#
|
68
|
+
#
|
69
|
+
# # @example Registering for an event called 'save_complete' event that anyone
|
70
|
+
# # can generate and this scene block will execute this code.
|
71
|
+
#
|
72
|
+
# event :notification, :game_over do
|
73
|
+
# puts "Game is Over!"
|
74
|
+
# end
|
75
|
+
#
|
76
|
+
# Within the models you could use the method `notification`
|
77
|
+
# to generate the notification
|
78
|
+
#
|
79
|
+
# def update_score
|
80
|
+
# @score = score + 1
|
81
|
+
# if score >= winning_score
|
82
|
+
# notification :game_over
|
83
|
+
# end
|
84
|
+
# end
|
85
|
+
#
|
86
|
+
|
87
|
+
#
|
88
|
+
# As model does a lot of work for you with regarding to setting up content, it is
|
89
|
+
# best not to override #initialize and instead define an #after_initialize method
|
90
|
+
# within the subclasses of Scene.
|
91
|
+
#
|
92
|
+
def after_initialize ; end
|
93
|
+
|
94
|
+
#
|
95
|
+
# This method is called right after the model has been added to the scene and added
|
96
|
+
# to the window.
|
97
|
+
#
|
98
|
+
def show ; end
|
99
|
+
|
100
|
+
#
|
101
|
+
# This is called every update interval while the window is being shown.
|
102
|
+
#
|
103
|
+
def update ; end
|
104
|
+
|
105
|
+
#
|
106
|
+
# This is called after every #update and when the OS wants the window to
|
107
|
+
# repaint itself.
|
108
|
+
#
|
109
|
+
def draw ; end
|
110
|
+
|
111
|
+
end
|