metro 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/metro +6 -1
- data/changelog.md +4 -0
- data/lib/commands/generate_game.rb +13 -0
- data/lib/commands/generate_model.rb +25 -0
- data/lib/commands/generate_scene.rb +26 -0
- data/lib/commands/generate_view.rb +21 -0
- data/lib/commands/thor.rb +77 -0
- data/lib/core_ext/string.rb +15 -0
- data/lib/metro.rb +1 -0
- data/lib/metro/models/image.rb +2 -1
- data/lib/metro/version.rb +1 -1
- data/lib/templates/game/README.md.tt +10 -0
- data/lib/templates/game/assets/brand.jpg +0 -0
- data/lib/templates/game/metro.tt +51 -0
- data/lib/templates/game/scenes/brand_scene.rb +13 -0
- data/lib/templates/game/scenes/brand_to_title_scene.rb +13 -0
- data/lib/templates/game/scenes/title_scene.rb +15 -0
- data/lib/templates/game/views/brand.yaml +5 -0
- data/lib/templates/game/views/brand_to_title.yaml +9 -0
- data/lib/templates/game/views/title.yaml +14 -0
- data/lib/templates/model.rb.erb +59 -0
- data/lib/templates/scene.rb.erb +117 -0
- data/lib/templates/view.yaml.erb +32 -0
- data/metro.gemspec +1 -0
- data/spec/core_ext/string_spec.rb +53 -0
- metadata +40 -4
data/bin/metro
CHANGED
data/changelog.md
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Metro
|
2
|
+
|
3
|
+
class GenerateModel < Generator
|
4
|
+
|
5
|
+
no_tasks do
|
6
|
+
|
7
|
+
def model_filename
|
8
|
+
name.snake_case
|
9
|
+
end
|
10
|
+
|
11
|
+
def model_name
|
12
|
+
name.camel_case
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
argument :name
|
18
|
+
|
19
|
+
def create_model_file
|
20
|
+
template "model.rb.erb", "models/#{model_filename}.rb"
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Metro
|
2
|
+
|
3
|
+
class GenerateScene < Generator
|
4
|
+
|
5
|
+
no_tasks do
|
6
|
+
|
7
|
+
def scene_filename
|
8
|
+
scene_name = name.gsub(/_?Scene$/i,'')
|
9
|
+
"#{scene_name.snake_case}_scene"
|
10
|
+
end
|
11
|
+
|
12
|
+
def scene_class_name
|
13
|
+
scene_name = name.gsub(/_?Scene$/i,'')
|
14
|
+
"#{scene_name.camel_case}Scene"
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
argument :name
|
20
|
+
|
21
|
+
def create_scene_file
|
22
|
+
template "scene.rb.erb", "scenes/#{scene_filename}.rb"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Metro
|
2
|
+
|
3
|
+
class GenerateView < Generator
|
4
|
+
|
5
|
+
no_tasks do
|
6
|
+
|
7
|
+
def view_filename
|
8
|
+
view_name = name.to_s.gsub(/_?Scene$/i,'')
|
9
|
+
view_name.snake_case
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
argument :name
|
15
|
+
|
16
|
+
def create_view_file
|
17
|
+
template "view.yaml.erb", "views/#{view_filename}.yaml"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'thor/group'
|
3
|
+
|
4
|
+
module Metro
|
5
|
+
|
6
|
+
class Generator < ::Thor::Group
|
7
|
+
include Thor::Actions
|
8
|
+
|
9
|
+
def self.source_root
|
10
|
+
File.join File.dirname(__FILE__), "..", "templates"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class UnknownGenerator
|
15
|
+
|
16
|
+
def self.start(commands)
|
17
|
+
raise "There is no command: [ #{commands.join(', ')} ]"
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
class Thor < Thor
|
24
|
+
|
25
|
+
no_tasks do
|
26
|
+
|
27
|
+
def banner
|
28
|
+
"""
|
29
|
+
********************************************************************************
|
30
|
+
______ ___ _____
|
31
|
+
___ |/ /_____ __ /_______________
|
32
|
+
__ /|_/ / _ _ \\_ __/__ ___/_ __ \\
|
33
|
+
_ / / / / __// /_ _ / / /_/ /
|
34
|
+
/_/ /_/ \\___/ \\__/ /_/ \\____/
|
35
|
+
|
36
|
+
-------------------------------------------------------------------------------"""
|
37
|
+
end
|
38
|
+
|
39
|
+
def generators
|
40
|
+
Hash.new(UnknownGenerator).merge model: Metro::GenerateModel,
|
41
|
+
scene: Metro::GenerateScene,
|
42
|
+
view: Metro::GenerateView
|
43
|
+
end
|
44
|
+
|
45
|
+
def generator(name)
|
46
|
+
generators[name.to_sym]
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
desc "new [GAMENAME]",
|
52
|
+
"Create a new game within the directory using with the [GAMENAME] given."
|
53
|
+
def new(game_name)
|
54
|
+
Metro::GenerateGame.start [ game_name ]
|
55
|
+
end
|
56
|
+
|
57
|
+
desc "generate",
|
58
|
+
"Create a new game model, view, or scene"
|
59
|
+
def generate(type,name)
|
60
|
+
gen = generator(type)
|
61
|
+
gen.start [ name ]
|
62
|
+
end
|
63
|
+
|
64
|
+
desc "help", "This commoand"
|
65
|
+
def help(topic)
|
66
|
+
say banner
|
67
|
+
print_table self.class.printable_tasks, indent: 4
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
require_relative 'generate_game'
|
75
|
+
require_relative 'generate_model'
|
76
|
+
require_relative 'generate_scene'
|
77
|
+
require_relative 'generate_view'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class String
|
2
|
+
|
3
|
+
def snake_case
|
4
|
+
snaked_string = self.gsub(/([A-Z\d]+)([A-Z][a-z])/,'\1_\2')
|
5
|
+
snaked_string.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
|
6
|
+
snaked_string.downcase
|
7
|
+
end
|
8
|
+
|
9
|
+
def camel_case
|
10
|
+
camel_string = self.to_s.gsub(/Scene$/i,'')
|
11
|
+
camel_string = camel_string.sub(/^[a-z\d]*/) { $&.capitalize }
|
12
|
+
camel_string = camel_string.gsub(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{$2.capitalize}" }.gsub('/', '::')
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
data/lib/metro.rb
CHANGED
data/lib/metro/models/image.rb
CHANGED
@@ -9,13 +9,14 @@ module Metro
|
|
9
9
|
#
|
10
10
|
class Image < Model
|
11
11
|
|
12
|
-
attr_accessor :angle, :center_x, :center_y, :x_factor, :y_factor
|
12
|
+
attr_accessor :angle, :center_x, :center_y, :x_factor, :y_factor, :z_order
|
13
13
|
|
14
14
|
def after_initialize
|
15
15
|
@angle = 0
|
16
16
|
@center_x = @center_y = 0.5
|
17
17
|
@x_factor = @y_factor = 1
|
18
18
|
@z_order = 0
|
19
|
+
@color = Gosu::Color.new "rgba(255,255,255,1.0)"
|
19
20
|
end
|
20
21
|
|
21
22
|
def image
|
data/lib/metro/version.rb
CHANGED
@@ -0,0 +1,10 @@
|
|
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
|
Binary file
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#
|
2
|
+
# This is the main game file which contains information
|
3
|
+
# about your game. T
|
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 "John Carmack"
|
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
|
+
# Enable debug mode for the game. Which could
|
47
|
+
# allow different logic. When this is set the
|
48
|
+
# Metro::Game.debug? method will return a true
|
49
|
+
# value.
|
50
|
+
#
|
51
|
+
# debug true
|
@@ -0,0 +1,14 @@
|
|
1
|
+
title:
|
2
|
+
model: metro::models::label
|
3
|
+
text: "#{Metro::Game.name}"
|
4
|
+
x: 120
|
5
|
+
y: 40
|
6
|
+
x-factor: 2
|
7
|
+
y-factor: 2
|
8
|
+
color: rgba(255,255,255,1.0)
|
9
|
+
menu:
|
10
|
+
model: metro::models::menu
|
11
|
+
x: 260
|
12
|
+
y: 200
|
13
|
+
color: rgb(127,127,127)
|
14
|
+
highlight-color: rgb(255,255,255)
|
@@ -0,0 +1,59 @@
|
|
1
|
+
class <%= model_name %> < Metro::Model
|
2
|
+
|
3
|
+
#
|
4
|
+
# Example Event Handling Definitions
|
5
|
+
#
|
6
|
+
# @example Registering the keyboard down event to execute a block of code
|
7
|
+
#
|
8
|
+
# event :on_down, Gosu::GpLeft, Gosu::GpUp, do
|
9
|
+
# turn_left
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
# @example Registering the keyboard up key to execute the method `jump`
|
13
|
+
#
|
14
|
+
# event :on_up, Gosu::KbEscape, do: :jump
|
15
|
+
#
|
16
|
+
# @example Registering for button held events that would build the model's acceleration
|
17
|
+
#
|
18
|
+
# event :on_hold, Gosu::KbRight, Gosu::GpRight do
|
19
|
+
# acceleration += 1
|
20
|
+
# end
|
21
|
+
#
|
22
|
+
# Keystroke and Game Event Reference
|
23
|
+
#
|
24
|
+
# @see https://github.com/jlnr/gosu/blob/master/Gosu/ButtonsMac.hpp
|
25
|
+
# @see https://github.com/jlnr/gosu/blob/master/Gosu/ButtonsX.hpp
|
26
|
+
# @see https://github.com/jlnr/gosu/blob/master/Gosu/ButtonsWin.hpp
|
27
|
+
#
|
28
|
+
#
|
29
|
+
# @example Registering for an event called 'save_complete' event that anyone
|
30
|
+
# can generate and this scene block will execute this code.
|
31
|
+
#
|
32
|
+
# event :notification, :game_over do
|
33
|
+
# puts "Game is Over!"
|
34
|
+
# end
|
35
|
+
#
|
36
|
+
# Within the models you could use the method `notification`
|
37
|
+
# to generate the notification
|
38
|
+
#
|
39
|
+
# def update_score
|
40
|
+
# score = score + 1
|
41
|
+
# if score >= winning_score
|
42
|
+
# notification :game_over
|
43
|
+
# end
|
44
|
+
#
|
45
|
+
|
46
|
+
#
|
47
|
+
# As model does a lot of work for you with regarding to setting up content, it is
|
48
|
+
# best not to override #initialize and instead define an #after_initialize method
|
49
|
+
# within the subclasses of Scene.
|
50
|
+
#
|
51
|
+
def after_initialize ; end
|
52
|
+
|
53
|
+
#
|
54
|
+
# This is called after every {#update} and when the OS wants the window to
|
55
|
+
# repaint itself.
|
56
|
+
#
|
57
|
+
def draw ; end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
class <%= scene_class_name %> < Metro::Scene
|
2
|
+
# By default the Scene Name is based on the class name
|
3
|
+
# but that can be overriden with the scene_name class method
|
4
|
+
# scene_name "credits"
|
5
|
+
|
6
|
+
#
|
7
|
+
# DRAWING and ACTORS
|
8
|
+
#
|
9
|
+
# @example Explicitly drawing a text label in the scene
|
10
|
+
#
|
11
|
+
# draw :title, 'text' => 'Title Screen',
|
12
|
+
# 'x' => 20, 'y' => 20, 'z-order' => 0,
|
13
|
+
# 'x-factor' => 3, 'y-factor' => 3,
|
14
|
+
# 'color' => 0xffffffff,
|
15
|
+
# 'model' => 'metro::models::label'
|
16
|
+
#
|
17
|
+
# The draw method can be simplier for models that have content defined
|
18
|
+
# for them in the view or the models themselves define the appropriate
|
19
|
+
# fields.
|
20
|
+
#
|
21
|
+
# @example defining multiple things to draw; their visual data would be
|
22
|
+
# stored within the respective view file
|
23
|
+
#
|
24
|
+
# draws :menu, :hero, :enemy
|
25
|
+
#
|
26
|
+
|
27
|
+
#
|
28
|
+
# ANIMATIONS
|
29
|
+
#
|
30
|
+
# @example of the title being moved to a new y position and the alpha level
|
31
|
+
#
|
32
|
+
# animate actor: :title, to: { y: 80, alpha: 50 }, interval: 120 do
|
33
|
+
# puts "Done Animating!"
|
34
|
+
# end
|
35
|
+
#
|
36
|
+
|
37
|
+
#
|
38
|
+
# Example Event Handling Definitions
|
39
|
+
#
|
40
|
+
# @example Registering the keyboard down event to execute a block of code
|
41
|
+
#
|
42
|
+
# event :on_down, Gosu::GpLeft, Gosu::GpUp, do
|
43
|
+
# transition_to :next_scene
|
44
|
+
# end
|
45
|
+
#
|
46
|
+
# @example Registering the keyboard up key to execute the method `leave_scene`
|
47
|
+
#
|
48
|
+
# event :on_up, Gosu::KbEscape, do: :leave_scene
|
49
|
+
#
|
50
|
+
# @example Registering for button held events that would move an actor named `player`
|
51
|
+
#
|
52
|
+
# event :on_hold, Gosu::KbRight, Gosu::GpRight do
|
53
|
+
# title.alpha = title.alpha - 1
|
54
|
+
# end
|
55
|
+
# Keystroke and Game Event Reference
|
56
|
+
#
|
57
|
+
# @see https://github.com/jlnr/gosu/blob/master/Gosu/ButtonsMac.hpp
|
58
|
+
# @see https://github.com/jlnr/gosu/blob/master/Gosu/ButtonsX.hpp
|
59
|
+
# @see https://github.com/jlnr/gosu/blob/master/Gosu/ButtonsWin.hpp
|
60
|
+
#
|
61
|
+
#
|
62
|
+
# @example Registering for an event called 'save_complete' event that anyone
|
63
|
+
# can generate and this scene block will execute this code.
|
64
|
+
#
|
65
|
+
# event :notification, :save_complete do
|
66
|
+
# puts "Save Complete!"
|
67
|
+
# end
|
68
|
+
#
|
69
|
+
# Within the scene or in the models you could use the method `notification`
|
70
|
+
# to generate the notification
|
71
|
+
#
|
72
|
+
# def update
|
73
|
+
# if game_save.complete?
|
74
|
+
# notification :save_complete
|
75
|
+
# end
|
76
|
+
# end
|
77
|
+
#
|
78
|
+
|
79
|
+
#
|
80
|
+
# As Scene does a lot of work for you with regarding to setting up content, it is
|
81
|
+
# best not to override #initialize and instead define an #after_initialize method
|
82
|
+
# within the subclasses of Scene.
|
83
|
+
#
|
84
|
+
def after_initialize ; end
|
85
|
+
|
86
|
+
#
|
87
|
+
# This method is called right after the scene has been adopted by the window
|
88
|
+
#
|
89
|
+
def show ; end
|
90
|
+
|
91
|
+
#
|
92
|
+
# This is called every update interval while the window is being shown.
|
93
|
+
#
|
94
|
+
def update ; end
|
95
|
+
|
96
|
+
#
|
97
|
+
# This is called after every {#update} and when the OS wants the window to
|
98
|
+
# repaint itself.
|
99
|
+
#
|
100
|
+
def draw ; end
|
101
|
+
|
102
|
+
#
|
103
|
+
# Before a scene is transisitioned away from to a new scene, this method is called
|
104
|
+
# to allow for the scene to complete any taskss, stop any actions, or pass any
|
105
|
+
# information from the existing scene to the scene that is about to replace it.
|
106
|
+
#
|
107
|
+
def prepare_transition_to(new_scene) ; end
|
108
|
+
|
109
|
+
#
|
110
|
+
# Before a scene is transisitioned to it is called with the previous scene. This
|
111
|
+
# allows for the new scene to rerieve any data from the previous scene to assist
|
112
|
+
# with the layout of the current scene.
|
113
|
+
#
|
114
|
+
def prepare_transition_from(old_scene) ; end
|
115
|
+
|
116
|
+
|
117
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
title:
|
2
|
+
model: metro::models::label
|
3
|
+
text: STARRY KNIGHT
|
4
|
+
x: 30
|
5
|
+
y: 50
|
6
|
+
z-order: 4
|
7
|
+
x-factor: 3
|
8
|
+
y-factor: 3
|
9
|
+
color: "rgba(255,255,0,0.0)"
|
10
|
+
logo:
|
11
|
+
model: metro::models::image
|
12
|
+
x: 540
|
13
|
+
y: 380
|
14
|
+
z-order: 4
|
15
|
+
path: "player.png"
|
16
|
+
color: "rgba(255,255,255,0.0)"
|
17
|
+
star: &star_default
|
18
|
+
model: star
|
19
|
+
x: 100
|
20
|
+
y: 400
|
21
|
+
path: "star.png"
|
22
|
+
width: 25
|
23
|
+
height: 25
|
24
|
+
tileable: false
|
25
|
+
star2:
|
26
|
+
<<: *star_default
|
27
|
+
x: 455
|
28
|
+
y: 333
|
29
|
+
star3:
|
30
|
+
<<: *star_default
|
31
|
+
x: 515
|
32
|
+
y: 40
|
data/metro.gemspec
CHANGED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe String do
|
4
|
+
|
5
|
+
describe "#snake_case" do
|
6
|
+
context "when given a regular string" do
|
7
|
+
subject { "String" }
|
8
|
+
let(:expected_value) { "string" }
|
9
|
+
|
10
|
+
its(:snake_case) { should eq expected_value }
|
11
|
+
end
|
12
|
+
|
13
|
+
context "when given an already snake cased string" do
|
14
|
+
subject { "snake_cased" }
|
15
|
+
let(:expected_value) { "snake_cased" }
|
16
|
+
|
17
|
+
its(:snake_case) { should eq expected_value }
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when given a camelCased string" do
|
21
|
+
subject { "SnakeCased" }
|
22
|
+
let(:expected_value) { "snake_cased" }
|
23
|
+
|
24
|
+
its(:snake_case) { should eq expected_value }
|
25
|
+
end
|
26
|
+
|
27
|
+
context "when given a partial camel_Cased string" do
|
28
|
+
subject { "snake_Cased" }
|
29
|
+
let(:expected_value) { "snake_cased" }
|
30
|
+
its(:snake_case) { should eq expected_value }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "#camel_case" do
|
35
|
+
context "when given a regular string" do
|
36
|
+
subject { "string" }
|
37
|
+
let(:expected_value) { "String" }
|
38
|
+
its(:camel_case) { should eq expected_value }
|
39
|
+
end
|
40
|
+
|
41
|
+
context "when given a snake_cased string" do
|
42
|
+
subject { "camel_cased" }
|
43
|
+
let(:expected_value) { "CamelCased" }
|
44
|
+
its(:camel_case) { should eq expected_value }
|
45
|
+
end
|
46
|
+
|
47
|
+
context "when given a partial camel_CasedString" do
|
48
|
+
subject { "camel_CasedString" }
|
49
|
+
let(:expected_value) { "CamelCasedstring" }
|
50
|
+
its(:camel_case) { should eq expected_value }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: gosu
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0.7'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: thor
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.16.0
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.16.0
|
30
46
|
- !ruby/object:Gem::Dependency
|
31
47
|
name: sender
|
32
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,6 +94,12 @@ files:
|
|
78
94
|
- Rakefile
|
79
95
|
- bin/metro
|
80
96
|
- changelog.md
|
97
|
+
- lib/commands/generate_game.rb
|
98
|
+
- lib/commands/generate_model.rb
|
99
|
+
- lib/commands/generate_scene.rb
|
100
|
+
- lib/commands/generate_view.rb
|
101
|
+
- lib/commands/thor.rb
|
102
|
+
- lib/core_ext/string.rb
|
81
103
|
- lib/gosu_ext/color.rb
|
82
104
|
- lib/metro.rb
|
83
105
|
- lib/metro/animation/animation.rb
|
@@ -109,8 +131,21 @@ files:
|
|
109
131
|
- lib/metro/template_message.rb
|
110
132
|
- lib/metro/version.rb
|
111
133
|
- lib/metro/window.rb
|
134
|
+
- lib/templates/game/README.md.tt
|
135
|
+
- lib/templates/game/assets/brand.jpg
|
136
|
+
- lib/templates/game/metro.tt
|
137
|
+
- lib/templates/game/scenes/brand_scene.rb
|
138
|
+
- lib/templates/game/scenes/brand_to_title_scene.rb
|
139
|
+
- lib/templates/game/scenes/title_scene.rb
|
140
|
+
- lib/templates/game/views/brand.yaml
|
141
|
+
- lib/templates/game/views/brand_to_title.yaml
|
142
|
+
- lib/templates/game/views/title.yaml
|
112
143
|
- lib/templates/message.erb
|
144
|
+
- lib/templates/model.rb.erb
|
145
|
+
- lib/templates/scene.rb.erb
|
146
|
+
- lib/templates/view.yaml.erb
|
113
147
|
- metro.gemspec
|
148
|
+
- spec/core_ext/string_spec.rb
|
114
149
|
- spec/gosu_ext/color_spec.rb
|
115
150
|
- spec/spec_helper.rb
|
116
151
|
homepage: https://github.com/burtlo/metro
|
@@ -118,8 +153,8 @@ licenses: []
|
|
118
153
|
post_install_message: ! " ______ ___ _____\n ___ |/ /_____ __ /_______________\n
|
119
154
|
\ __ /|_/ / _ _ \\_ __/__ ___/_ __ \\\n _ / / / / __// /_ _ / /
|
120
155
|
/_/ /\n /_/ /_/ \\___/ \\__/ /_/ \\____/\n\n Thank you for installing
|
121
|
-
metro 0.1.
|
122
|
-
\ Changes:\n \n *
|
156
|
+
metro 0.1.2 / 2012-10-26.\n ---------------------------------------------------------------------\n
|
157
|
+
\ Changes:\n \n * Generators for games, scenes, models, and views\n \n\n ---------------------------------------------------------------------\n"
|
123
158
|
rdoc_options: []
|
124
159
|
require_paths:
|
125
160
|
- lib
|
@@ -144,6 +179,7 @@ summary: Metro is a 2D Gaming framework built around gosu (game development libr
|
|
144
179
|
Metro makes it easy to create games by enforcing common conceptual structures and
|
145
180
|
conventions.
|
146
181
|
test_files:
|
182
|
+
- spec/core_ext/string_spec.rb
|
147
183
|
- spec/gosu_ext/color_spec.rb
|
148
184
|
- spec/spec_helper.rb
|
149
185
|
has_rdoc:
|