pario 0.3.4 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/README.rdoc +8 -0
- data/bin/pario +6 -3
- data/lib/pario.rb +4 -208
- data/lib/pario/cli.rb +145 -0
- data/lib/pario/inflector.rb +16 -0
- data/lib/pario/media/pario_background.png +0 -0
- data/lib/pario/version.rb +7 -1
- data/lib/util.rb +40 -0
- data/pario.gemspec +1 -1
- metadata +8 -4
data/.gitignore
CHANGED
data/README.rdoc
CHANGED
@@ -9,6 +9,10 @@ Pario is a Gosu Game framework that helps to give you structure and a start for
|
|
9
9
|
* Windows users: gem install pario
|
10
10
|
* ALSO: Gosu will automatically be installed when you install pario
|
11
11
|
|
12
|
+
Other Requirements
|
13
|
+
* sudo gem update --system
|
14
|
+
* ruby patchlevel 330, you may experience issues. Working on instructions to upgrade ruby on a system.
|
15
|
+
|
12
16
|
== Getting Started
|
13
17
|
|
14
18
|
1. At the command prompt, create a new Pario application:
|
@@ -21,6 +25,10 @@ Pario is a Gosu Game framework that helps to give you structure and a start for
|
|
21
25
|
|
22
26
|
pario play
|
23
27
|
|
28
|
+
3. Add more classes to the game:
|
29
|
+
|
30
|
+
pario add my_class
|
31
|
+
|
24
32
|
== Learning Ruby
|
25
33
|
|
26
34
|
* Ruby4kids: [link:http://www.ruby4kids.com] - links to game examples and videos.
|
data/bin/pario
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
-
#!/
|
1
|
+
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
pario_path = File.expand_path('
|
3
|
+
pario_path = File.expand_path('../../lib', __FILE__)
|
4
4
|
$LOAD_PATH.unshift(pario_path) unless $LOAD_PATH.include?(pario_path)
|
5
|
-
|
5
|
+
|
6
|
+
require 'pario/cli'
|
7
|
+
|
8
|
+
Pario::Cli.new(ARGV, STDIN).run
|
data/lib/pario.rb
CHANGED
@@ -1,210 +1,6 @@
|
|
1
|
-
require 'optparse'
|
2
|
-
require 'rdoc/usage'
|
3
|
-
require 'ostruct'
|
4
1
|
require 'erb'
|
2
|
+
require 'pario/inflector'
|
5
3
|
|
6
|
-
|
7
|
-
Version
|
8
|
-
|
9
|
-
|
10
|
-
attr_reader :options, :command, :game_name, :arguments
|
11
|
-
|
12
|
-
def initialize(arguments, stdin)
|
13
|
-
@command = arguments[0]
|
14
|
-
@arguments = arguments
|
15
|
-
@stdin = stdin
|
16
|
-
|
17
|
-
# Set defaults
|
18
|
-
@options = OpenStruct.new
|
19
|
-
@options.verbose = false
|
20
|
-
@options.quiet = false
|
21
|
-
end
|
22
|
-
|
23
|
-
# Parse options, check arguments, then process the command
|
24
|
-
def run
|
25
|
-
if (parsed_options? && arguments_valid?) && !valid_pario_command?
|
26
|
-
#TODO
|
27
|
-
elsif valid_pario_command?
|
28
|
-
|
29
|
-
@command = arguments.delete_at(0)
|
30
|
-
process_command
|
31
|
-
else
|
32
|
-
output_usage
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
protected
|
38
|
-
|
39
|
-
def parsed_options?
|
40
|
-
# Specify options
|
41
|
-
opts = OptionParser.new
|
42
|
-
opts.on('-v', '--version') { output_version ; exit 0 }
|
43
|
-
opts.on('-h', '--help') { output_help }
|
44
|
-
opts.on('-V', '--verbose') { @options.verbose = true }
|
45
|
-
|
46
|
-
opts.parse!(@arguments) rescue return false
|
47
|
-
|
48
|
-
process_options
|
49
|
-
true
|
50
|
-
end
|
51
|
-
|
52
|
-
# Performs post-parse processing on options
|
53
|
-
def process_options
|
54
|
-
@options.verbose = false if @options.quiet
|
55
|
-
end
|
56
|
-
|
57
|
-
def output_options
|
58
|
-
puts "Options:\
|
59
|
-
"
|
60
|
-
|
61
|
-
@options.marshal_dump.each do |name, val|
|
62
|
-
puts " #{name} = #{val}"
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
# True if required arguments were provided
|
67
|
-
def arguments_valid?
|
68
|
-
# TO DO - implement your real logic here
|
69
|
-
true if @arguments.length == 1
|
70
|
-
end
|
71
|
-
|
72
|
-
# Setup the arguments
|
73
|
-
def process_arguments
|
74
|
-
#TODO
|
75
|
-
end
|
76
|
-
|
77
|
-
def output_help
|
78
|
-
output_version
|
79
|
-
RDoc::usage() #exits app
|
80
|
-
end
|
81
|
-
|
82
|
-
def output_usage
|
83
|
-
RDoc::usage('usage') # gets usage from comments above
|
84
|
-
end
|
85
|
-
|
86
|
-
def output_version
|
87
|
-
puts "#{File.basename(__FILE__)} version #{Version}"
|
88
|
-
end
|
89
|
-
|
90
|
-
def valid_pario_command?
|
91
|
-
%w{create add play}.include? @command
|
92
|
-
end
|
93
|
-
|
94
|
-
def process_command
|
95
|
-
send @command
|
96
|
-
#process_standard_input # [Optional]
|
97
|
-
end
|
98
|
-
|
99
|
-
# Create a game
|
100
|
-
def create
|
101
|
-
create_directories
|
102
|
-
create_base_files
|
103
|
-
copy_files
|
104
|
-
end
|
105
|
-
|
106
|
-
def copy_files
|
107
|
-
# TODO copy over README, LICENSE and pario_background
|
108
|
-
end
|
109
|
-
|
110
|
-
# This will take ""
|
111
|
-
def game_name
|
112
|
-
@game_name ||= @arguments[0]
|
113
|
-
end
|
114
|
-
|
115
|
-
def game_name_downcase
|
116
|
-
game_name.split(/(?=[A-Z]+_)/).join('_').downcase
|
117
|
-
end
|
118
|
-
|
119
|
-
def game_name_upcase
|
120
|
-
#TODO: need to handle camelcase
|
121
|
-
game_name.to_s.gsub(/\b\w/){$&.upcase}
|
122
|
-
end
|
123
|
-
|
124
|
-
def create_base_files
|
125
|
-
build_main
|
126
|
-
# build_game_config
|
127
|
-
build_game_class
|
128
|
-
end
|
129
|
-
|
130
|
-
def build_game_class
|
131
|
-
Dir.chdir("game")
|
132
|
-
game_file = File.open(game_name_downcase + ".rb", "w+")
|
133
|
-
game_file.puts game_class
|
134
|
-
end
|
135
|
-
|
136
|
-
def build_main
|
137
|
-
# "do you want to overwrite main.rb? Y/n" if File.exist?("main.rb")
|
138
|
-
main_file = File.open("main.rb", "w+")
|
139
|
-
main_file.puts main_class
|
140
|
-
end
|
141
|
-
|
142
|
-
def main_class
|
143
|
-
main_template = ERB.new <<-EOF
|
144
|
-
require 'rubygems'
|
145
|
-
require 'gosu'
|
146
|
-
|
147
|
-
Dir.glob(File.join("game", "*.rb")).each {|file| require file }
|
148
|
-
|
149
|
-
|
150
|
-
game = #{game_name_upcase}.new(800, 600)
|
151
|
-
game.show
|
152
|
-
EOF
|
153
|
-
main_template.result(binding)
|
154
|
-
end
|
155
|
-
|
156
|
-
def game_class
|
157
|
-
game_template = ERB.new <<-EOF
|
158
|
-
class #{game_name_upcase} < Gosu::Window
|
159
|
-
def initialize(window_width, window_height)
|
160
|
-
super(window_width,window_height,0)
|
161
|
-
end
|
162
|
-
|
163
|
-
def update
|
164
|
-
# Code to your object around goes here
|
165
|
-
# TODO: Need more details
|
166
|
-
end
|
167
|
-
|
168
|
-
def draw
|
169
|
-
# Code to draw what you see goes here
|
170
|
-
# TODO: Need more details
|
171
|
-
end
|
172
|
-
end
|
173
|
-
EOF
|
174
|
-
game_template.result(binding)
|
175
|
-
end
|
176
|
-
|
177
|
-
def create_directories
|
178
|
-
Dir.mkdir(game_name_downcase) unless File.directory?(game_name_downcase)
|
179
|
-
Dir.chdir(game_name_downcase)
|
180
|
-
Directories.each do |sub_folder|
|
181
|
-
Dir.mkdir sub_folder unless File.directory?(sub_folder)
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
def add
|
186
|
-
puts "Feature to come soon, I'm working on it!"
|
187
|
-
end
|
188
|
-
|
189
|
-
def play
|
190
|
-
%x{ruby main.rb}
|
191
|
-
end
|
192
|
-
|
193
|
-
def process_standard_input
|
194
|
-
input = @stdin.read
|
195
|
-
# TO DO - process input
|
196
|
-
|
197
|
-
# [Optional]
|
198
|
-
# @stdin.each do |line|
|
199
|
-
# # TO DO - process each line
|
200
|
-
#end
|
201
|
-
end
|
202
|
-
end
|
203
|
-
|
204
|
-
|
205
|
-
# TO DO - Add your Modules, Classes, etc
|
206
|
-
|
207
|
-
|
208
|
-
# Create and run the application
|
209
|
-
app = Pario.new(ARGV, STDIN)
|
210
|
-
app.run
|
4
|
+
module Pario
|
5
|
+
autoload :Version, 'pario/version'
|
6
|
+
end
|
data/lib/pario/cli.rb
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
require 'pario'
|
2
|
+
require 'optparse'
|
3
|
+
require 'erb'
|
4
|
+
|
5
|
+
module Pario
|
6
|
+
class Cli
|
7
|
+
|
8
|
+
Directories = %w{game lib media config}
|
9
|
+
|
10
|
+
attr_reader :options, :command, :game_name, :arguments
|
11
|
+
|
12
|
+
def initialize(arguments, stdin)
|
13
|
+
@command = arguments[0]
|
14
|
+
@arguments = arguments
|
15
|
+
end
|
16
|
+
|
17
|
+
# Parse options, check arguments, then process the command
|
18
|
+
def run
|
19
|
+
if valid_pario_command?
|
20
|
+
@command = arguments.delete_at(0)
|
21
|
+
process_command
|
22
|
+
else
|
23
|
+
puts "Command not recognized."
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
protected
|
28
|
+
|
29
|
+
def output_version
|
30
|
+
puts "pario version #{Version::STRING}"
|
31
|
+
end
|
32
|
+
|
33
|
+
def valid_pario_command?
|
34
|
+
%w{create add play -v}.include? @command
|
35
|
+
end
|
36
|
+
|
37
|
+
def process_command
|
38
|
+
@command = "output_version" if command == "-v"
|
39
|
+
send @command
|
40
|
+
end
|
41
|
+
|
42
|
+
# Create a game
|
43
|
+
def create
|
44
|
+
create_directories
|
45
|
+
create_base_files
|
46
|
+
copy_files
|
47
|
+
end
|
48
|
+
|
49
|
+
def copy_files
|
50
|
+
# TODO copy over README, LICENSE and pario_background
|
51
|
+
end
|
52
|
+
|
53
|
+
# Set game name
|
54
|
+
def game_name
|
55
|
+
@game_name ||= @arguments.delete_at(0)
|
56
|
+
end
|
57
|
+
|
58
|
+
def create_base_files
|
59
|
+
build_main
|
60
|
+
build_extra_classes unless @arguments.empty?
|
61
|
+
# build_game_config
|
62
|
+
build_game_class
|
63
|
+
end
|
64
|
+
|
65
|
+
def build_game_class
|
66
|
+
game_file = File.open("#{game_name.camelize}.rb", "w+")
|
67
|
+
game_file.puts game_class
|
68
|
+
end
|
69
|
+
|
70
|
+
def build_main
|
71
|
+
# "do you want to overwrite main.rb? Y/n" if File.exist?("main.rb")
|
72
|
+
main_file = File.open("main.rb", "w+")
|
73
|
+
main_file.puts main_class
|
74
|
+
end
|
75
|
+
|
76
|
+
def build_extra_classes
|
77
|
+
Dir.chdir("game") unless Dir.getwd.split("/").last == "game"
|
78
|
+
@arguments.each do |new_class|
|
79
|
+
class_file = File.open("#{new_class.camelize}.rb", "w+")
|
80
|
+
class_file.puts class_template(new_class)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def class_template(name)
|
85
|
+
template = ERB.new <<-EOF
|
86
|
+
class #{name.capitalize}
|
87
|
+
def initialize
|
88
|
+
end
|
89
|
+
end
|
90
|
+
EOF
|
91
|
+
template.result(binding)
|
92
|
+
end
|
93
|
+
|
94
|
+
def main_class
|
95
|
+
main_template = ERB.new <<-EOF
|
96
|
+
require 'rubygems'
|
97
|
+
require 'gosu'
|
98
|
+
|
99
|
+
Dir.glob(File.join("game", "*.rb")).each {|file| require file }
|
100
|
+
|
101
|
+
|
102
|
+
game = #{game_name.capitalize}.new(800, 600)
|
103
|
+
game.show
|
104
|
+
EOF
|
105
|
+
main_template.result(binding)
|
106
|
+
end
|
107
|
+
|
108
|
+
def game_class
|
109
|
+
game_template = ERB.new <<-EOF
|
110
|
+
class #{game_name.capitalize} < Gosu::Window
|
111
|
+
def initialize(window_width, window_height)
|
112
|
+
super(window_width,window_height,0)
|
113
|
+
end
|
114
|
+
|
115
|
+
def update
|
116
|
+
# Code to your object around goes here
|
117
|
+
# TODO: Need more details
|
118
|
+
end
|
119
|
+
|
120
|
+
def draw
|
121
|
+
# Code to draw what you see goes here
|
122
|
+
# TODO: Need more details
|
123
|
+
end
|
124
|
+
end
|
125
|
+
EOF
|
126
|
+
game_template.result(binding)
|
127
|
+
end
|
128
|
+
|
129
|
+
def create_directories
|
130
|
+
Dir.mkdir(game_name.downcase) unless File.directory?(game_name.downcase)
|
131
|
+
Dir.chdir(game_name.downcase)
|
132
|
+
Directories.each do |sub_folder|
|
133
|
+
Dir.mkdir sub_folder unless File.directory?(sub_folder)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def add
|
138
|
+
build_extra_classes unless @arguments.empty?
|
139
|
+
end
|
140
|
+
|
141
|
+
def play
|
142
|
+
%x{ruby main.rb}
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
Binary file
|
data/lib/pario/version.rb
CHANGED
data/lib/util.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
module Util
|
2
|
+
|
3
|
+
# module Font
|
4
|
+
# def initialize(window, size, obj=nil, name=nil)
|
5
|
+
# super window, Gosu::default_font_name, size.to_i
|
6
|
+
# end
|
7
|
+
# def draw(text, color)
|
8
|
+
# super text, 0, 0, 99, 1, 1, color
|
9
|
+
# # @font.draw("Score: 0", 10, 10, 0, 1.0, 1.0, 0xffffff00)
|
10
|
+
# end
|
11
|
+
# end
|
12
|
+
|
13
|
+
def background_image(pic)
|
14
|
+
Gosu::Image.new(self, pic, true)
|
15
|
+
end
|
16
|
+
|
17
|
+
#########################
|
18
|
+
# There are more key hooks than the ones below, this is just a start
|
19
|
+
# TODO: link here to a key map of all of the possiblities
|
20
|
+
# EXAMPLE:
|
21
|
+
# if key_pressed? :left
|
22
|
+
# ...
|
23
|
+
# end
|
24
|
+
#
|
25
|
+
# UP - :up
|
26
|
+
# Down - :down
|
27
|
+
# Left - :left
|
28
|
+
# Right - :right
|
29
|
+
# Space Bar :space
|
30
|
+
# #########################
|
31
|
+
def key_pressed?(key)
|
32
|
+
key_const = Gosu.const_get(:"Kb#{key.to_s.gsub(/\b\w/){$&.upcase}}")
|
33
|
+
button_down?(key_const)
|
34
|
+
end
|
35
|
+
|
36
|
+
# positioning layers within a game
|
37
|
+
# module ZOrder
|
38
|
+
# Background, UI = *0..3
|
39
|
+
# end
|
40
|
+
end
|
data/pario.gemspec
CHANGED
@@ -6,7 +6,7 @@ require 'pario/version'
|
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = 'pario'
|
9
|
-
s.version =
|
9
|
+
s.version = Pario::Version::STRING
|
10
10
|
s.platform = Gem::Platform::RUBY
|
11
11
|
s.authors = ['Bill Davenport', 'Anthony Burns']
|
12
12
|
s.email = ['bill@infoether.com', 'anthony@infoether.com']
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pario
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
- 3
|
9
8
|
- 4
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 0.4.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Bill Davenport
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-02-
|
19
|
+
date: 2011-02-22 00:00:00 -05:00
|
20
20
|
default_executable: pario
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -52,7 +52,11 @@ files:
|
|
52
52
|
- lib/docs/LICENSE
|
53
53
|
- lib/docs/README
|
54
54
|
- lib/pario.rb
|
55
|
+
- lib/pario/cli.rb
|
56
|
+
- lib/pario/inflector.rb
|
57
|
+
- lib/pario/media/pario_background.png
|
55
58
|
- lib/pario/version.rb
|
59
|
+
- lib/util.rb
|
56
60
|
- pario.gemspec
|
57
61
|
has_rdoc: true
|
58
62
|
homepage: http://github.com/ruby4kids/pario
|