metro 0.0.6 → 0.1.0

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/lib/metro/scenes.rb CHANGED
@@ -32,14 +32,17 @@ module Metro
32
32
  #
33
33
  def find(scene_name)
34
34
  found_scene = scenes_hash[scene_name]
35
- log.error missing_scene_error_message(scene_name) unless found_scene
35
+
36
+ unless found_scene
37
+ found_scene = create_missing_scene(scene_name)
38
+ end
39
+
36
40
  found_scene
37
41
  end
38
42
 
39
- def missing_scene_error_message(scene_name)
40
- scene_names = Scene.scenes.map(&:scene_name).join(", ")
41
- [ "Could not find scene with name '#{scene_name}'",
42
- "Known scenes: #{scene_name}" ].join("\n")
43
+ def create_missing_scene(scene_name)
44
+ MissingScene.missing_scene = scene_name
45
+ MissingScene
43
46
  end
44
47
 
45
48
  #
@@ -0,0 +1,31 @@
1
+ class TemplateMessage
2
+
3
+ def initialize(details = {})
4
+ @messages = Array(details[:message]) + Array(details[:messages])
5
+ @website = details[:website]
6
+ @email = Array(details[:email])
7
+ end
8
+
9
+ attr_reader :messages
10
+
11
+ def website
12
+ "* #{@website}"
13
+ end
14
+
15
+ def email
16
+ @email.map {|email| "* #{email}" }.join("\n")
17
+ end
18
+
19
+ def message_filename
20
+ File.join(File.dirname(__FILE__),"..","templates","message.erb")
21
+ end
22
+
23
+ def message_template
24
+ File.read(message_filename)
25
+ end
26
+
27
+ def to_s
28
+ ERB.new(message_template).result(binding)
29
+ end
30
+
31
+ end
data/lib/metro/version.rb CHANGED
@@ -1,3 +1,32 @@
1
1
  module Metro
2
- VERSION = "0.0.6"
2
+ VERSION = "0.1.0"
3
+ WEBSITE = "https://github.com/burtlo/metro"
4
+ CONTACT_EMAILS = ["franklin.webber@gmail.com"]
5
+
6
+ def self.changes_for_version(version)
7
+
8
+ change = Struct::Changes.new(nil,[])
9
+
10
+ grab_changes = false
11
+
12
+ changelog_filename = "#{File.dirname(__FILE__)}/../../changelog.md"
13
+
14
+ File.open(changelog_filename,'r') do |file|
15
+ while (line = file.gets) do
16
+
17
+ if line =~ /^##\s*#{version.gsub('.','\.')}\s*\/\s*(.+)\s*$/
18
+ grab_changes = true
19
+ change.date = $1.strip
20
+ elsif line =~ /^##\s*.+$/
21
+ grab_changes = false
22
+ elsif grab_changes
23
+ change.changes.push line
24
+ end
25
+
26
+ end
27
+ end
28
+
29
+ change
30
+ end
31
+
3
32
  end
@@ -0,0 +1,24 @@
1
+ ********************************************************************************
2
+ ```
3
+ ______ ___ _____
4
+ ___ |/ /_____ __ /_______________
5
+ __ /|_/ / _ _ \_ __/__ ___/_ __ \
6
+ _ / / / / __// /_ _ / / /_/ /
7
+ /_/ /_/ \___/ \__/ /_/ \____/
8
+
9
+ ```
10
+ -------------------------------------------------------------------------------
11
+ <% messages.each do |message| %>
12
+ ## <%= message.title %>
13
+
14
+ <%= message.message %>
15
+
16
+ ## Details
17
+
18
+ <%= message.details %>
19
+ <% end %>
20
+ ## Contact
21
+
22
+ <%= website %>
23
+ <%= email %>
24
+ ********************************************************************************
data/metro.gemspec CHANGED
@@ -3,19 +3,51 @@ lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'metro/version'
5
5
 
6
+ Struct.new("Changes",:date,:changes)
7
+
6
8
  Gem::Specification.new do |gem|
7
9
  gem.name = "metro"
8
10
  gem.version = Metro::VERSION
9
11
  gem.authors = ["Franklin Webber"]
10
- gem.email = ["franklin.webber@gmail.com"]
11
- gem.description = %q{A framework around Gosu to make game creation less tedious}
12
- gem.summary = %q{A framework around Gosu to make game creation less tedious}
13
- gem.homepage = "https://github.com/burtlo/metro"
14
-
12
+ gem.email = Metro::CONTACT_EMAILS
13
+
14
+ gem.summary = <<-EOS
15
+ Metro is a 2D Gaming framework built around gosu (game development library).
16
+ Metro makes it easy to create games by enforcing common conceptual structures
17
+ and conventions.
18
+ EOS
19
+ gem.description = <<-EOS
20
+ Metro is a 2D Gaming framework built around gosu (game development library).
21
+ Metro makes it easy to create games by enforcing common conceptual structures
22
+ and conventions.
23
+ EOS
24
+
25
+ gem.homepage = Metro::WEBSITE
26
+
15
27
  gem.add_dependency 'gosu', '~> 0.7'
