r2d-takaokouji 0.0.0.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/bin/r2d ADDED
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'r2d'
4
+
5
+ case ARGV[0]
6
+ when 'console'
7
+
8
+ require 'io/wait'
9
+ require 'open3'
10
+ require 'readline'
11
+
12
+ path = __dir__.sub(' ', '\ ') << "/../lib/console.rb"
13
+
14
+ stdin, stdout, stderr, wait_thr = Open3.popen3("ruby #{path}")
15
+
16
+ loop do
17
+ str = Readline.readline(">> ", true)
18
+
19
+ if str == "exit"
20
+ Process.kill 'INT', wait_thr.pid
21
+ wait_thr.value
22
+ exit
23
+ else
24
+ stdin.puts str
25
+ end
26
+
27
+ puts stdout.gets
28
+ while stdout.ready? do
29
+ puts stdout.gets
30
+ end
31
+
32
+ end
33
+ else
34
+ puts "`r2d console` is the only available command"
35
+ end
@@ -0,0 +1,55 @@
1
+ require 'io/wait'
2
+ require 'r2d'
3
+
4
+ class String
5
+ def error
6
+ # red => \e[0;31
7
+ # red/bold => \e[1;31m
8
+ "\e[0;31m#{self}\e[0m"
9
+ end
10
+ def task
11
+ "\e[1;34m#{self}\e[0m"
12
+ end
13
+ def success
14
+ "\e[0;32m#{self}\e[0m"
15
+ end
16
+ end
17
+
18
+ window width: 640, height: 480
19
+
20
+ _activity = Square.new(630, 470, 10, 'white')
21
+
22
+ _c = 0
23
+ _switch = true
24
+
25
+ update do
26
+
27
+ if _switch
28
+ _c += 2
29
+ if _c > 255
30
+ _switch = false
31
+ end
32
+ else
33
+ _c -= 2
34
+ if _c < 0
35
+ _switch = true
36
+ end
37
+ end
38
+
39
+ _activity.color = [255, 255, 255, _c]
40
+
41
+ if STDIN.ready?
42
+ str = STDIN.gets
43
+ begin
44
+ r = eval(str, TOPLEVEL_BINDING)
45
+ STDOUT.puts r.to_s
46
+ STDOUT.flush
47
+ rescue Exception => e
48
+ STDOUT.puts e.to_s.error
49
+ STDOUT.flush
50
+ end
51
+ end
52
+
53
+ end
54
+
55
+ window :show
@@ -0,0 +1,19 @@
1
+ # r2d.rb
2
+
3
+ require 'r2d/version'
4
+ require 'r2d/adapters'
5
+ require 'r2d/adapters/gosu'
6
+ require 'r2d/window'
7
+ require 'r2d/color'
8
+ require 'r2d/quad'
9
+ require 'r2d/rectangle'
10
+ require 'r2d/square'
11
+ require 'r2d/line'
12
+ require 'r2d/triangle'
13
+ require 'r2d/circle'
14
+ require 'r2d/text'
15
+ require 'r2d/image'
16
+ require 'r2d/song'
17
+ require 'r2d/sound'
18
+ require 'r2d/exceptions'
19
+ require 'r2d/helpers'
@@ -0,0 +1,45 @@
1
+ # adapters.rb
2
+
3
+ module R2D
4
+ module Adapters
5
+
6
+ @active = nil
7
+
8
+ def self.create(window, kind)
9
+ if !@active
10
+ case kind
11
+ when :gosu
12
+ @active = Gosu
13
+ @active.create_window(window)
14
+ end
15
+ true
16
+ else
17
+ false
18
+ end
19
+ end
20
+
21
+ def self.show
22
+ @active.show_window
23
+ end
24
+
25
+ def self.key_lookup(key); Gosu.key_id(key) end
26
+
27
+ def self.get_color(r, g, b, a); Gosu.get_color(r, g, b, a) end
28
+
29
+ def self.mouse_x; Gosu.mouse_x end
30
+ def self.mouse_y; Gosu.mouse_y end
31
+
32
+ # Fix these:
33
+
34
+ def self.song(path); @active.song(path) end
35
+
36
+ def self.current_song; @active.current_song end
37
+
38
+ def self.sound(path); @active.sound(path) end
39
+
40
+ def self.image(path); @active.image(path) end
41
+
42
+ def self.text(h=20, font='default'); @active.text(h, font) end
43
+
44
+ end
45
+ end
@@ -0,0 +1,158 @@
1
+ # gosu.rb
2
+
3
+ require 'gosu'
4
+
5
+ module R2D
6
+ module Adapters
7
+ module Gosu
8
+
9
+ @gosu_window = nil
10
+
11
+ def self.create_window(window)
12
+ @gosu_window = GosuWindow.new(window)
13
+ end
14
+
15
+ def self.show_window
16
+ @gosu_window.show
17
+ end
18
+
19
+ def self.mouse_x; @gosu_window.mouse_x end
20
+ def self.mouse_y; @gosu_window.mouse_y end
21
+
22
+ def self.get_color(r, g, b, a); ::Gosu::Color.argb(a, r, g, b) end
23
+
24
+ def self.song(path); ::Gosu::Song.new(@gosu_window, path) end
25
+
26
+ def self.current_song; ::Gosu::Song.current_song end
27
+
28
+ def self.sound(path); ::Gosu::Sample.new(@gosu_window, path) end
29
+
30
+ def self.image(path); ::Gosu::Image.new(@gosu_window, path, true) end
31
+
32
+ def self.text(h, font)
33
+ if font == 'default' then font = ::Gosu::default_font_name end
34
+ ::Gosu::Font.new(@gosu_window, font, h)
35
+ end
36
+
37
+ def self.key_id(key)
38
+ case key
39
+ when 'up'
40
+ id = ::Gosu::KbUp
41
+ when 'down'
42
+ id = ::Gosu::KbDown
43
+ when 'left'
44
+ id = ::Gosu::KbLeft
45
+ when 'right'
46
+ id = ::Gosu::KbRight
47
+
48
+ when 'left_alt'
49
+ id = ::Gosu::KbLeftAlt
50
+ when 'right_alt'
51
+ id = ::Gosu::KbRightAlt
52
+ when 'left_control'
53
+ id = ::Gosu::KbLeftControl
54
+ when 'right_control'
55
+ id = ::Gosu::KbRightControl
56
+ when 'left_shift'
57
+ id = ::Gosu::KbLeftShift
58
+ when 'right_shift'
59
+ id = ::Gosu::KbRightShift
60
+
61
+ when 'backspace'
62
+ id = ::Gosu::KbBackspace
63
+ when 'delete'
64
+ id = ::Gosu::KbDelete
65
+ when 'space'
66
+ id = ::Gosu::KbSpace
67
+ when 'tab'
68
+ id = ::Gosu::KbTab
69
+ when 'return'
70
+ id = ::Gosu::KbReturn
71
+
72
+ when 'mouse_left'
73
+ id = ::Gosu::MsLeft
74
+ when 'mouse_right'
75
+ id = ::Gosu::MsRight
76
+
77
+ when ('a'..'z') || ('A'..'Z') || ('0'..'9')
78
+ id = @gosu_window.char_to_button_id(key)
79
+ else
80
+ raise Error, "The key '#{key}' is not valid!"
81
+ end
82
+ end
83
+
84
+ class GosuWindow < ::Gosu::Window
85
+
86
+ attr_accessor :window
87
+
88
+ def initialize(window)
89
+ # super 800, 600, false
90
+ super window.w, window.h, window.fs
91
+
92
+ self.caption = window.title
93
+ @cursor = window.cursor
94
+ @window = window
95
+ end
96
+
97
+ # Gosu Methods
98
+
99
+ def needs_cursor?; @cursor end
100
+
101
+ def button_down(id)
102
+ if id == ::Gosu::KbEscape
103
+ close
104
+ elsif @window.on_keys.has_key? id
105
+ @window.on_keys[id].call
106
+ end
107
+ end
108
+
109
+ def update
110
+ @window.update_proc.call
111
+
112
+ @window.keys_down.each_key do |id|
113
+ if button_down? id
114
+ @window.keys_down[id].call
115
+ end
116
+ end
117
+ end
118
+
119
+ def draw
120
+ @window.objects.each do |o|
121
+ case o
122
+ when Line
123
+ draw_quad(
124
+ o.qx1, o.qy1, o.c1.adapter,
125
+ o.qx2, o.qy2, o.c2.adapter,
126
+ o.qx3, o.qy3, o.c3.adapter,
127
+ o.qx4, o.qy4, o.c4.adapter
128
+ )
129
+ when Triangle
130
+ draw_triangle(
131
+ o.x1, o.y1, o.c1.adapter,
132
+ o.x2, o.y2, o.c2.adapter,
133
+ o.x3, o.y3, o.c3.adapter
134
+ )
135
+ when Quad
136
+ draw_quad(
137
+ o.x1, o.y1, o.c1.adapter,
138
+ o.x2, o.y2, o.c2.adapter,
139
+ o.x3, o.y3, o.c3.adapter,
140
+ o.x4, o.y4, o.c4.adapter
141
+ )
142
+ when Image
143
+ # .draw(x, y, z, factor_x=1, factor_y=1, color=0xffffffff, mode=:default)
144
+ o.adapter.draw(o.x, o.y, 0, o.f_x, o.f_y)
145
+ when Text
146
+ # .draw(text, x, y, z, factor_x=1, factor_y=1, color=0xffffffff, mode=:default)
147
+ o.adapter.draw(o.content, o.x, o.y, 0, 1, 1, o.c.adapter)
148
+ else
149
+ raise Error, "Cannot draw type '#{o.class}'"
150
+ end
151
+ end
152
+ end
153
+
154
+ end
155
+
156
+ end
157
+ end
158
+ end
@@ -0,0 +1,35 @@
1
+ # circle.rb
2
+ # https://gist.github.com/661266
3
+
4
+ class Circle
5
+ attr_reader :columns, :rows
6
+
7
+ def initialize radius
8
+ @columns = @rows = radius * 2
9
+ lower_half = (0...radius).map do |y|
10
+ x = Math.sqrt(radius**2 - y**2).round
11
+ right_half = "#{"\xff" * x}#{"\x00" * (radius - x)}"
12
+ "#{right_half.reverse}#{right_half}"
13
+ end.join
14
+ @blob = lower_half.reverse + lower_half
15
+ @blob.gsub!(/./) { |alpha| "\xff\xff\xff#{alpha}"}
16
+ end
17
+
18
+ def to_blob
19
+ @blob
20
+ end
21
+ end
22
+
23
+ # class TestWin < Gosu::Window
24
+ # def initialize
25
+ # super 400, 400, false
26
+ #
27
+ # @img = Gosu::Image.new(self, Circle.new(200), false)
28
+ # end
29
+ #
30
+ # def draw
31
+ # @img.draw 0, 0, 0
32
+ # end
33
+ # end
34
+ #
35
+ # TestWin.new.show
@@ -0,0 +1,48 @@
1
+ # color.rb
2
+
3
+ module R2D
4
+ class Color
5
+
6
+ attr_reader :r, :g, :b, :a, :adapter
7
+
8
+ def initialize(c)
9
+ case c
10
+ when "red"
11
+ @r, @g, @b, @a = 255, 0, 0, 255
12
+ when "green"
13
+ @r, @g, @b, @a = 0, 255, 0, 255
14
+ when "blue"
15
+ @r, @g, @b, @a = 0, 0, 255, 255
16
+ when "black"
17
+ @r, @g, @b, @a = 0, 0, 0, 255
18
+ when "white"
19
+ @r, @g, @b, @a = 255, 255, 255, 255
20
+ when "yellow"
21
+ @r, @g, @b, @a = 255, 255, 0, 255
22
+ when "orange"
23
+ @r, @g, @b, @a = 255, 150, 0, 255
24
+ when "purple"
25
+ @r, @g, @b, @a = 150, 30, 150, 255
26
+ when "random"
27
+ @r, @g, @b, @a = rand(0..255), rand(0..255), rand(0..255), 255
28
+ when Array
29
+ @r, @g = to_val(c[0]), to_val(c[1])
30
+ @b, @a = to_val(c[2]), to_val(c[3])
31
+ else
32
+ raise Error, "Color does not exist!"
33
+ end
34
+
35
+ @adapter = R2D::Adapters.get_color(r, g, b, a)
36
+ end
37
+
38
+ private
39
+
40
+ def to_val(n)
41
+ if n.class == Fixnum
42
+ return n
43
+ elsif n.class == Float
44
+ return (n * 255).to_i
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,12 @@
1
+ # exceptions.rb
2
+
3
+ module R2D
4
+ class Error < StandardError
5
+ def initialize(msg)
6
+ super(msg)
7
+ # puts msg
8
+ # puts "Occurred in:"
9
+ # puts " " + caller.last, "\n"
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,48 @@
1
+ # helpers.rb
2
+
3
+ module R2D
4
+ module Helpers
5
+
6
+ def mouse_x
7
+ Adapters.mouse_x
8
+ end
9
+
10
+ def mouse_y
11
+ Adapters.mouse_y
12
+ end
13
+
14
+ def on_key(key, &block)
15
+ @current.on_key(key, block)
16
+ end
17
+
18
+ def key_down?(key)
19
+ @current.key_down?(key)
20
+ end
21
+
22
+ def key_down(key, &block)
23
+ @current.add_key_down(key, block)
24
+ end
25
+
26
+ def update(&block)
27
+ @current.update(block)
28
+ end
29
+
30
+ def window(opts={})
31
+ case opts
32
+ when :show
33
+ @current.show
34
+ when :clear
35
+ @current.clear
36
+ else
37
+ @current = Window.new(
38
+ w: opts[:width] || 640,
39
+ h: opts[:height] || 480,
40
+ bg: opts[:background],
41
+ fs: opts[:fullscreen] || false
42
+ )
43
+ end
44
+ end
45
+ end
46
+ end
47
+
48
+ include R2D::Helpers
@@ -0,0 +1,39 @@
1
+ # image.rb
2
+
3
+ class Image
4
+
5
+ attr_accessor :x, :y
6
+ attr_reader :width, :height, :f_x, :f_y
7
+
8
+ def initialize(x, y, path, visible=true)
9
+ @x, @y, @path = x, y, path
10
+ @f_x, @f_y = 1, 1
11
+ @image = R2D::Adapters.image(path)
12
+ @o_w, @o_h = @image.width, @image.height
13
+ @width, @height = @o_w, @o_h
14
+ if visible then add end
15
+ end
16
+
17
+ def width=(w)
18
+ @f_x = w / @o_w.to_f
19
+ @width = w
20
+ end
21
+
22
+ def height=(h)
23
+ @f_y = h / @o_h.to_f
24
+ @height = h
25
+ end
26
+
27
+ def add
28
+ R2D::Window.add(self)
29
+ end
30
+
31
+ def remove
32
+ R2D::Window.remove(self)
33
+ end
34
+
35
+ def adapter
36
+ @image
37
+ end
38
+
39
+ end
@@ -0,0 +1,77 @@
1
+ # line.rb
2
+
3
+ class Line
4
+
5
+ attr_reader :x1, :y1, :x2, :y2, :w, :color,
6
+ :qx1, :qy1, :qx2, :qy2, :qx3, :qy3, :qx4, :qy4,
7
+ :c1, :c2, :c3, :c4
8
+
9
+ def initialize(x1, y1, x2, y2, w, c="white", visible=true)
10
+ @x1, @y1, @x2, @y2, @w, @color = x1, y1, x2, y2, w, c
11
+ update_coords(x1, y1, x2, y2, w)
12
+ update_color(c)
13
+ if visible then add end
14
+ end
15
+
16
+ def x1=(x1)
17
+ @x1 = x1
18
+ update_coords(x1, @y1, @x2, @y2, @w)
19
+ end
20
+
21
+ def y1=(y1)
22
+ @y1 = y1
23
+ update_coords(@x1, y1, @x2, @y2, @w)
24
+ end
25
+
26
+ def x2=(x2)
27
+ @x2 = x2
28
+ update_coords(@x1, @y1, x2, @y2, @w)
29
+ end
30
+
31
+ def y2=(y2)
32
+ @y2 = y2
33
+ update_coords(@x1, @y1, @x2, y2, @w)
34
+ end
35
+
36
+ def w=(w)
37
+ @w = w
38
+ update_coords(@x1, @y1, @x2, @y2, w)
39
+ end
40
+
41
+ def color=(c)
42
+ @color = c
43
+ update_color(c)
44
+ end
45
+
46
+ def add
47
+ R2D::Window.add(self)
48
+ end
49
+
50
+ def remove
51
+ R2D::Window.remove(self)
52
+ end
53
+
54
+ def show; add end
55
+ def hide; remove end
56
+
57
+ private
58
+
59
+ def update_coords(x1, y1, x2, y2, w)
60
+ @qx1 = x1
61
+ @qy1 = y1 - w/2
62
+ @qx2 = x2
63
+ @qy2 = y2 - w/2
64
+ @qx3 = x1
65
+ @qy3 = y1 + w/2
66
+ @qx4 = x2
67
+ @qy4 = y2 + w/2
68
+ end
69
+
70
+ def update_color(c)
71
+ @c1 = R2D::Color.new(c)
72
+ @c2 = R2D::Color.new(c)
73
+ @c3 = R2D::Color.new(c)
74
+ @c4 = R2D::Color.new(c)
75
+ end
76
+
77
+ end
@@ -0,0 +1,42 @@
1
+ # quad.rb
2
+
3
+ class Quad
4
+ # x1,y1 == top left
5
+ # x2,y2 == top right
6
+ # x3,y3 == bottom left
7
+ # x4,y4 == bottom right
8
+ attr_reader :color,
9
+ :x1, :y1, :c1,
10
+ :x2, :y2, :c2,
11
+ :x3, :y3, :c3,
12
+ :x4, :y4, :c4
13
+
14
+ def initialize(x1, y1, x2, y2, x3, y3, x4, y4, c="white", visible=true)
15
+ @x1, @y1, @x2, @y2, @x3, @y3, @x4, @y4 = x1, y1, x2, y2, x3, y3, x4, y4
16
+ @color = c
17
+ update_color(c)
18
+ if visible then add end
19
+ end
20
+
21
+ def color=(c)
22
+ @color = c
23
+ update_color(c)
24
+ end
25
+
26
+ def add
27
+ R2D::Window.add(self)
28
+ end
29
+
30
+ def remove
31
+ R2D::Window.remove(self)
32
+ end
33
+
34
+ private
35
+
36
+ def update_color(c)
37
+ @c1 = R2D::Color.new(c)
38
+ @c2 = R2D::Color.new(c)
39
+ @c3 = R2D::Color.new(c)
40
+ @c4 = R2D::Color.new(c)
41
+ end
42
+ end
@@ -0,0 +1,95 @@
1
+ # rectangle.rb
2
+
3
+ class Rectangle < Quad
4
+
5
+ attr_reader :x, :y, :width, :height
6
+
7
+ def initialize(x, y, w, h, c="white", visible=true)
8
+ @x, @y, @width, @height, @color = x, y, w, h, c
9
+ update_coords(x, y, w, h)
10
+ update_color(c)
11
+ if visible then add end
12
+ end
13
+
14
+ def x=(x)
15
+ @x = @x1 = x
16
+ @x2 = x + @width
17
+ @x3 = x
18
+ @x4 = x + @width
19
+ end
20
+
21
+ def y=(y)
22
+ @y = @y1 = y
23
+ @y2 = y
24
+ @y3 = y + @height
25
+ @y4 = y + @height
26
+ end
27
+
28
+ def width=(w)
29
+ @width = w
30
+ update_coords(@x, @y, w, @height)
31
+ end
32
+
33
+ def height=(h)
34
+ @height = h
35
+ update_coords(@x, @y, @width, h)
36
+ end
37
+
38
+ def gradient=(g)
39
+ if g[:top]
40
+ # r, g, b, a = R2D::Color.rgba(g[:top])
41
+ # @c1 = @c2 = R2D::Window.get_color(r, g, b, a)
42
+ end
43
+
44
+ p g.class
45
+
46
+ # if g[:bottom]
47
+ # r, g, b, a = R2D::Color.rgba(g[:bottom])
48
+ # @c3 = @c4 = R2D::Window.get_color(r, g, b, a)
49
+ # end
50
+
51
+ # if g[:left]
52
+ # r, g, b, a = R2D::Color.rgba(g[:left])
53
+ # @c1 = @c3 = R2D::Window.get_color(r, g, b, a)
54
+ # end
55
+
56
+ # if g[:right]
57
+ # r, g, b, a = R2D::Color.rgba(g[:right])
58
+ # @c2 = @c4 = R2D::Window.get_color(r, g, b, a)
59
+ # end
60
+
61
+ # if g[:top_left]
62
+ # r, g, b, a = R2D::Color.rgba(g[:top_left])
63
+ # @c1 = R2D::Window.get_color(r, g, b, a)
64
+ # end
65
+
66
+ # if g[:top_right]
67
+ # r, g, b, a = R2D::Color.rgba(g[:top_right])
68
+ # @c2 = R2D::Window.get_color(r, g, b, a)
69
+ # end
70
+
71
+ # if g[:bottom_left]
72
+ # r, g, b, a = R2D::Color.rgba(g[:bottom_left])
73
+ # @c3 = R2D::Window.get_color(r, g, b, a)
74
+ # end
75
+
76
+ # if g[:bottom_right]
77
+ # r, g, b, a = R2D::Color.rgba(g[:bottom_right])
78
+ # @c4 = R2D::Window.get_color(r, g, b, a)
79
+ # end
80
+ end
81
+
82
+ private
83
+
84
+ def update_coords(x, y, w, h)
85
+ @x1 = x
86
+ @y1 = y
87
+ @x2 = x + w
88
+ @y2 = y
89
+ @x3 = x
90
+ @y3 = y + h
91
+ @x4 = x + w
92
+ @y4 = y + h
93
+ end
94
+
95
+ end
@@ -0,0 +1,37 @@
1
+ # song.rb
2
+
3
+ class Song
4
+
5
+ def initialize(path)
6
+ @song = R2D::Adapters.song(path)
7
+ end
8
+
9
+ def play
10
+ @song.play
11
+ end
12
+
13
+ def loop
14
+ @song.play(true)
15
+ end
16
+
17
+ def pause
18
+ @song.pause
19
+ end
20
+
21
+ def playing?
22
+ @song.playing?
23
+ end
24
+
25
+ def paused?
26
+ @song.paused?
27
+ end
28
+
29
+ def stop
30
+ @song.stop
31
+ end
32
+
33
+ def volume
34
+ @song.volume
35
+ end
36
+
37
+ end
@@ -0,0 +1,37 @@
1
+ # sound.rb
2
+
3
+ class Sound
4
+
5
+ def initialize(path)
6
+ @sound = R2D::Adapters.sound(path)
7
+ end
8
+
9
+ def play
10
+ @sound.play
11
+ end
12
+
13
+ def play_loop
14
+ @sound.play(true)
15
+ end
16
+
17
+ def pause
18
+ @sound.pause
19
+ end
20
+
21
+ def playing?
22
+ @sound.playing?
23
+ end
24
+
25
+ def paused?
26
+ @sound.paused?
27
+ end
28
+
29
+ def stop
30
+ @sound.stop
31
+ end
32
+
33
+ def volume
34
+ @sound.volume
35
+ end
36
+
37
+ end
@@ -0,0 +1,20 @@
1
+ # square.rb
2
+
3
+ class Square < Rectangle
4
+
5
+ attr_reader :size
6
+
7
+ def initialize(x=0, y=0, s=100, c="white", visible=true)
8
+ @x, @y, @color = x, y, c
9
+ @width = @height = @size = s
10
+ update_coords(x, y, s, s)
11
+ update_color(c)
12
+ if visible then add end
13
+ end
14
+
15
+ def size=(s)
16
+ self.width = self.height = @size = s
17
+ end
18
+
19
+ private :width=, :height=
20
+ end
@@ -0,0 +1,42 @@
1
+ # text.rb
2
+
3
+ class Text
4
+
5
+ attr_accessor :x, :y
6
+ attr_reader :h, :content, :color, :c
7
+
8
+ def initialize(x=0, y=0, h=50, content="Hello World!", c="white", visible=true)
9
+ @x, @y, @h, @content, @color = x, y, h, content, c
10
+ update_color(c)
11
+ @text = R2D::Adapters.text(h)
12
+ if visible then add end
13
+ end
14
+
15
+ def color=(c)
16
+ @color = c
17
+ update_color(c)
18
+ end
19
+
20
+ def content=(c)
21
+ @content = c
22
+ end
23
+
24
+ def add
25
+ R2D::Window.add(self)
26
+ end
27
+
28
+ def remove
29
+ R2D::Window.remove(self)
30
+ end
31
+
32
+ def adapter
33
+ @text
34
+ end
35
+
36
+ private
37
+
38
+ def update_color(c)
39
+ @c = R2D::Color.new(c)
40
+ end
41
+
42
+ end
@@ -0,0 +1,41 @@
1
+ # triangle.rb
2
+
3
+ class Triangle
4
+
5
+ attr_accessor :x1, :y1, :c1,
6
+ :x2, :y2, :c2,
7
+ :x3, :y3, :c3
8
+ attr_reader :color
9
+
10
+ def initialize(x1, y1, x2, y2, x3, y3, c="white", visible=true)
11
+ @x1, @y1 = x1, y1
12
+ @x2, @y2 = x2, y2
13
+ @x3, @y3 = x3, y3
14
+ @color = c
15
+ update_color(c)
16
+ if visible then add end
17
+ end
18
+
19
+ def color=(c)
20
+ update_color(c)
21
+ @color = c
22
+ end
23
+
24
+ def add
25
+ R2D::Window.add(self)
26
+ end
27
+
28
+ def remove
29
+ R2D::Window.remove(self)
30
+ end
31
+
32
+ private
33
+
34
+ def update_color(c)
35
+ @c1 = R2D::Color.new(c)
36
+ @c2 = R2D::Color.new(c)
37
+ @c3 = R2D::Color.new(c)
38
+ end
39
+
40
+ end
41
+
@@ -0,0 +1,5 @@
1
+ # version.rb
2
+
3
+ module R2D
4
+ VERSION = '0.0.0.0'
5
+ end
@@ -0,0 +1,92 @@
1
+ # window.rb
2
+
3
+ module R2D
4
+ class Window
5
+
6
+ attr_accessor :w, :h, :title, :bg, :cursor, :fs
7
+ attr_reader :objects, :on_keys, :keys_down, :update_proc
8
+
9
+ def initialize(options = {})
10
+ options = options.merge({w: 640, h: 480, title: "R2D", bg: nil, cursor: true, fs: false})
11
+ @w, @h, @title, @bg, @cursor, @fs, =
12
+ options[:w], options[:h], options[:title], options[:bg], options[:cursor], options[:fs]
13
+
14
+ @objects = []
15
+ @on_keys = {}
16
+ @keys_down = {}
17
+ @update_proc = Proc.new {}
18
+
19
+ Adapters.create(self, :gosu)
20
+
21
+ @@current = self
22
+ end
23
+
24
+ def self.add(o)
25
+ @@current.add(o)
26
+ end
27
+
28
+ def self.remove(o)
29
+ @@current.remove(o)
30
+ end
31
+
32
+ def add(o)
33
+ if !@objects.include?(o)
34
+ @objects.push(o)
35
+ true
36
+ else
37
+ false
38
+ end
39
+ end
40
+
41
+ def remove(o)
42
+ if i = @objects.index(o)
43
+ @objects.slice!(i)
44
+ true
45
+ else
46
+ false
47
+ end
48
+ end
49
+
50
+ def clear
51
+ @objects.clear
52
+ end
53
+
54
+ def add_on_key(key, proc)
55
+ @on_keys[Adapters.key_lookup(key)] = proc
56
+ true
57
+ end
58
+
59
+ def key_down?(key)
60
+ button_down?(Adapters.key_lookup(key))
61
+ true
62
+ end
63
+
64
+ def add_key_down(key, proc)
65
+ @keys_down[Adapters.key_lookup(key)] = proc
66
+ true
67
+ end
68
+
69
+ def update(block)
70
+ @update_proc = block
71
+ true
72
+ end
73
+
74
+ def on_key(key, block)
75
+ add_on_key(key, block)
76
+ true
77
+ end
78
+
79
+ def mouse_x
80
+ Adapters.mouse_x
81
+ end
82
+
83
+ def mouse_y
84
+ Adapters.mouse_y
85
+ end
86
+
87
+ def show
88
+ Adapters.show
89
+ end
90
+
91
+ end
92
+ end
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: r2d-takaokouji
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Kouji Takao
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-07-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: gosu
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.7.47.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.7.47.1
30
+ description: ! 'R2D original: https://github.com/blacktm/r2d. This is temporary gem.'
31
+ email: kouji.takao@gmail.com
32
+ executables:
33
+ - r2d
34
+ extensions: []
35
+ extra_rdoc_files: []
36
+ files:
37
+ - lib/console.rb
38
+ - lib/r2d/adapters/gosu.rb
39
+ - lib/r2d/adapters.rb
40
+ - lib/r2d/circle.rb
41
+ - lib/r2d/color.rb
42
+ - lib/r2d/exceptions.rb
43
+ - lib/r2d/helpers.rb
44
+ - lib/r2d/image.rb
45
+ - lib/r2d/line.rb
46
+ - lib/r2d/quad.rb
47
+ - lib/r2d/rectangle.rb
48
+ - lib/r2d/song.rb
49
+ - lib/r2d/sound.rb
50
+ - lib/r2d/square.rb
51
+ - lib/r2d/text.rb
52
+ - lib/r2d/triangle.rb
53
+ - lib/r2d/version.rb
54
+ - lib/r2d/window.rb
55
+ - lib/r2d.rb
56
+ - bin/r2d
57
+ homepage: https://github.com/takaokouji/r2d
58
+ licenses:
59
+ - MIT
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: 1.9.3
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirements: []
77
+ rubyforge_project:
78
+ rubygems_version: 1.8.24
79
+ signing_key:
80
+ specification_version: 3
81
+ summary: R2D by Kouji Takao
82
+ test_files: []