gosu-examples 1.0.3
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.
- 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:
|