gosu-examples 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +22 -0
- data/README.md +14 -0
- data/bin/gosu-examples +97 -0
- data/examples/chipmunk_and_rmagick.rb +152 -0
- data/examples/chipmunk_integration.rb +278 -0
- data/examples/cptn_ruby.rb +229 -0
- data/examples/media/BrokenPNG.png +0 -0
- data/examples/media/Cursor.png +0 -0
- data/examples/media/JingleBells.mp3 +0 -0
- data/examples/media/JingleBells.ogg +0 -0
- data/examples/media/Loop.wav +0 -0
- data/examples/media/Sample.wav +0 -0
- data/examples/media/SquareTexture.png +0 -0
- data/examples/media/Wallpaper.png +0 -0
- data/examples/media/WallpaperXXL.png +0 -0
- data/examples/media/WhiteAlpha.png +0 -0
- data/examples/media/audio_formats/aiff_32bit_float.aiff +0 -0
- data/examples/media/audio_formats/au_16bit_pcm.au +0 -0
- data/examples/media/audio_formats/caf_be_16bit_44khz.caf +0 -0
- data/examples/media/audio_formats/caf_le_16bit_44khz.caf +0 -0
- data/examples/media/audio_formats/caf_le_8bit_44khz.caf +0 -0
- data/examples/media/audio_formats/general_midi.mid +0 -0
- data/examples/media/audio_formats/impulse_tracker.it +0 -0
- data/examples/media/audio_formats/mp3_128k_stereo.mp3 +0 -0
- data/examples/media/audio_formats/mp3_avg_96kbit_jointstereo.mp3 +0 -0
- data/examples/media/audio_formats/ogg_vorbis.ogg +0 -0
- data/examples/media/audio_formats/wav_16bit_pcm.wav +0 -0
- data/examples/media/audio_formats/wav_32bit_pcm.wav +0 -0
- data/examples/media/audio_formats/wav_4bit_ms_adpcm.wav +0 -0
- data/examples/media/beep.wav +0 -0
- data/examples/media/cptn_ruby.png +0 -0
- data/examples/media/cptn_ruby_map.txt +25 -0
- data/examples/media/earth.png +0 -0
- data/examples/media/explosion.wav +0 -0
- data/examples/media/gem.png +0 -0
- data/examples/media/header.psd +0 -0
- data/examples/media/image_formats/test.jpg +0 -0
- data/examples/media/image_formats/test.psd +0 -0
- data/examples/media/landscape.svg +10 -0
- data/examples/media/large_star.png +0 -0
- data/examples/media/smoke.png +0 -0
- data/examples/media/soldier.png +0 -0
- data/examples/media/space.png +0 -0
- data/examples/media/star.png +0 -0
- data/examples/media/starfighter.bmp +0 -0
- data/examples/media/tileset.png +0 -0
- data/examples/media/vera.ttf +0 -0
- data/examples/opengl_integration.rb +224 -0
- data/examples/rmagick_integration.rb +413 -0
- data/examples/tutorial.rb +129 -0
- data/examples/welcome.rb +59 -0
- data/lib/gosu-examples/example.rb +82 -0
- data/lib/gosu-examples/sidebar.rb +60 -0
- metadata +112 -0
data/examples/welcome.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
# Encoding: UTF-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'gosu'
|
5
|
+
|
6
|
+
WIDTH, HEIGHT = 600, 600
|
7
|
+
|
8
|
+
class Welcome < (Example rescue Gosu::Window)
|
9
|
+
PADDING = 20
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
super WIDTH, HEIGHT
|
13
|
+
|
14
|
+
self.caption = "Welcome!"
|
15
|
+
|
16
|
+
text =
|
17
|
+
"<b>Welcome to the Gosu Example Box!</b>
|
18
|
+
|
19
|
+
This little tool lets you launch any of Gosu’s example games from the list on the right hand side of the screen.
|
20
|
+
|
21
|
+
Every example can be run both from this tool <i>and</i> from the terminal/command line as a stand-alone Ruby script.
|
22
|
+
|
23
|
+
Shortcuts:
|
24
|
+
|
25
|
+
• To see the source code of an example or feature demo, press <b>S</b>.
|
26
|
+
• To open the ‘examples’ folder, press <b>O</b>.
|
27
|
+
• To quit this tool, press <b>Esc</b>. This is useful if you are running in fullscreen mode. ($ gosu-examples --fullscreen)
|
28
|
+
|
29
|
+
Why not take a look at the code for this example right now? Simply press <b>S</b>."
|
30
|
+
|
31
|
+
# Remove all leading spaces so the text is left-aligned
|
32
|
+
text.gsub! /^ +/, ''
|
33
|
+
|
34
|
+
@text = Gosu::Image.from_text text, 20, :width => WIDTH - 2 * PADDING
|
35
|
+
|
36
|
+
@background = Gosu::Image.new "media/space.png"
|
37
|
+
end
|
38
|
+
|
39
|
+
def draw
|
40
|
+
draw_rotating_star_backgrounds
|
41
|
+
|
42
|
+
@text.draw PADDING, PADDING, 0
|
43
|
+
end
|
44
|
+
|
45
|
+
def draw_rotating_star_backgrounds
|
46
|
+
# Disregard the math in this method, it doesn't look as good as I thought it
|
47
|
+
# would. =(
|
48
|
+
|
49
|
+
angle = Gosu::milliseconds / 50.0
|
50
|
+
scale = (Gosu::milliseconds % 1000) / 1000.0
|
51
|
+
|
52
|
+
[1, 0].each do |extra_scale|
|
53
|
+
@background.draw_rot WIDTH * 0.5, HEIGHT * 0.75, 0, angle, 0.5, 0.5,
|
54
|
+
scale + extra_scale, scale + extra_scale
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
Welcome.new.show if __FILE__ == $0
|
@@ -0,0 +1,82 @@
|
|
1
|
+
class Example
|
2
|
+
attr_accessor :caption
|
3
|
+
attr_reader :width, :height
|
4
|
+
|
5
|
+
def initialize(width, height, *options)
|
6
|
+
@width, @height = width, height
|
7
|
+
end
|
8
|
+
|
9
|
+
def draw
|
10
|
+
end
|
11
|
+
|
12
|
+
def update
|
13
|
+
end
|
14
|
+
|
15
|
+
def button_down(id)
|
16
|
+
end
|
17
|
+
|
18
|
+
def button_up(id)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class Feature < Example
|
23
|
+
def self.inherited(subclass)
|
24
|
+
@@features ||= {}
|
25
|
+
@@features[subclass] = self.current_source_file
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.features
|
29
|
+
@@features.keys
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.source_file
|
33
|
+
@@examples[self]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class Example
|
38
|
+
def self.current_source_file
|
39
|
+
@current_source_file
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.current_source_file=(current_source_file)
|
43
|
+
@current_source_file = current_source_file
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.inherited(subclass)
|
47
|
+
@@examples ||= {}
|
48
|
+
@@examples[subclass] = self.current_source_file
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.examples
|
52
|
+
@@examples.keys - [Feature]
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.source_file
|
56
|
+
@@examples[self]
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.load_examples(pattern)
|
60
|
+
Dir.glob(pattern) do |file|
|
61
|
+
begin
|
62
|
+
# Remember that all examples and features being loaded now must come from the
|
63
|
+
# next file.
|
64
|
+
#
|
65
|
+
Example.current_source_file = File.expand_path(file)
|
66
|
+
|
67
|
+
# Load the example/feature in a sandbox module (second parameter). This way,
|
68
|
+
# several examples can define a Player class without colliding.
|
69
|
+
#
|
70
|
+
# load() does not let us refer to the anonymous module it creates, but we
|
71
|
+
# can enumerate all loaded examples and features using Example.examples and
|
72
|
+
# Feature.features afterwards.
|
73
|
+
#
|
74
|
+
load file, true
|
75
|
+
rescue Exception => e
|
76
|
+
puts "*** Cannot load #{file}:"
|
77
|
+
puts e
|
78
|
+
puts
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
class Sidebar
|
2
|
+
WIDTH = 213
|
3
|
+
HEIGHT = 600
|
4
|
+
FONT = Gosu::Font.new(20)
|
5
|
+
HEADER = Gosu::Image.new("media/header.psd", :tileable => true)
|
6
|
+
|
7
|
+
class Button
|
8
|
+
HEIGHT = 25
|
9
|
+
SPACING = 5
|
10
|
+
TOP_Y = HEADER.height + 15
|
11
|
+
|
12
|
+
attr_reader :filename
|
13
|
+
|
14
|
+
def initialize(top, filename, &handler)
|
15
|
+
@top, @filename, @handler = top, filename, handler
|
16
|
+
end
|
17
|
+
|
18
|
+
def draw(is_current)
|
19
|
+
text_color = Gosu::Color::BLACK
|
20
|
+
|
21
|
+
if is_current
|
22
|
+
Gosu::draw_rect 0, @top, Sidebar::WIDTH, HEIGHT, 0xff_1565e5 if is_current
|
23
|
+
text_color = Gosu::Color::WHITE
|
24
|
+
end
|
25
|
+
|
26
|
+
FONT.draw File.basename(@filename), 13, @top + 2, 0, 1, 1, text_color
|
27
|
+
end
|
28
|
+
|
29
|
+
def click
|
30
|
+
@handler.call
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def initialize
|
35
|
+
y = Button::TOP_Y - Button::HEIGHT - Button::SPACING
|
36
|
+
|
37
|
+
@buttons = Example.examples.map do |example|
|
38
|
+
y += (Button::HEIGHT + Button::SPACING)
|
39
|
+
|
40
|
+
Button.new(y, example.source_file) do
|
41
|
+
yield(example)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def draw(current_filename)
|
47
|
+
Gosu::draw_rect 0, 0, WIDTH, HEIGHT, Gosu::Color::WHITE
|
48
|
+
HEADER.draw 0, 0, 0
|
49
|
+
|
50
|
+
@buttons.each do |button|
|
51
|
+
is_current = (button.filename == current_filename)
|
52
|
+
button.draw(is_current)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def click(x, y)
|
57
|
+
index = (y - Button::TOP_Y).floor / (Button::HEIGHT + Button::SPACING)
|
58
|
+
@buttons[index].click if @buttons[index]
|
59
|
+
end
|
60
|
+
end
|
metadata
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gosu-examples
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Julian Raschke
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: gosu
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.9.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.9.0
|
27
|
+
description: The `gosu-examples` tool provides an easy way to run and inspect example
|
28
|
+
games written for the Gosu game development library.
|
29
|
+
email: julian@raschke.de
|
30
|
+
executables:
|
31
|
+
- gosu-examples
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- bin/gosu-examples
|
36
|
+
- LICENSE
|
37
|
+
- README.md
|
38
|
+
- lib/gosu-examples/example.rb
|
39
|
+
- lib/gosu-examples/sidebar.rb
|
40
|
+
- examples/chipmunk_and_rmagick.rb
|
41
|
+
- examples/chipmunk_integration.rb
|
42
|
+
- examples/cptn_ruby.rb
|
43
|
+
- examples/opengl_integration.rb
|
44
|
+
- examples/rmagick_integration.rb
|
45
|
+
- examples/tutorial.rb
|
46
|
+
- examples/welcome.rb
|
47
|
+
- examples/media/audio_formats/aiff_32bit_float.aiff
|
48
|
+
- examples/media/audio_formats/au_16bit_pcm.au
|
49
|
+
- examples/media/audio_formats/caf_be_16bit_44khz.caf
|
50
|
+
- examples/media/audio_formats/caf_le_16bit_44khz.caf
|
51
|
+
- examples/media/audio_formats/caf_le_8bit_44khz.caf
|
52
|
+
- examples/media/audio_formats/general_midi.mid
|
53
|
+
- examples/media/audio_formats/impulse_tracker.it
|
54
|
+
- examples/media/audio_formats/mp3_128k_stereo.mp3
|
55
|
+
- examples/media/audio_formats/mp3_avg_96kbit_jointstereo.mp3
|
56
|
+
- examples/media/audio_formats/ogg_vorbis.ogg
|
57
|
+
- examples/media/audio_formats/wav_16bit_pcm.wav
|
58
|
+
- examples/media/audio_formats/wav_32bit_pcm.wav
|
59
|
+
- examples/media/audio_formats/wav_4bit_ms_adpcm.wav
|
60
|
+
- examples/media/beep.wav
|
61
|
+
- examples/media/BrokenPNG.png
|
62
|
+
- examples/media/cptn_ruby.png
|
63
|
+
- examples/media/cptn_ruby_map.txt
|
64
|
+
- examples/media/Cursor.png
|
65
|
+
- examples/media/earth.png
|
66
|
+
- examples/media/explosion.wav
|
67
|
+
- examples/media/gem.png
|
68
|
+
- examples/media/header.psd
|
69
|
+
- examples/media/image_formats/test.jpg
|
70
|
+
- examples/media/image_formats/test.psd
|
71
|
+
- examples/media/JingleBells.mp3
|
72
|
+
- examples/media/JingleBells.ogg
|
73
|
+
- examples/media/landscape.svg
|
74
|
+
- examples/media/large_star.png
|
75
|
+
- examples/media/Loop.wav
|
76
|
+
- examples/media/Sample.wav
|
77
|
+
- examples/media/smoke.png
|
78
|
+
- examples/media/soldier.png
|
79
|
+
- examples/media/space.png
|
80
|
+
- examples/media/SquareTexture.png
|
81
|
+
- examples/media/star.png
|
82
|
+
- examples/media/starfighter.bmp
|
83
|
+
- examples/media/tileset.png
|
84
|
+
- examples/media/vera.ttf
|
85
|
+
- examples/media/Wallpaper.png
|
86
|
+
- examples/media/WallpaperXXL.png
|
87
|
+
- examples/media/WhiteAlpha.png
|
88
|
+
homepage: http://www.libgosu.org/
|
89
|
+
licenses: []
|
90
|
+
metadata: {}
|
91
|
+
post_install_message:
|
92
|
+
rdoc_options: []
|
93
|
+
require_paths:
|
94
|
+
- lib
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 1.8.2
|
100
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
requirements: []
|
106
|
+
rubyforge_project:
|
107
|
+
rubygems_version: 2.0.14
|
108
|
+
signing_key:
|
109
|
+
specification_version: 4
|
110
|
+
summary: Ruby examples for the Gosu library
|
111
|
+
test_files: []
|
112
|
+
has_rdoc:
|