game 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,2 @@
1
+ pkg/
2
+ *.lock
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source :rubygems
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012 Ryan Scott Lewis <ryan@rynet.us>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,81 @@
1
+ # Game
2
+
3
+ A Ruby-powered MVC game framework.
4
+
5
+ ## Install
6
+
7
+ ```sh
8
+ $ gem install game
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### Setup
14
+
15
+ ```sh
16
+ $ game new my_cool_game
17
+ ```
18
+
19
+ This will create a new directory named `my_cool_game` in the current working directory.
20
+ The directory is laid out very much like a Rails application:
21
+
22
+ my_cool_game
23
+ ├── Gemfile
24
+ ├── Guardfile
25
+ ├── README
26
+ ├── app
27
+ | ├── assets
28
+ │ │ ├── fonts
29
+ │ │ ├── images
30
+ │ │ ├── music
31
+ │ │ └── sounds
32
+ | ├── controllers
33
+ │ │ └── game_controller.rb
34
+ | ├── helpers
35
+ │ │ └── game_helpers.rb
36
+ | ├── models
37
+ | ├── views
38
+ | └── windows
39
+ │ │ └── game_window.rb
40
+ ├── config
41
+ │ ├── environments
42
+ │ │ ├── development.rb
43
+ │ │ ├── production.rb
44
+ │ │ └── test.rb
45
+ │ ├── initializers
46
+ │ ├── locales
47
+ │ │ └── en.yml
48
+ │ ├── application.rb
49
+ │ ├── boot.rb
50
+ │ └── database.yml
51
+ │ ├── environment.rb
52
+ │ └── routes.rb
53
+ ├── log
54
+ ├── spec
55
+ | └── spec_helper.rb
56
+ └── tmp
57
+
58
+ ## Acknowledgements
59
+
60
+ * [Rails][rails] for making MVC very popular in the [Ruby][ruby] universe
61
+ * [Gamebox][gamebox] for inspiration.
62
+
63
+ ## Contributing
64
+
65
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
66
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
67
+ * Fork the project
68
+ * Start or switch to a testing/unstable/feature/bugfix branch
69
+ * Commit and push until you are happy with your contribution
70
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
71
+ * Please try not to mess with the Rakefile, VERSION or gemspec.
72
+
73
+ ## Copyright
74
+
75
+ Copyright © 2012 Ryan Scott Lewis <ryan@rynet.us>.
76
+
77
+ The MIT License (MIT) - See LICENSE for further details.
78
+
79
+ [rails]: https://github.com/rails/rails
80
+ [ruby]: https://github.com/ruby/ruby
81
+ [gamebox]: https://github.com/shawn42/gamebox
@@ -0,0 +1,57 @@
1
+ require 'pathname'
2
+
3
+ def require_task(path)
4
+ begin
5
+ require path
6
+
7
+ yield
8
+ rescue LoadError
9
+ puts '', "Could not load '#{path}'.", 'Try to `rake gem:spec` and `bundle install` and try again.', ''
10
+ end
11
+ end
12
+
13
+ spec = Gem::Specification.new do |s|
14
+
15
+ # Variables
16
+ s.name = 'game'
17
+ s.authors = ['Ryan Scott Lewis']
18
+ s.email = ['ryan@rynet.us']
19
+ s.summary = 'Game is a cross-platform and cross-implementation MVC framework for creating video games in Ruby.'
20
+
21
+ # Dependencies
22
+ s.add_dependency 'version', '~> 1.0'
23
+ s.add_development_dependency 'guard-rspec', '~> 2.1'
24
+ s.add_development_dependency 'guard-yard', '~> 2.0'
25
+ s.add_development_dependency 'rb-fsevent', '~> 0.9'
26
+ s.add_development_dependency 'fuubar', '~> 1.1'
27
+ s.add_development_dependency 'github-markup', '~> 0.7'
28
+
29
+ # Pragmatically set variables
30
+ s.homepage = "http://github.com/RyanScottLewis/#{s.name}"
31
+ s.version = Pathname.glob('VERSION*').first.read
32
+ s.description = Pathname.glob('README*').first.read
33
+ s.require_paths = ['lib']
34
+ s.files = `git ls-files`.lines.to_a.collect { |s| s.strip }
35
+ s.executables = `git ls-files -- bin/*`.lines.to_a.collect { |s| File.basename(s.strip) }
36
+
37
+ end
38
+
39
+ desc 'Generate the gemspec defined in this Rakefile'
40
+ task :gemspec do
41
+ Pathname.new("#{spec.name}.gemspec").open('w') { |f| f.write(spec.to_ruby) }
42
+ end
43
+
44
+ require_task 'rake/version_task' do
45
+ Rake::VersionTask.new do |t|
46
+ t.with_git_tag = true
47
+ t.with_gemspec = spec
48
+ end
49
+ end
50
+
51
+ require 'rubygems/package_task'
52
+ Gem::PackageTask.new(spec) do |t|
53
+ t.need_zip = false
54
+ t.need_tar = false
55
+ end
56
+
57
+ task :default => :gemspec
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,39 @@
1
+ source :rubygems
2
+
3
+ gem 'game'
4
+
5
+ # === Choose a game engine
6
+
7
+ gem 'game-gosu'
8
+
9
+ # gem 'game-ray'
10
+ # gem 'game-rubygame'
11
+ # gem 'game-slick', platforms: :jruby
12
+
13
+ # === Choose a physics engine
14
+
15
+ gem 'game-chipmunk'
16
+
17
+ # platforms :ruby, :mswin do
18
+ # gem 'game-box2d'
19
+ # gem 'game-bullet'
20
+ # end
21
+ #
22
+ # platforms :jruby do
23
+ # gem 'game-jbullet'
24
+ # gem 'game-jbox2d'
25
+ # end
26
+
27
+ group :development do
28
+ gem 'game-compiler', platforms: [:rbx, :jruby]
29
+
30
+ gem 'game-noiti'
31
+
32
+ # === Choose a test engine
33
+
34
+ gem 'game-rspec'
35
+
36
+ # gem 'game-test-unit'
37
+ # gem 'game-cucumber'
38
+
39
+ end
@@ -0,0 +1,7 @@
1
+ class GameController < Game::Controller
2
+
3
+ def exit
4
+ SuperRubyBros::Application.exit
5
+ end
6
+
7
+ end
@@ -0,0 +1,13 @@
1
+ class MainMenuController < Game::Controller
2
+
3
+ def show
4
+ @logo = Logo.new
5
+ @main_menu_list_items = [
6
+ MainMenuListItem.new(text: t('main_menu.show.menu_list_items.new'), action: 'session#new'),
7
+ MainMenuListItem.new(text: t('main_menu.show.menu_list_items.load'), action: 'load_menu#show'),
8
+ MainMenuListItem.new(text: t('main_menu.show.menu_list_items.options'), action: 'options_menu#show'),
9
+ MainMenuListItem.new(text: t('main_menu.show.menu_list_items.quit'), action: 'game#exit')
10
+ ]
11
+ end
12
+
13
+ end
@@ -0,0 +1,12 @@
1
+ class Logo < Game::Entity
2
+
3
+ def initialize
4
+ add_entity image: Assets.images.logo
5
+ @image.position = @position
6
+ end
7
+
8
+ def draw
9
+ @image.draw
10
+ end
11
+
12
+ end
@@ -0,0 +1,3 @@
1
+ class MainMenuListItem < Entity
2
+
3
+ end
@@ -0,0 +1,3 @@
1
+ module GameHelpers
2
+
3
+ end
@@ -0,0 +1,10 @@
1
+ # Each view gets drawn every single frame. Have little to no logic in here.
2
+ # Never EVER call Entity#draw directly. The Entity's renderer will take care of that for us.
3
+
4
+ @logo.position x: @window.position.center.x, y: @logo.height + 10
5
+ # Or - @logo.position = { x: @window.position.center.x, y: @logo.height + 10 }
6
+
7
+ @main_menu_list_items.each_with_index do |main_menu_list_item, index|
8
+ main_menu_list_item.position.center_at x: @window.position.center.x
9
+ main_menu_list_item.position.y = (index + 1) * @main_menu_list_item.size.height
10
+ end
@@ -0,0 +1,16 @@
1
+ class GameWindow < Game::Window
2
+ size width: 600, height: 400
3
+ # Or - dimensions w: 600, h: 400 - Or any combination of those..
4
+ # Default is Screen.resolution/4
5
+
6
+ position Screen.center
7
+ # Or - pos x: 123, y: 456
8
+ # Default is this
9
+
10
+ fullscreen false
11
+ # Default is this
12
+
13
+ title 'Super Ruby Bros'
14
+
15
+
16
+ end
@@ -0,0 +1,49 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ if defined?(Bundler)
4
+ # If you precompile assets before deploying to production, use this line
5
+ Bundler.require(*Game.groups(:assets => %w(development test)))
6
+ # If you want your assets lazily compiled in production, use this line
7
+ # Bundler.require(:default, :assets, Rails.env)
8
+ end
9
+
10
+ module SuperRubyBros
11
+ class Application < Game::Application
12
+ # Settings in config/environments/* take precedence over those specified here.
13
+ #
14
+ # Application configuration should go into files in config/initializers
15
+ # -- all .rb files in that directory are automatically loaded.
16
+
17
+ # Custom directories with classes and modules you want to be autoloadable.
18
+ #
19
+ # config.autoload_paths += %W(#{config.root}/extras)
20
+
21
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
22
+ #
23
+ # config.i18n.load_path += Dir[Game.root.join('my', 'locales', '*.{rb,yml}').to_s]
24
+ # config.i18n.default_locale = :de
25
+
26
+ # Custom directories with classes and modules you want to be autoloadable.
27
+ #
28
+ # config.autoload_paths += %W(#{config.root}/extras)
29
+
30
+ # The game engine you would like to use. You can have multiple game engines installed.
31
+ # When you require the game engine gem, such as `game-gosu`, it will automatically set
32
+ # this option. You can override it here.
33
+ # You can use the Symbol registered as the game engine's name or the actual game engine class.
34
+ # For example, you may use `config.game_engine = :gosu` or `config.game_engine = RubyGame`.
35
+ #
36
+ # config.game_engine = :ray
37
+
38
+ # The physics engine you would like to use. You can have multiple physics engines installed.
39
+ # When you require the physics engine gem, such as `game-chipmunk`, it will automatically set
40
+ # this option. You can override it here.
41
+ # You can use the Symbol registered as the physics engine's name or the actual physics engine class.
42
+ # For example, you may use `config.game_engine = :chipmunk` or `config.game_engine = Box2D`.
43
+ #
44
+ # config.game_engine = :chipmunk
45
+
46
+ # Configure the default encoding used in templates for Ruby 1.9.
47
+ config.encoding = "utf-8"
48
+ end
49
+ end
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+
3
+ # Set up gems listed in the Gemfile.
4
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
5
+
6
+ require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
@@ -0,0 +1,5 @@
1
+ # Load the application
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the application
5
+ SuperRubyBros::Application.initialize!
@@ -0,0 +1,8 @@
1
+ en:
2
+ main_menu:
3
+ show:
4
+ menu_list_items:
5
+ new: 'New Game'
6
+ load: 'Load Game'
7
+ options: 'Options'
8
+ quit: 'Quit'
@@ -0,0 +1,3 @@
1
+ SuperRubyBros::Application.routes.draw do
2
+ root to: 'main_menu#show'
3
+ end
@@ -0,0 +1,44 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "game"
5
+ s.version = "0.0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Ryan Scott Lewis"]
9
+ s.date = "2012-11-22"
10
+ s.description = "# Game\n\nA Ruby-powered MVC game framework.\n\n## Install\n\n```sh\n$ gem install game\n```\n\n## Usage\n\n### Setup\n\n```sh\n$ game new my_cool_game\n```\n\nThis will create a new directory named `my_cool_game` in the current working directory. \nThe directory is laid out very much like a Rails application:\n\n my_cool_game\n \u{251c}\u{2500}\u{2500} Gemfile\n \u{251c}\u{2500}\u{2500} Guardfile\n \u{251c}\u{2500}\u{2500} README\n \u{251c}\u{2500}\u{2500} app\n | \u{251c}\u{2500}\u{2500} assets\n \u{2502} \u{2502} \u{251c}\u{2500}\u{2500} fonts\n \u{2502} \u{2502} \u{251c}\u{2500}\u{2500} images\n \u{2502} \u{2502} \u{251c}\u{2500}\u{2500} music\n \u{2502} \u{2502} \u{2514}\u{2500}\u{2500} sounds\n | \u{251c}\u{2500}\u{2500} controllers\n \u{2502} \u{2502} \u{2514}\u{2500}\u{2500} game_controller.rb\n | \u{251c}\u{2500}\u{2500} helpers\n \u{2502} \u{2502} \u{2514}\u{2500}\u{2500} game_helpers.rb\n | \u{251c}\u{2500}\u{2500} models\n | \u{251c}\u{2500}\u{2500} views\n | \u{2514}\u{2500}\u{2500} windows\n \u{2502} \u{2502} \u{2514}\u{2500}\u{2500} game_window.rb\n \u{251c}\u{2500}\u{2500} config\n \u{2502} \u{251c}\u{2500}\u{2500} environments\n \u{2502} \u{2502} \u{251c}\u{2500}\u{2500} development.rb\n \u{2502} \u{2502} \u{251c}\u{2500}\u{2500} production.rb\n \u{2502} \u{2502} \u{2514}\u{2500}\u{2500} test.rb\n \u{2502} \u{251c}\u{2500}\u{2500} initializers\n \u{2502} \u{251c}\u{2500}\u{2500} locales\n \u{2502} \u{2502} \u{2514}\u{2500}\u{2500} en.yml\n \u{2502} \u{251c}\u{2500}\u{2500} application.rb\n \u{2502} \u{251c}\u{2500}\u{2500} boot.rb\n \u{2502} \u{2514}\u{2500}\u{2500} database.yml\n \u{2502} \u{251c}\u{2500}\u{2500} environment.rb\n \u{2502} \u{2514}\u{2500}\u{2500} routes.rb\n \u{251c}\u{2500}\u{2500} log\n \u{251c}\u{2500}\u{2500} spec\n | \u{2514}\u{2500}\u{2500} spec_helper.rb\n \u{2514}\u{2500}\u{2500} tmp\n\n## Acknowledgements\n\n* [Rails][rails] for making MVC very popular in the [Ruby][ruby] universe\n* [Gamebox][gamebox] for inspiration.\n\n## Contributing\n\n* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet\n* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it\n* Fork the project\n* Start or switch to a testing/unstable/feature/bugfix branch\n* Commit and push until you are happy with your contribution\n* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.\n* Please try not to mess with the Rakefile, VERSION or gemspec.\n\n## Copyright\n\nCopyright \u{a9} 2012 Ryan Scott Lewis <ryan@rynet.us>.\n\nThe MIT License (MIT) - See LICENSE for further details.\n\n[rails]: https://github.com/rails/rails\n[ruby]: https://github.com/ruby/ruby\n[gamebox]: https://github.com/shawn42/gamebox\n"
11
+ s.email = ["ryan@rynet.us"]
12
+ s.files = [".gitignore", "Gemfile", "LICENSE", "README.md", "Rakefile", "VERSION", "examples/super_ruby_bros/Gemfile", "examples/super_ruby_bros/app/controllers/game_controller.rb", "examples/super_ruby_bros/app/controllers/main_menu_controller.rb", "examples/super_ruby_bros/app/entities/logo.rb", "examples/super_ruby_bros/app/entities/main_menu_list_item.rb", "examples/super_ruby_bros/app/helpers/game_helpers.rb", "examples/super_ruby_bros/app/views/main_menu/show.rb", "examples/super_ruby_bros/app/windows/game_window.rb", "examples/super_ruby_bros/config/application.rb", "examples/super_ruby_bros/config/boot.rb", "examples/super_ruby_bros/config/environment.rb", "examples/super_ruby_bros/config/locales/en.yml", "examples/super_ruby_bros/config/routes.rb", "game.gemspec", "lib/core_ext/array.rb", "lib/core_ext/hash.rb", "lib/game.rb", "lib/game/application.rb", "lib/game/controller.rb", "lib/game/window.rb"]
13
+ s.homepage = "http://github.com/RyanScottLewis/game"
14
+ s.require_paths = ["lib"]
15
+ s.rubygems_version = "1.8.24"
16
+ s.summary = "Game is a cross-platform and cross-implementation MVC framework for creating video games in Ruby."
17
+
18
+ if s.respond_to? :specification_version then
19
+ s.specification_version = 3
20
+
21
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
22
+ s.add_runtime_dependency(%q<version>, ["~> 1.0"])
23
+ s.add_development_dependency(%q<guard-rspec>, ["~> 2.1"])
24
+ s.add_development_dependency(%q<guard-yard>, ["~> 2.0"])
25
+ s.add_development_dependency(%q<rb-fsevent>, ["~> 0.9"])
26
+ s.add_development_dependency(%q<fuubar>, ["~> 1.1"])
27
+ s.add_development_dependency(%q<github-markup>, ["~> 0.7"])
28
+ else
29
+ s.add_dependency(%q<version>, ["~> 1.0"])
30
+ s.add_dependency(%q<guard-rspec>, ["~> 2.1"])
31
+ s.add_dependency(%q<guard-yard>, ["~> 2.0"])
32
+ s.add_dependency(%q<rb-fsevent>, ["~> 0.9"])
33
+ s.add_dependency(%q<fuubar>, ["~> 1.1"])
34
+ s.add_dependency(%q<github-markup>, ["~> 0.7"])
35
+ end
36
+ else
37
+ s.add_dependency(%q<version>, ["~> 1.0"])
38
+ s.add_dependency(%q<guard-rspec>, ["~> 2.1"])
39
+ s.add_dependency(%q<guard-yard>, ["~> 2.0"])
40
+ s.add_dependency(%q<rb-fsevent>, ["~> 0.9"])
41
+ s.add_dependency(%q<fuubar>, ["~> 1.1"])
42
+ s.add_dependency(%q<github-markup>, ["~> 0.7"])
43
+ end
44
+ end
@@ -0,0 +1,13 @@
1
+ class Array
2
+
3
+ def to_position
4
+
5
+ end
6
+ alias_method :to_pos, :to_position
7
+
8
+ def to_dimensions
9
+
10
+ end
11
+ alias_method :to_size, :to_dimensions
12
+
13
+ end
@@ -0,0 +1,13 @@
1
+ class Hash
2
+
3
+ def to_position
4
+
5
+ end
6
+ alias_method :to_pos, :to_position
7
+
8
+ def to_dimensions
9
+
10
+ end
11
+ alias_method :to_size, :to_dimensions
12
+
13
+ end
@@ -0,0 +1,65 @@
1
+
2
+ module Game
3
+
4
+ class Config
5
+
6
+ end
7
+
8
+ class Entity
9
+
10
+ class << self
11
+
12
+ def physics_engine(physics_engine)
13
+ unregister_physics_engine
14
+ register_physics_engine(physics_engine)
15
+ end
16
+
17
+ protected
18
+
19
+ def unregister_physics_engine
20
+
21
+ end
22
+
23
+ def register_physics_engine(physics_engine)
24
+
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+
31
+ class PhysicsEngine
32
+
33
+ end
34
+
35
+ end
36
+
37
+ # # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #
38
+ # # -= game-chipmunk
39
+ #
40
+ # # ./lib/game-chipmunk.rb # MANDATORY CONVENTION
41
+ #
42
+ # require 'game/physics_engine/chipmunk'
43
+ #
44
+ # # ./lib/game/chipmunk.rb # MANDATORY CONVENTION
45
+ #
46
+ # require 'game/physics_engine/chipmunk'
47
+ #
48
+ # # ./lib/game/physics_engine/chipmunk # ACTUAL PLUGIN
49
+ #
50
+ # module Game
51
+ # class PhysicsEngine
52
+ #
53
+ # class Chipmunk < PhysicsEngine
54
+ # VERSION = '0.1.0'
55
+ #
56
+ # on_register do
57
+ # # in the scope of the Entity class this was registered..
58
+ # end
59
+ #
60
+ # end
61
+ #
62
+ # Entity.physics_engine(Chipmunk) # Autosetup Chipmunk as the default physics engine
63
+ #
64
+ # end
65
+ # end
@@ -0,0 +1,15 @@
1
+ module Game
2
+
3
+ class Application
4
+
5
+ class << self
6
+
7
+ # Start the Game's Application
8
+ def run(*args, &blk)
9
+ self.new.run(*args, &blk)
10
+ end
11
+
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ module Game
2
+ class Controller
3
+
4
+ class << self
5
+
6
+ def inherited(base)
7
+ if self == Game::Controller
8
+
9
+ else
10
+
11
+ end
12
+ end
13
+
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,87 @@
1
+ module Game
2
+ class Window
3
+
4
+ class << self
5
+
6
+ def fps
7
+
8
+ end
9
+
10
+ def delta
11
+
12
+ end
13
+
14
+ end
15
+
16
+ class Window
17
+ include MetaTools
18
+
19
+ attr_reader :started_at
20
+
21
+ # Initialize the game window.
22
+ #
23
+ # @abstract Override and call `super` after you've setup the width, height, and title.
24
+ def initialize(options={})
25
+ # Complain if @title isn't set?
26
+ # Complain if @width isn't set?
27
+ # Complain if height isn't set?
28
+ init_window
29
+ @started_at = Time.now
30
+ end
31
+
32
+ attr_writer :title
33
+ def title(value=nil)
34
+ @title = value unless value.nil?
35
+ @title
36
+ end
37
+
38
+ attr_writer :width
39
+ def width(value=nil)
40
+ @width = value unless value.nil?
41
+ @width
42
+ end
43
+
44
+ attr_writer :height
45
+ def height(value=nil)
46
+ @height = value unless value.nil?
47
+ @height
48
+ end
49
+
50
+ attr_writer :fullscreen
51
+ def fullscreen(value=nil)
52
+ @fullscreen = value unless value.nil?
53
+ @fullscreen
54
+ end
55
+
56
+ def entities
57
+ @entities ||= []
58
+ end
59
+
60
+ def add_entity(entity, *args, &blk)
61
+ entity_name, entity = entity, args.shift if entity.is_a?(Symbol)
62
+ entity_name ||= entity.to_s.split('::').last.gsub(/[A-Z]/, '_\0').gsub(/^_/, '').downcase
63
+
64
+ meta_def(entity_name) { entity }
65
+
66
+ entities << entity_instance = entity.new(@window, *args)
67
+
68
+ yield(entity_instance) if block_given?
69
+
70
+ entity
71
+ end
72
+
73
+ # Initialize the underlying adapter window.
74
+ #
75
+ # @abstract Must be overridden by an adapter.
76
+ def init_window
77
+ raise NotImplementedError
78
+ end
79
+
80
+ end
81
+
82
+ def milliseconds_since_start
83
+
84
+ end
85
+
86
+ end
87
+ end
metadata ADDED
@@ -0,0 +1,195 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: game
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ryan Scott Lewis
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: version
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: guard-rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '2.1'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '2.1'
46
+ - !ruby/object:Gem::Dependency
47
+ name: guard-yard
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '2.0'
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.0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rb-fsevent
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '0.9'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '0.9'
78
+ - !ruby/object:Gem::Dependency
79
+ name: fuubar
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: '1.1'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '1.1'
94
+ - !ruby/object:Gem::Dependency
95
+ name: github-markup
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: '0.7'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: '0.7'
110
+ description: ! "# Game\n\nA Ruby-powered MVC game framework.\n\n## Install\n\n```sh\n$
111
+ gem install game\n```\n\n## Usage\n\n### Setup\n\n```sh\n$ game new my_cool_game\n```\n\nThis
112
+ will create a new directory named `my_cool_game` in the current working directory.
113
+ \ \nThe directory is laid out very much like a Rails application:\n\n my_cool_game\n
114
+ \ ├── Gemfile\n ├── Guardfile\n ├── README\n ├── app\n | ├── assets\n
115
+ \ │ │ ├── fonts\n │ │ ├── images\n │ │ ├── music\n │ │
116
+ \ └── sounds\n | ├── controllers\n │ │ └── game_controller.rb\n |
117
+ \ ├── helpers\n │ │ └── game_helpers.rb\n | ├── models\n | ├──
118
+ views\n | └── windows\n │ │ └── game_window.rb\n ├── config\n │
119
+ \ ├── environments\n │ │ ├── development.rb\n │ │ ├── production.rb\n
120
+ \ │ │ └── test.rb\n │ ├── initializers\n │ ├── locales\n │ │
121
+ \ └── en.yml\n │ ├── application.rb\n │ ├── boot.rb\n │ └── database.yml\n
122
+ \ │ ├── environment.rb\n │ └── routes.rb\n ├── log\n ├── spec\n |
123
+ \ └── spec_helper.rb\n └── tmp\n\n## Acknowledgements\n\n* [Rails][rails] for
124
+ making MVC very popular in the [Ruby][ruby] universe\n* [Gamebox][gamebox] for inspiration.\n\n##
125
+ Contributing\n\n* Check out the latest master to make sure the feature hasn't been
126
+ implemented or the bug hasn't been fixed yet\n* Check out the issue tracker to make
127
+ sure someone already hasn't requested it and/or contributed it\n* Fork the project\n*
128
+ Start or switch to a testing/unstable/feature/bugfix branch\n* Commit and push until
129
+ you are happy with your contribution\n* Make sure to add tests for it. This is important
130
+ so I don't break it in a future version unintentionally.\n* Please try not to mess
131
+ with the Rakefile, VERSION or gemspec.\n\n## Copyright\n\nCopyright © 2012 Ryan
132
+ Scott Lewis <ryan@rynet.us>.\n\nThe MIT License (MIT) - See LICENSE for further
133
+ details.\n\n[rails]: https://github.com/rails/rails\n[ruby]: https://github.com/ruby/ruby\n[gamebox]:
134
+ https://github.com/shawn42/gamebox\n"
135
+ email:
136
+ - ryan@rynet.us
137
+ executables: []
138
+ extensions: []
139
+ extra_rdoc_files: []
140
+ files:
141
+ - .gitignore
142
+ - Gemfile
143
+ - LICENSE
144
+ - README.md
145
+ - Rakefile
146
+ - VERSION
147
+ - examples/super_ruby_bros/Gemfile
148
+ - examples/super_ruby_bros/app/controllers/game_controller.rb
149
+ - examples/super_ruby_bros/app/controllers/main_menu_controller.rb
150
+ - examples/super_ruby_bros/app/entities/logo.rb
151
+ - examples/super_ruby_bros/app/entities/main_menu_list_item.rb
152
+ - examples/super_ruby_bros/app/helpers/game_helpers.rb
153
+ - examples/super_ruby_bros/app/views/main_menu/show.rb
154
+ - examples/super_ruby_bros/app/windows/game_window.rb
155
+ - examples/super_ruby_bros/config/application.rb
156
+ - examples/super_ruby_bros/config/boot.rb
157
+ - examples/super_ruby_bros/config/environment.rb
158
+ - examples/super_ruby_bros/config/locales/en.yml
159
+ - examples/super_ruby_bros/config/routes.rb
160
+ - game.gemspec
161
+ - lib/core_ext/array.rb
162
+ - lib/core_ext/hash.rb
163
+ - lib/game.rb
164
+ - lib/game/application.rb
165
+ - lib/game/controller.rb
166
+ - lib/game/window.rb
167
+ homepage: http://github.com/RyanScottLewis/game
168
+ licenses: []
169
+ post_install_message:
170
+ rdoc_options: []
171
+ require_paths:
172
+ - lib
173
+ required_ruby_version: !ruby/object:Gem::Requirement
174
+ none: false
175
+ requirements:
176
+ - - ! '>='
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ segments:
180
+ - 0
181
+ hash: 836299298492410699
182
+ required_rubygems_version: !ruby/object:Gem::Requirement
183
+ none: false
184
+ requirements:
185
+ - - ! '>='
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ requirements: []
189
+ rubyforge_project:
190
+ rubygems_version: 1.8.24
191
+ signing_key:
192
+ specification_version: 3
193
+ summary: Game is a cross-platform and cross-implementation MVC framework for creating
194
+ video games in Ruby.
195
+ test_files: []