pario 0.3.4 → 0.4.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/.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
|