16
-
28
+ gem.add_dependency 'sender', '~> 1.5.10'
29
+ gem.add_development_dependency 'rspec', '~> 2.11'
30
+
17
31
  gem.files = `git ls-files`.split($/)
18
32
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
19
33
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
34
  gem.require_paths = ["lib"]
35
+
36
+ changes = Metro.changes_for_version(::Metro::VERSION)
37
+
38
+ gem.post_install_message = <<-EOM
39
+ ______ ___ _____
40
+ ___ |/ /_____ __ /_______________
41
+ __ /|_/ / _ _ \\_ __/__ ___/_ __ \\
42
+ _ / / / / __// /_ _ / / /_/ /
43
+ /_/ /_/ \\___/ \\__/ /_/ \\____/
44
+
45
+ Thank you for installing metro #{::Metro::VERSION} / #{changes.date}.
46
+ ---------------------------------------------------------------------
47
+ Changes:
48
+ #{changes.changes.map{|change| " #{change}"}.join("")}
49
+ ---------------------------------------------------------------------
50
+ EOM
51
+
52
+
21
53
  end
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gosu::Color do
4
+
5
+ shared_examples "a correctly defined color" do
6
+
7
+ let(:expected_red_value) { expected_color_values[0] }
8
+ let(:expected_green_value) { expected_color_values[1] }
9
+ let(:expected_blue_value) { expected_color_values[2] }
10
+ let(:expected_alpha_value) { expected_color_values[3] }
11
+
12
+ it "should have the correct red color" do
13
+ subject.red.should eq expected_red_value
14
+ end
15
+
16
+ it "should have the correct green color" do
17
+ subject.green.should eq expected_green_value
18
+ end
19
+
20
+ it "should have the correct blue color" do
21
+ subject.blue.should eq expected_blue_value
22
+ end
23
+
24
+ it "should have the correct alpha value" do
25
+ subject.alpha.should eq expected_alpha_value
26
+ end
27
+ end
28
+
29
+ shared_examples "a color defined as white" do
30
+ let(:expected_color_values) { [ 255, 255, 255, 255 ] }
31
+ it_behaves_like "a correctly defined color"
32
+ end
33
+
34
+ describe "#initialize" do
35
+
36
+ context "when defined with an existing Gosu Color" do
37
+ subject { described_class.new color }
38
+ let(:color) { described_class.new 123, 123, 123, 0 }
39
+ let(:expected_color_values) { [ 123, 123, 0, 123 ] }
40
+ it_behaves_like "a correctly defined color"
41
+ end
42
+
43
+ context "when defined with a hexadecimal value" do
44
+ subject { described_class.new hex }
45
+ let(:hex) { 0xFF777777 }
46
+ let(:expected_color_values) { [ 119, 119, 119, 255 ] }
47
+ it_behaves_like "a correctly defined color"
48
+ end
49
+
50
+ context "when defined with a gosu color hex string" do
51
+ subject { described_class.new hex }
52
+ let(:hex) { "0xFF777777" }
53
+ let(:expected_color_values) { [ 119, 119, 119, 255 ] }
54
+ it_behaves_like "a correctly defined color"
55
+ end
56
+
57
+ context "when defined with a hex string" do
58
+ subject { described_class.new hex }
59
+ let(:hex) { "#777777" }
60
+ let(:expected_color_values) { [ 119, 119, 119, 255 ] }
61
+ it_behaves_like "a correctly defined color"
62
+ end
63
+
64
+ context "when defined with a rgb string" do
65
+ subject { described_class.new rgb }
66
+ let(:rgb) { "rgb(127,127,127)" }
67
+ let(:expected_color_values) { [ 127, 127, 127, 255 ] }
68
+ it_behaves_like "a correctly defined color"
69
+ end
70
+
71
+ context "when defined with a rgba color" do
72
+ subject { described_class.new rgba }
73
+ let(:rgba) { "rgba(127,127,127,0.5)" }
74
+ let(:expected_color_values) { [ 127, 127, 127, 127 ] }
75
+ it_behaves_like "a correctly defined color"
76
+ end
77
+
78
+ end
79
+
80
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../lib/metro'
2
+ # # This file was generated by the `rspec --init` command. Conventionally, all
3
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
4
+ # Require this file using `require "spec_helper"` to ensure that it is only
5
+ # loaded once.
6
+ #
7
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
8
+ RSpec.configure do |config|
9
+ config.treat_symbols_as_metadata_keys_with_true_values = true
10
+ config.run_all_when_everything_filtered = true
11
+ config.filter_run :focus
12
+
13
+ # Run specs in random order to surface order dependencies. If you find an
14
+ # order dependency and want to debug it, you can fix the order by providing
15
+ # the seed, which is printed after each run.
16
+ # --seed 1234
17
+ config.order = 'random'
18
+ 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.0.6
4
+ version: 0.1.0
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-22 00:00:00.000000000 Z
12
+ date: 2012-10-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gosu
@@ -27,7 +27,41 @@ dependencies:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0.7'
30
- description: A framework around Gosu to make game creation less tedious
30
+ - !ruby/object:Gem::Dependency
31
+ name: sender
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 1.5.10
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: 1.5.10
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '2.11'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '2.11'
62
+ description: ! " Metro is a 2D Gaming framework built around gosu (game development
63
+ library).\n Metro makes it easy to create games by enforcing common conceptual
64
+ structures\n and conventions.\n"
31
65
  email:
32
66
  - franklin.webber@gmail.com
33
67
  executables:
@@ -36,7 +70,9 @@ extensions: []
36
70
  extra_rdoc_files: []
37
71
  files:
38
72
  - .gitignore
73
+ - .rspec
39
74
  - Gemfile
75
+ - Guardfile
40
76
  - LICENSE.txt
41
77
  - README.md
42
78
  - Rakefile
@@ -44,29 +80,49 @@ files:
44
80
  - lib/gosu_ext/color.rb
45
81
  - lib/metro.rb
46
82
  - lib/metro/animation/animation.rb
83
+ - lib/metro/animation/animation_factory.rb
47
84
  - lib/metro/animation/easing.rb
85
+ - lib/metro/animation/has_animations.rb
48
86
  - lib/metro/animation/implicit_animation.rb
49
- - lib/metro/event_relay.rb
87
+ - lib/metro/error.rb
88
+ - lib/metro/events/event_factory.rb
89
+ - lib/metro/events/event_relay.rb
90
+ - lib/metro/events/has_events.rb
91
+ - lib/metro/events/unknown_sender.rb
50
92
  - lib/metro/game.rb
51
93
  - lib/metro/game/dsl.rb
94
+ - lib/metro/missing_scene.rb
95
+ - lib/metro/models/draws.rb
52
96
  - lib/metro/models/generic.rb
53
97
  - lib/metro/models/image.rb
54
98
  - lib/metro/models/label.rb
55
99
  - lib/metro/models/menu.rb
56
100
  - lib/metro/models/model.rb
101
+ - lib/metro/models/model_factory.rb
57
102
  - lib/metro/scene.rb
58
- - lib/metro/scene_actor.rb
59
103
  - lib/metro/scene_view/json_view.rb
60
104
  - lib/metro/scene_view/no_view.rb
61
105
  - lib/metro/scene_view/scene_view.rb
62
106
  - lib/metro/scene_view/yaml_view.rb
63
107
  - lib/metro/scenes.rb
108
+ - lib/metro/template_message.rb
64
109
  - lib/metro/version.rb
65
110
  - lib/metro/window.rb
111
+ - lib/templates/message.erb
66
112
  - metro.gemspec
113
+ - spec/gosu_ext/color_spec.rb
114
+ - spec/spec_helper.rb
67
115
  homepage: https://github.com/burtlo/metro
68
116
  licenses: []
69
- post_install_message:
117
+ post_install_message: ! " ______ ___ _____\n ___ |/ /_____ __ /_______________\n
118
+ \ __ /|_/ / _ _ \\_ __/__ ___/_ __ \\\n _ / / / / __// /_ _ / /
119
+ /_/ /\n /_/ /_/ \\___/ \\__/ /_/ \\____/\n\n Thank you for installing
120
+ metro 0.1.0 / 2012-10-25.\n ---------------------------------------------------------------------\n
121
+ \ Changes:\n \n * Better error handling for missing metro file and missing scene\n
122
+ \ * FIX: Scenes without Scene suffix will work again\n * Gosu::Color supports creation
123
+ with various formats: rgb, rgba, and hex\n * Animations can be defined with class
124
+ level helpers\n * Removed Scene#events as Events can be defined at the class level\n
125
+ \ * Scenes and Models can generate custom notification events\n ---------------------------------------------------------------------\n"
70
126
  rdoc_options: []
71
127
  require_paths:
72
128
  - lib
@@ -87,5 +143,10 @@ rubyforge_project:
87
143
  rubygems_version: 1.8.24
88
144
  signing_key:
89
145
  specification_version: 3
90
- summary: A framework around Gosu to make game creation less tedious
91
- test_files: []
146
+ summary: Metro is a 2D Gaming framework built around gosu (game development library).
147
+ Metro makes it easy to create games by enforcing common conceptual structures and
148
+ conventions.
149
+ test_files:
150
+ - spec/gosu_ext/color_spec.rb
151
+ - spec/spec_helper.rb
152
+ has_rdoc: