gosu-examples 1.0.4 → 1.0.7

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.
Files changed (40) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +1 -1
  3. data/bin/gosu-examples +20 -22
  4. data/examples/chipmunk_and_rmagick.rb +25 -28
  5. data/examples/chipmunk_integration.rb +45 -48
  6. data/examples/cptn_ruby.rb +23 -26
  7. data/examples/opengl_integration.rb +61 -62
  8. data/examples/rmagick_integration.rb +87 -88
  9. data/examples/text_input.rb +157 -0
  10. data/examples/tutorial.rb +23 -26
  11. data/examples/welcome.rb +20 -23
  12. data/lib/gosu-examples/example.rb +34 -13
  13. data/lib/gosu-examples/sidebar.rb +16 -16
  14. metadata +10 -36
  15. data/examples/media/BrokenPNG.png +0 -0
  16. data/examples/media/Cursor.png +0 -0
  17. data/examples/media/JingleBells.mp3 +0 -0
  18. data/examples/media/JingleBells.ogg +0 -0
  19. data/examples/media/Loop.wav +0 -0
  20. data/examples/media/Sample.wav +0 -0
  21. data/examples/media/SquareTexture.png +0 -0
  22. data/examples/media/Wallpaper.png +0 -0
  23. data/examples/media/WallpaperXXL.png +0 -0
  24. data/examples/media/WhiteAlpha.png +0 -0
  25. data/examples/media/audio_formats/aiff_32bit_float.aiff +0 -0
  26. data/examples/media/audio_formats/au_16bit_pcm.au +0 -0
  27. data/examples/media/audio_formats/caf_be_16bit_44khz.caf +0 -0
  28. data/examples/media/audio_formats/caf_le_16bit_44khz.caf +0 -0
  29. data/examples/media/audio_formats/caf_le_8bit_44khz.caf +0 -0
  30. data/examples/media/audio_formats/general_midi.mid +0 -0
  31. data/examples/media/audio_formats/impulse_tracker.it +0 -0
  32. data/examples/media/audio_formats/mp3_128k_stereo.mp3 +0 -0
  33. data/examples/media/audio_formats/mp3_avg_96kbit_jointstereo.mp3 +0 -0
  34. data/examples/media/audio_formats/ogg_vorbis.ogg +0 -0
  35. data/examples/media/audio_formats/wav_16bit_pcm.wav +0 -0
  36. data/examples/media/audio_formats/wav_32bit_pcm.wav +0 -0
  37. data/examples/media/audio_formats/wav_4bit_ms_adpcm.wav +0 -0
  38. data/examples/media/image_formats/test.jpg +0 -0
  39. data/examples/media/image_formats/test.psd +0 -0
  40. data/examples/media/vera.ttf +0 -0
@@ -0,0 +1,157 @@
1
+ # This example demonstrates use of the TextInput class with three text field widgets.
2
+ # One can cycle through them with tab, or click into the text fields and change their contents.
3
+
4
+ # The way TextInput works is that you create an instance of it, and then assign it to the text_input
5
+ # attribute of your window.
6
+ # Until you set this attribute to nil again, the TextInput object will then build a string from user
7
+ # input that can be accessed via TextInput#text.
8
+
9
+ # The TextInput object also maintains the position of the caret, which is defined as the index of
10
+ # its right neighbour character, i.e. a carent_pos of 0 is always the left-most position, and a
11
+ # caret_pos of text.length is always the right-most position.
12
+ # There is a second attribute called selection_start that is equal to caret_pos when there is no
13
+ # selection, and otherwise defines the selected range. If you set caret_pos to a different value,
14
+ # you usually want to set selection_start as well.
15
+
16
+ # A TextInput object is purely abstract. Drawing the input field is left to the user.
17
+ # In this example, we are subclassing TextInput to add this code, but you can also work with
18
+ # composition instead of inheritance.
19
+
20
+ require "gosu"
21
+
22
+ class TextField < Gosu::TextInput
23
+ FONT = Gosu::Font.new(20)
24
+ WIDTH = 350
25
+ LENGTH_LIMIT = 20
26
+ PADDING = 5
27
+
28
+ INACTIVE_COLOR = 0xcc_666666
29
+ ACTIVE_COLOR = 0xcc_ff6666
30
+ SELECTION_COLOR = 0xcc_0000ff
31
+ CARET_COLOR = 0xff_ffffff
32
+
33
+ attr_reader :x, :y
34
+
35
+ def initialize(window, x, y)
36
+ # It's important to call the inherited constructor.
37
+ super()
38
+
39
+ @window, @x, @y = window, x, y
40
+
41
+ # Start with a self-explanatory text in each field.
42
+ self.text = "Click to edit"
43
+ end
44
+
45
+ # In this example, we use the filter method to prevent the user from entering a text that exceeds
46
+ # the length limit. However, you can also use this to blacklist certain characters, etc.
47
+ def filter(new_text)
48
+ allowed_length = [LENGTH_LIMIT - text.length, 0].max
49
+ new_text[0, allowed_length]
50
+ end
51
+
52
+ def draw(z)
53
+ # Change the background colour if this is the currently selected text field.
54
+ if @window.text_input == self
55
+ color = ACTIVE_COLOR
56
+ else
57
+ color = INACTIVE_COLOR
58
+ end
59
+ Gosu.draw_rect x - PADDING, y - PADDING, WIDTH + 2 * PADDING, height + 2 * PADDING, color, z
60
+
61
+ # Calculate the position of the caret and the selection start.
62
+ pos_x = x + FONT.text_width(self.text[0...self.caret_pos])
63
+ sel_x = x + FONT.text_width(self.text[0...self.selection_start])
64
+ sel_w = pos_x - sel_x
65
+
66
+ # Draw the selection background, if any. (If not, sel_x and pos_x will be
67
+ # the same value, making this a no-op call.)
68
+ Gosu.draw_rect sel_x, y, sel_w, height, SELECTION_COLOR, z
69
+
70
+ # Draw the caret if this is the currently selected field.
71
+ if @window.text_input == self
72
+ Gosu.draw_line pos_x, y, CARET_COLOR, pos_x, y + height, CARET_COLOR, z
73
+ end
74
+
75
+ # Finally, draw the text itself!
76
+ FONT.draw_text self.text, x, y, z
77
+ end
78
+
79
+ def height
80
+ FONT.height
81
+ end
82
+
83
+ # Hit-test for selecting a text field with the mouse.
84
+ def under_mouse?
85
+ @window.mouse_x > x - PADDING and @window.mouse_x < x + WIDTH + PADDING and
86
+ @window.mouse_y > y - PADDING and @window.mouse_y < y + height + PADDING
87
+ end
88
+
89
+ # Tries to move the caret to the position specifies by mouse_x
90
+ def move_caret_to_mouse
91
+ # Test character by character
92
+ 1.upto(self.text.length) do |i|
93
+ if @window.mouse_x < x + FONT.text_width(text[0...i])
94
+ self.caret_pos = self.selection_start = i - 1
95
+ return
96
+ end
97
+ end
98
+ # Default case: user must have clicked the right edge
99
+ self.caret_pos = self.selection_start = self.text.length
100
+ end
101
+ end
102
+
103
+ class TextInputDemo < (Example rescue Gosu::Window)
104
+ def initialize
105
+ super 640, 480
106
+ self.caption = "Text Input Demo"
107
+
108
+ text =
109
+ "This demo explains (in the source code) how to use the Gosu::TextInput API by building a little TextField class around it.
110
+
111
+ Each text field can take up to 30 characters, and you can use Tab to switch between them.
112
+
113
+ As in every example, press <b>E</b> to look at the source code."
114
+
115
+ # Remove all leading spaces so the text is left-aligned
116
+ text.gsub! /^ +/, ""
117
+
118
+ @text = Gosu::Image.from_markup text, 20, width: 540
119
+
120
+ # Set up an array of three text fields.
121
+ @text_fields = Array.new(3) { |index| TextField.new(self, 50, 300 + index * 50) }
122
+ end
123
+
124
+ def needs_cursor?
125
+ true
126
+ end
127
+
128
+ def draw
129
+ @text.draw 50, 50, 0
130
+ @text_fields.each { |tf| tf.draw(0) }
131
+ end
132
+
133
+ def button_down(id)
134
+ if id == Gosu::KB_TAB
135
+ # Tab key will not be 'eaten' by text fields; use for switching through
136
+ # text fields.
137
+ index = @text_fields.index(self.text_input) || -1
138
+ self.text_input = @text_fields[(index + 1) % @text_fields.size]
139
+ elsif id == Gosu::KB_ESCAPE
140
+ # Escape key will not be 'eaten' by text fields; use for deselecting.
141
+ if self.text_input
142
+ self.text_input = nil
143
+ else
144
+ close
145
+ end
146
+ elsif id == Gosu::MS_LEFT
147
+ # Mouse click: Select text field based on mouse position.
148
+ self.text_input = @text_fields.find { |tf| tf.under_mouse? }
149
+ # Also move caret to clicked position
150
+ self.text_input.move_caret_to_mouse unless self.text_input.nil?
151
+ else
152
+ super
153
+ end
154
+ end
155
+ end
156
+
157
+ TextInputDemo.new.show if __FILE__ == $0
data/examples/tutorial.rb CHANGED
@@ -1,7 +1,4 @@
1
- # Encoding: UTF-8
2
-
3
- require 'rubygems'
4
- require 'gosu'
1
+ require "gosu"
5
2
 
6
3
  module ZOrder
7
4
  BACKGROUND, STARS, PLAYER, UI = *0..3
@@ -9,45 +6,45 @@ end
9
6
 
10
7
  class Player
11
8
  attr_reader :score
12
-
9
+
13
10
  def initialize
14
11
  @image = Gosu::Image.new("media/starfighter.bmp")
15
12
  @beep = Gosu::Sample.new("media/beep.wav")
16
13
  @x = @y = @vel_x = @vel_y = @angle = 0.0
17
14
  @score = 0
18
15
  end
19
-
16
+
20
17
  def warp(x, y)
21
18
  @x, @y = x, y
22
19
  end
23
-
20
+
24
21
  def turn_left
25
22
  @angle -= 4.5
26
23
  end
27
-
24
+
28
25
  def turn_right
29
26
  @angle += 4.5
30
27
  end
31
-
28
+
32
29
  def accelerate
33
30
  @vel_x += Gosu.offset_x(@angle, 0.5)
34
31
  @vel_y += Gosu.offset_y(@angle, 0.5)
35
32
  end
36
-
33
+
37
34
  def move
38
35
  @x += @vel_x
39
36
  @y += @vel_y
40
37
  @x %= 640
41
38
  @y %= 480
42
-
39
+
43
40
  @vel_x *= 0.95
44
41
  @vel_y *= 0.95
45
42
  end
46
-
43
+
47
44
  def draw
48
45
  @image.draw_rot(@x, @y, ZOrder::PLAYER, @angle)
49
46
  end
50
-
47
+
51
48
  def collect_stars(stars)
52
49
  stars.reject! do |star|
53
50
  if Gosu.distance(@x, @y, star.x, star.y) < 35
@@ -63,7 +60,7 @@ end
63
60
 
64
61
  class Star
65
62
  attr_reader :x, :y
66
-
63
+
67
64
  def initialize(animation)
68
65
  @animation = animation
69
66
  @color = Gosu::Color::BLACK.dup
@@ -73,11 +70,11 @@ class Star
73
70
  @x = rand * 640
74
71
  @y = rand * 480
75
72
  end
76
-
73
+
77
74
  def draw
78
75
  img = @animation[Gosu.milliseconds / 100 % @animation.size]
79
76
  img.draw(@x - img.width / 2.0, @y - img.height / 2.0,
80
- ZOrder::STARS, 1, 1, @color, :add)
77
+ ZOrder::STARS, 1, 1, @color, :add)
81
78
  end
82
79
  end
83
80
 
@@ -85,18 +82,18 @@ class Tutorial < (Example rescue Gosu::Window)
85
82
  def initialize
86
83
  super 640, 480
87
84
  self.caption = "Tutorial Game"
88
-
89
- @background_image = Gosu::Image.new("media/space.png", :tileable => true)
90
-
85
+
86
+ @background_image = Gosu::Image.new("media/space.png", tileable: true)
87
+
91
88
  @player = Player.new
92
89
  @player.warp(320, 240)
93
-
90
+
94
91
  @star_anim = Gosu::Image::load_tiles("media/star.png", 25, 25)
95
92
  @stars = Array.new
96
-
93
+
97
94
  @font = Gosu::Font.new(20)
98
95
  end
99
-
96
+
100
97
  def update
101
98
  if Gosu.button_down? Gosu::KB_LEFT or Gosu.button_down? Gosu::GP_LEFT
102
99
  @player.turn_left
@@ -109,19 +106,19 @@ class Tutorial < (Example rescue Gosu::Window)
109
106
  end
110
107
  @player.move
111
108
  @player.collect_stars(@stars)
112
-
109
+
113
110
  if rand(100) < 4 and @stars.size < 25
114
111
  @stars.push(Star.new(@star_anim))
115
112
  end
116
113
  end
117
-
114
+
118
115
  def draw
119
116
  @background_image.draw(0, 0, ZOrder::BACKGROUND)
120
117
  @player.draw
121
118
  @stars.each { |star| star.draw }
122
- @font.draw("Score: #{@player.score}", 10, 10, ZOrder::UI, 1.0, 1.0, Gosu::Color::YELLOW)
119
+ @font.draw_text("Score: #{@player.score}", 10, 10, ZOrder::UI, 1.0, 1.0, Gosu::Color::YELLOW)
123
120
  end
124
-
121
+
125
122
  def button_down(id)
126
123
  if id == Gosu::KB_ESCAPE
127
124
  close
data/examples/welcome.rb CHANGED
@@ -1,55 +1,52 @@
1
- # Encoding: UTF-8
2
-
3
- require 'rubygems'
4
- require 'gosu'
1
+ require "gosu"
5
2
 
6
3
  WIDTH, HEIGHT = 640, 480
7
4
 
8
5
  class Welcome < (Example rescue Gosu::Window)
9
6
  PADDING = 20
10
-
7
+
11
8
  def initialize
12
9
  super WIDTH, HEIGHT
13
-
10
+
14
11
  self.caption = "Welcome!"
15
-
12
+
16
13
  text =
17
14
  "<b>Welcome to the Gosu Example Box!</b>
18
-
15
+
19
16
  This little tool lets you launch any of Gosu’s example games from the list on the right hand side of the screen.
20
-
17
+
21
18
  Every example can be run both from this tool <i>and</i> from the terminal/command line as a stand-alone Ruby script.
22
-
19
+
23
20
  Keyboard shortcuts:
24
-
21
+
25
22
  • To see the source code of an example or feature demo, press <b>E</b>.
26
23
  • To open the ‘examples’ folder, press <b>O</b>.
27
24
  • To quit this tool, press <b>Esc</b>.
28
25
  • To toggle fullscreen mode, press <b>Alt+Enter</b> (Windows, Linux) or <b>cmd+F</b> (macOS).
29
-
30
- Why not take a look at the code for this example right now? Simply press <b>S</b>."
31
-
26
+
27
+ Why not take a look at the code for this example right now? Simply press <b>E</b>."
28
+
32
29
  # Remove all leading spaces so the text is left-aligned
33
- text.gsub! /^ +/, ''
34
-
35
- @text = Gosu::Image.from_text text, 20, :width => WIDTH - 2 * PADDING
36
-
30
+ text.gsub! /^ +/, ""
31
+
32
+ @text = Gosu::Image.from_markup text, 20, width: WIDTH - 2 * PADDING
33
+
37
34
  @background = Gosu::Image.new "media/space.png"
38
35
  end
39
-
36
+
40
37
  def draw
41
38
  draw_rotating_star_backgrounds
42
-
39
+
43
40
  @text.draw PADDING, PADDING, 0
44
41
  end
45
-
42
+
46
43
  def draw_rotating_star_backgrounds
47
44
  # Disregard the math in this method, it doesn't look as good as I thought it
48
45
  # would. =(
49
-
46
+
50
47
  angle = Gosu.milliseconds / 50.0
51
48
  scale = (Gosu.milliseconds % 1000) / 1000.0
52
-
49
+
53
50
  [1, 0].each do |extra_scale|
54
51
  @background.draw_rot WIDTH * 0.5, HEIGHT * 0.75, 0, angle, 0.5, 0.5,
55
52
  scale + extra_scale, scale + extra_scale
@@ -1,57 +1,78 @@
1
1
  class Example
2
2
  attr_accessor :caption
3
3
  attr_reader :width, :height
4
-
4
+ attr_writer :parent_window
5
+
5
6
  def initialize(width, height, *options)
6
7
  @width, @height = width, height
7
8
  end
8
-
9
+
9
10
  def draw
10
11
  end
11
-
12
+
12
13
  def update
13
14
  end
14
-
15
+
15
16
  def button_down(id)
16
17
  end
17
-
18
+
18
19
  def button_up(id)
19
20
  end
20
-
21
+
21
22
  def close
22
23
  # no-op, examples cannot close the containing window.
23
24
  end
24
25
 
26
+ def mouse_x
27
+ @parent_window && @parent_window.mouse_x
28
+ end
29
+
30
+ def mouse_y
31
+ @parent_window && @parent_window.mouse_y
32
+ end
33
+
34
+ def text_input
35
+ @parent_window && @parent_window.text_input
36
+ end
37
+
38
+ def text_input=(text_input)
39
+ @parent_window && @parent_window.text_input = text_input
40
+ end
41
+
25
42
  def self.current_source_file
26
43
  @current_source_file
27
44
  end
28
-
45
+
29
46
  def self.current_source_file=(current_source_file)
30
47
  @current_source_file = current_source_file
31
48
  end
32
-
49
+
33
50
  def self.inherited(subclass)
34
51
  @@examples ||= {}
35
52
  @@examples[subclass] = self.current_source_file
36
53
  end
37
-
54
+
38
55
  def self.examples
39
56
  @@examples.keys
40
57
  end
41
-
58
+
42
59
  def self.source_file
43
60
  @@examples[self]
44
61
  end
45
-
62
+
63
+ def self.initial_example
64
+ @@examples.keys.find { |cls| cls.name.end_with? "::Welcome" }
65
+ end
66
+
46
67
  def self.load_examples(pattern)
47
- Dir.glob(pattern) do |file|
68
+ Dir.glob(pattern) do |file|
48
69
  begin
49
70
  # Remember which file we are loading.
50
71
  Example.current_source_file = File.expand_path(file)
51
72
 
52
73
  # Load the example in a sandbox module (second parameter to load()). This way, examples can
53
74
  # define classes and constants with the same names, and they will not collide.
54
- #
75
+ #
55
76
  # load() does not let us refer to the anonymous module it creates, but we can enumerate all
56
77
  # loaded examples using Example.examples thanks to the "inherited" callback above.
57
78
  load file, true
@@ -2,57 +2,57 @@ class Sidebar
2
2
  WIDTH = 300
3
3
  HEIGHT = 600
4
4
  FONT = Gosu::Font.new(20)
5
- HEADER = Gosu::Image.new("media/header@2x.psd", :tileable => true)
6
-
5
+ HEADER = Gosu::Image.new("media/header@2x.psd", tileable: true)
6
+
7
7
  class Button
8
8
  HEIGHT = 25
9
9
  SPACING = 5
10
10
  TOP_Y = HEADER.height / 2 + 15
11
-
11
+
12
12
  attr_reader :filename
13
-
13
+
14
14
  def initialize(top, filename, &handler)
15
15
  @top, @filename, @handler = top, filename, handler
16
16
  end
17
-
17
+
18
18
  def draw(is_current)
19
19
  text_color = Gosu::Color::BLACK
20
-
20
+
21
21
  if is_current
22
- Gosu.draw_rect 0, @top, Sidebar::WIDTH, HEIGHT, 0xff_1565e5 if is_current
22
+ Gosu.draw_rect 0, @top, Sidebar::WIDTH, HEIGHT, 0xff_1565e5
23
23
  text_color = Gosu::Color::WHITE
24
24
  end
25
-
26
- FONT.draw File.basename(@filename), 13, @top + 2, 0, 1, 1, text_color
25
+
26
+ FONT.draw_text File.basename(@filename), 13, @top + 2, 0, 1, 1, text_color
27
27
  end
28
-
28
+
29
29
  def click
30
30
  @handler.call
31
31
  end
32
32
  end
33
-
33
+
34
34
  def initialize
35
35
  y = Button::TOP_Y - Button::HEIGHT - Button::SPACING
36
-
36
+
37
37
  @buttons = Example.examples.map do |example|
38
38
  y += (Button::HEIGHT + Button::SPACING)
39
-
39
+
40
40
  Button.new(y, example.source_file) do
41
41
  yield(example)
42
42
  end
43
43
  end
44
44
  end
45
-
45
+
46
46
  def draw(current_filename)
47
47
  Gosu.draw_rect 0, 0, WIDTH, HEIGHT, Gosu::Color::WHITE
48
48
  HEADER.draw 0, 0, 0, 0.5, 0.5
49
-
49
+
50
50
  @buttons.each do |button|
51
51
  is_current = (button.filename == current_filename)
52
52
  button.draw(is_current)
53
53
  end
54
54
  end
55
-
55
+
56
56
  def click(x, y)
57
57
  index = (y - Button::TOP_Y).floor / (Button::HEIGHT + Button::SPACING)
58
58
  @buttons[index].click if @buttons[index]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gosu-examples
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Raschke
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-22 00:00:00.000000000 Z
11
+ date: 2023-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gosu
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.11.0
19
+ version: 1.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.11.0
26
+ version: 1.0.0
27
27
  description: The `gosu-examples` tool provides an easy way to run and inspect example
28
28
  games written for the Gosu game development library.
29
29
  email: julian@raschke.de
@@ -38,29 +38,6 @@ files:
38
38
  - examples/chipmunk_and_rmagick.rb
39
39
  - examples/chipmunk_integration.rb
40
40
  - examples/cptn_ruby.rb
41
- - examples/media/BrokenPNG.png
42
- - examples/media/Cursor.png
43
- - examples/media/JingleBells.mp3
44
- - examples/media/JingleBells.ogg
45
- - examples/media/Loop.wav
46
- - examples/media/Sample.wav
47
- - examples/media/SquareTexture.png
48
- - examples/media/Wallpaper.png
49
- - examples/media/WallpaperXXL.png
50
- - examples/media/WhiteAlpha.png
51
- - examples/media/audio_formats/aiff_32bit_float.aiff
52
- - examples/media/audio_formats/au_16bit_pcm.au
53
- - examples/media/audio_formats/caf_be_16bit_44khz.caf
54
- - examples/media/audio_formats/caf_le_16bit_44khz.caf
55
- - examples/media/audio_formats/caf_le_8bit_44khz.caf
56
- - examples/media/audio_formats/general_midi.mid
57
- - examples/media/audio_formats/impulse_tracker.it
58
- - examples/media/audio_formats/mp3_128k_stereo.mp3
59
- - examples/media/audio_formats/mp3_avg_96kbit_jointstereo.mp3
60
- - examples/media/audio_formats/ogg_vorbis.ogg
61
- - examples/media/audio_formats/wav_16bit_pcm.wav
62
- - examples/media/audio_formats/wav_32bit_pcm.wav
63
- - examples/media/audio_formats/wav_4bit_ms_adpcm.wav
64
41
  - examples/media/beep.wav
65
42
  - examples/media/cptn_ruby.png
66
43
  - examples/media/cptn_ruby_map.txt
@@ -68,8 +45,6 @@ files:
68
45
  - examples/media/explosion.wav
69
46
  - examples/media/gem.png
70
47
  - examples/media/header@2x.psd
71
- - examples/media/image_formats/test.jpg
72
- - examples/media/image_formats/test.psd
73
48
  - examples/media/landscape.svg
74
49
  - examples/media/large_star.png
75
50
  - examples/media/smoke.png
@@ -78,9 +53,9 @@ files:
78
53
  - examples/media/star.png
79
54
  - examples/media/starfighter.bmp
80
55
  - examples/media/tileset.png
81
- - examples/media/vera.ttf
82
56
  - examples/opengl_integration.rb
83
57
  - examples/rmagick_integration.rb
58
+ - examples/text_input.rb
84
59
  - examples/tutorial.rb
85
60
  - examples/welcome.rb
86
61
  - lib/gosu-examples/example.rb
@@ -88,7 +63,7 @@ files:
88
63
  homepage: http://www.libgosu.org/
89
64
  licenses: []
90
65
  metadata: {}
91
- post_install_message:
66
+ post_install_message:
92
67
  rdoc_options: []
93
68
  require_paths:
94
69
  - lib
@@ -96,16 +71,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
96
71
  requirements:
97
72
  - - ">="
98
73
  - !ruby/object:Gem::Version
99
- version: 1.8.2
74
+ version: '0'
100
75
  required_rubygems_version: !ruby/object:Gem::Requirement
101
76
  requirements:
102
77
  - - ">="
103
78
  - !ruby/object:Gem::Version
104
79
  version: '0'
105
80
  requirements: []
106
- rubyforge_project:
107
- rubygems_version: 2.6.8
108
- signing_key:
81
+ rubygems_version: 3.4.19
82
+ signing_key:
109
83
  specification_version: 4
110
84
  summary: Ruby examples for the Gosu library
111
85
  test_files: []
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file