fantasy 0.1.7 → 0.1.13
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 +4 -4
- data/CHANGELOG.md +32 -1
- data/COLOR_PALETTE.md +159 -0
- data/README.md +74 -10
- data/lib/fantasy/actor.rb +180 -39
- data/lib/fantasy/background.rb +1 -1
- data/lib/fantasy/color.rb +182 -1
- data/lib/fantasy/coordinates.rb +4 -0
- data/lib/fantasy/cursor.rb +42 -0
- data/lib/fantasy/disk.rb +31 -0
- data/lib/fantasy/global.rb +15 -1
- data/lib/fantasy/hud_image.rb +1 -1
- data/lib/fantasy/hud_text.rb +37 -11
- data/lib/fantasy/image.rb +2 -0
- data/lib/fantasy/includes/gravitier.rb +5 -0
- data/lib/fantasy/includes/jumper.rb +10 -0
- data/lib/fantasy/includes/move_by_cursors.rb +39 -11
- data/lib/fantasy/includes/move_by_direction.rb +5 -0
- data/lib/fantasy/includes/mover.rb +24 -0
- data/lib/fantasy/includes/user_inputs.rb +60 -0
- data/lib/fantasy/loop.rb +58 -8
- data/lib/fantasy/mouse.rb +9 -0
- data/lib/fantasy/music.rb +53 -0
- data/lib/fantasy/shape.rb +55 -0
- data/lib/fantasy/sound.rb +4 -2
- data/lib/fantasy/version.rb +1 -1
- data/lib/fantasy.rb +12 -1
- metadata +13 -2
data/lib/fantasy/hud_text.rb
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
class HudText
|
2
|
-
attr_accessor :text, :size, :color, :visible, :layer, :in_world, :position
|
2
|
+
attr_accessor :text, :size, :color, :background_color, :visible, :layer, :in_world, :position, :alignment
|
3
3
|
|
4
4
|
def initialize(position:, text: "")
|
5
5
|
@position = position
|
6
6
|
@text = text
|
7
7
|
@size = "medium"
|
8
|
-
@color =
|
8
|
+
@color = Color.palette.white
|
9
|
+
@background_color = Color.palette.black
|
9
10
|
@visible = true
|
10
11
|
@layer = 100
|
11
12
|
@in_world = false
|
13
|
+
@alignment = "top-left"
|
12
14
|
|
13
15
|
Global.hud_texts.push(self)
|
14
16
|
end
|
@@ -17,8 +19,10 @@ class HudText
|
|
17
19
|
|
18
20
|
def draw
|
19
21
|
if visible
|
20
|
-
|
21
|
-
|
22
|
+
unless @background_color.nil?
|
23
|
+
font.draw_markup_rel(text, screen_position.x + shadow_offset, screen_position.y + shadow_offset, 1, position_rel.x, position_rel.y, 1, 1, background_color)
|
24
|
+
end
|
25
|
+
font.draw_markup_rel(text, screen_position.x, screen_position.y, 1, position_rel.x, position_rel.y, 1, 1, color)
|
22
26
|
end
|
23
27
|
|
24
28
|
draw_debug if Global.debug
|
@@ -27,11 +31,37 @@ class HudText
|
|
27
31
|
def font
|
28
32
|
found_font = Global.pixel_fonts[@size]
|
29
33
|
if found_font.nil?
|
30
|
-
raise "HudText.size not valid '#{@size}'. Valid
|
34
|
+
raise "HudText.size value not valid '#{@size}'. Valid values: 'small, medium, big, huge'"
|
31
35
|
end
|
32
36
|
found_font
|
33
37
|
end
|
34
38
|
|
39
|
+
def destroy
|
40
|
+
Global.hud_texts.delete(self)
|
41
|
+
end
|
42
|
+
|
43
|
+
def width
|
44
|
+
font.markup_width(text, 1)
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def position_rel
|
51
|
+
case @alignment
|
52
|
+
when "top-left"
|
53
|
+
Coordinates.new(0, 0)
|
54
|
+
when "top-right"
|
55
|
+
Coordinates.new(1, 0)
|
56
|
+
when "top-center"
|
57
|
+
Coordinates.new(0.5, 0)
|
58
|
+
when "center"
|
59
|
+
Coordinates.new(0.5, 0.5)
|
60
|
+
else
|
61
|
+
raise "HudText.alignment value not valid '#{@alignment}'. Valid values: 'top-left, top-right, top-center, center'"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
35
65
|
def shadow_offset
|
36
66
|
case @size
|
37
67
|
when "small"
|
@@ -43,7 +73,7 @@ class HudText
|
|
43
73
|
when "huge"
|
44
74
|
4
|
45
75
|
else
|
46
|
-
raise "HudText.size not valid '#{@size}'. Valid sizes: 'small, medium, big, huge'"
|
76
|
+
raise "HudText.size value not valid '#{@size}'. Valid sizes: 'small, medium, big, huge'"
|
47
77
|
end
|
48
78
|
end
|
49
79
|
|
@@ -55,11 +85,7 @@ class HudText
|
|
55
85
|
end
|
56
86
|
end
|
57
87
|
|
58
|
-
def destroy
|
59
|
-
Global.hud_texts.delete(self)
|
60
|
-
end
|
61
|
-
|
62
88
|
def draw_debug
|
63
|
-
Global.pixel_fonts["medium"].draw_text("#{@position.x.floor},#{@position.y.floor}",
|
89
|
+
Global.pixel_fonts["medium"].draw_text("#{@position.x.floor},#{@position.y.floor}", screen_position.x, screen_position.y, 1)
|
64
90
|
end
|
65
91
|
end
|
data/lib/fantasy/image.rb
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
module MoveByCursor
|
2
|
-
def
|
3
|
-
if Gosu.button_down?(
|
4
|
-
|
5
|
-
elsif Gosu.button_down?(Gosu::KB_UP)
|
6
|
-
@direction = Coordinates.up
|
7
|
-
elsif Gosu.button_down?(Gosu::KB_RIGHT)
|
8
|
-
@direction = Coordinates.right
|
9
|
-
elsif Gosu.button_down?(Gosu::KB_LEFT)
|
10
|
-
@direction = Coordinates.left
|
11
|
-
else
|
12
|
-
@direction = Coordinates.zero
|
2
|
+
def move_by_cursors
|
3
|
+
if Gosu.button_down?(Cursor.down) && @move_with_cursors_down
|
4
|
+
move_by(Coordinates.down)
|
13
5
|
end
|
6
|
+
|
7
|
+
if Gosu.button_down?(Cursor.up) && @move_with_cursors_up
|
8
|
+
move_by(Coordinates.up)
|
9
|
+
end
|
10
|
+
|
11
|
+
if Gosu.button_down?(Cursor.right) && @move_with_cursors_right
|
12
|
+
move_by(Coordinates.right)
|
13
|
+
end
|
14
|
+
|
15
|
+
if Gosu.button_down?(Cursor.left) && @move_with_cursors_left
|
16
|
+
move_by(Coordinates.left)
|
17
|
+
end
|
18
|
+
|
19
|
+
if Gosu.button_down?(Cursor.space_bar) && !@jumping && @on_floor && @move_with_cursors_jump
|
20
|
+
jump
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def move_with_cursors(down: nil, up: nil, left: nil, right: nil, jump: false)
|
25
|
+
puts "#{@name}: move_with_cursors(down: #{down}, up: #{up}, left: #{left}, right: #{right}), jump: #{jump}"
|
26
|
+
|
27
|
+
if down.nil? and up.nil? and left.nil? and right.nil?
|
28
|
+
down = true
|
29
|
+
up = true
|
30
|
+
left = true
|
31
|
+
right = true
|
32
|
+
end
|
33
|
+
@move_with_cursors_down = down || false
|
34
|
+
@move_with_cursors_up = up || false
|
35
|
+
@move_with_cursors_left = left || false
|
36
|
+
@move_with_cursors_right = right || false
|
37
|
+
@move_with_cursors_jump = jump || false
|
38
|
+
end
|
39
|
+
|
40
|
+
def move_by(direction)
|
41
|
+
@position += direction * @speed * Global.frame_time
|
14
42
|
end
|
15
43
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Mover
|
2
|
+
def impulse(direction:, force:)
|
3
|
+
add_force(direction.normalize * force)
|
4
|
+
end
|
5
|
+
|
6
|
+
def add_force(force)
|
7
|
+
@acceleration ||= Coordinates.zero
|
8
|
+
@acceleration += force
|
9
|
+
end
|
10
|
+
|
11
|
+
def apply_forces(max_speed: Float::INFINITY)
|
12
|
+
@acceleration ||= Coordinates.zero
|
13
|
+
@velocity ||= Coordinates.zero
|
14
|
+
|
15
|
+
@velocity += @acceleration
|
16
|
+
@velocity.resize(max_speed) if @velocity.length > max_speed
|
17
|
+
|
18
|
+
unless @velocity.length.zero?
|
19
|
+
@position += @velocity * Global.frame_time
|
20
|
+
end
|
21
|
+
|
22
|
+
@acceleration = Coordinates.zero
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module UserInputs
|
2
|
+
# Set callbacks
|
3
|
+
def on_cursor_down(&block)
|
4
|
+
@on_cursor_down_callback = block
|
5
|
+
end
|
6
|
+
|
7
|
+
def on_cursor_up(&block)
|
8
|
+
@on_cursor_up_callback = block
|
9
|
+
end
|
10
|
+
|
11
|
+
def on_cursor_left(&block)
|
12
|
+
@on_cursor_left_callback = block
|
13
|
+
end
|
14
|
+
|
15
|
+
def on_cursor_right(&block)
|
16
|
+
@on_cursor_right_callback = block
|
17
|
+
end
|
18
|
+
|
19
|
+
def on_space_bar(&block)
|
20
|
+
@on_space_bar_callback = block
|
21
|
+
end
|
22
|
+
|
23
|
+
def on_mouse_button_left(&block)
|
24
|
+
@on_mouse_button_left_callback = block
|
25
|
+
end
|
26
|
+
|
27
|
+
def on_click(&block)
|
28
|
+
@on_click_callback = block
|
29
|
+
end
|
30
|
+
|
31
|
+
# Execute callbacks
|
32
|
+
def on_cursor_down_do
|
33
|
+
instance_exec(&@on_cursor_down_callback) unless @on_cursor_down_callback.nil?
|
34
|
+
end
|
35
|
+
|
36
|
+
def on_cursor_up_do
|
37
|
+
instance_exec(&@on_cursor_up_callback) unless @on_cursor_up_callback.nil?
|
38
|
+
end
|
39
|
+
|
40
|
+
def on_cursor_left_do
|
41
|
+
instance_exec(&@on_cursor_left_callback) unless @on_cursor_left_callback.nil?
|
42
|
+
end
|
43
|
+
|
44
|
+
def on_cursor_right_do
|
45
|
+
instance_exec(&@on_cursor_right_callback) unless @on_cursor_right_callback.nil?
|
46
|
+
end
|
47
|
+
|
48
|
+
def on_space_bar_do
|
49
|
+
instance_exec(&@on_space_bar_callback) unless @on_space_bar_callback.nil?
|
50
|
+
end
|
51
|
+
|
52
|
+
def on_mouse_button_left_do
|
53
|
+
instance_exec(&@on_mouse_button_left_callback) unless @on_mouse_button_left_callback.nil?
|
54
|
+
end
|
55
|
+
|
56
|
+
def on_click_do
|
57
|
+
puts "XXX: on_click_do: #{@on_click_callback}"
|
58
|
+
instance_exec(&@on_click_callback) unless @on_click_callback.nil?
|
59
|
+
end
|
60
|
+
end
|
data/lib/fantasy/loop.rb
CHANGED
@@ -9,13 +9,13 @@ class Game < Gosu::Window
|
|
9
9
|
|
10
10
|
def button_down(button_id)
|
11
11
|
case button_id
|
12
|
-
when
|
13
|
-
when
|
14
|
-
when
|
15
|
-
when
|
16
|
-
when
|
17
|
-
|
18
|
-
when
|
12
|
+
when Cursor.down then cursor_down_pressed
|
13
|
+
when Cursor.up then cursor_up_pressed
|
14
|
+
when Cursor.left then cursor_left_pressed
|
15
|
+
when Cursor.right then cursor_right_pressed
|
16
|
+
when Cursor.space_bar then space_bar_pressed
|
17
|
+
|
18
|
+
when Mouse.left then mouse_button_left_pressed
|
19
19
|
end
|
20
20
|
|
21
21
|
Global.button_proc.call(button_id) unless Global.button_proc.nil?
|
@@ -23,6 +23,46 @@ class Game < Gosu::Window
|
|
23
23
|
super
|
24
24
|
end
|
25
25
|
|
26
|
+
def cursor_down_pressed
|
27
|
+
Global.cursor_down_proc.call unless Global.cursor_down_proc.nil?
|
28
|
+
invoke_input_method("on_cursor_down_do")
|
29
|
+
end
|
30
|
+
|
31
|
+
def cursor_up_pressed
|
32
|
+
Global.cursor_up_proc.call unless Global.cursor_up_proc.nil?
|
33
|
+
invoke_input_method("on_cursor_up_do")
|
34
|
+
end
|
35
|
+
|
36
|
+
def cursor_left_pressed
|
37
|
+
Global.cursor_left_proc.call unless Global.cursor_left_proc.nil?
|
38
|
+
invoke_input_method("on_cursor_left_do")
|
39
|
+
end
|
40
|
+
|
41
|
+
def cursor_right_pressed
|
42
|
+
Global.cursor_right_proc.call unless Global.cursor_right_proc.nil?
|
43
|
+
invoke_input_method("on_cursor_right_do")
|
44
|
+
end
|
45
|
+
|
46
|
+
def space_bar_pressed
|
47
|
+
Global.space_bar_proc.call unless Global.space_bar_proc.nil?
|
48
|
+
invoke_input_method("on_space_bar_do")
|
49
|
+
end
|
50
|
+
|
51
|
+
def mouse_button_left_pressed
|
52
|
+
Global.mouse_button_left_proc.call unless Global.mouse_button_left_proc.nil?
|
53
|
+
|
54
|
+
check_click
|
55
|
+
end
|
56
|
+
|
57
|
+
def invoke_input_method(input_method_name)
|
58
|
+
(
|
59
|
+
Global.actors +
|
60
|
+
Global.shapes
|
61
|
+
).sort_by(&:layer).each do |e|
|
62
|
+
e.send(input_method_name)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
26
66
|
def update
|
27
67
|
Global.update
|
28
68
|
|
@@ -51,9 +91,19 @@ class Game < Gosu::Window
|
|
51
91
|
Global.tile_maps +
|
52
92
|
Global.actors +
|
53
93
|
Global.hud_texts +
|
54
|
-
Global.hud_images
|
94
|
+
Global.hud_images +
|
95
|
+
Global.shapes
|
55
96
|
).sort_by(&:layer).each do |e|
|
56
97
|
e.draw
|
57
98
|
end
|
58
99
|
end
|
100
|
+
|
101
|
+
def check_click
|
102
|
+
(
|
103
|
+
Global.actors +
|
104
|
+
Global.shapes
|
105
|
+
).sort_by(&:layer).each do |e|
|
106
|
+
e.on_click_do if Utils.collision_at?(e, mouse_x, mouse_y)
|
107
|
+
end
|
108
|
+
end
|
59
109
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Music
|
2
|
+
class << self
|
3
|
+
@@musics = {}
|
4
|
+
@@actual_song = nil
|
5
|
+
|
6
|
+
def play(music_name, volume: nil)
|
7
|
+
stop
|
8
|
+
|
9
|
+
@@actual_song = locate_music(music_name)
|
10
|
+
@@actual_song.play(true)
|
11
|
+
|
12
|
+
self.volume = volume unless volume.nil?
|
13
|
+
end
|
14
|
+
|
15
|
+
def stop
|
16
|
+
@@actual_song.stop unless @@actual_song.nil?
|
17
|
+
end
|
18
|
+
|
19
|
+
def volume
|
20
|
+
@@actual_song&.volume
|
21
|
+
end
|
22
|
+
|
23
|
+
def volume=(value)
|
24
|
+
@@actual_song.volume = value unless @@actual_song.nil?
|
25
|
+
end
|
26
|
+
|
27
|
+
def locate_music(music_name)
|
28
|
+
return @@musics[music_name] if @@musics[music_name]
|
29
|
+
|
30
|
+
puts "Initialize Music: '#{music_name}'"
|
31
|
+
|
32
|
+
file_name = Dir.entries(base_path).find { |e| e =~ /^#{music_name}($|\.)/ }
|
33
|
+
|
34
|
+
raise "Music file not found with name '#{music_name}'" if file_name.nil?
|
35
|
+
|
36
|
+
@@musics[music_name] = Gosu::Song.new("#{base_path}/#{file_name}")
|
37
|
+
|
38
|
+
return @@musics[music_name]
|
39
|
+
end
|
40
|
+
|
41
|
+
def preload_musics
|
42
|
+
return unless Dir.exist?(base_path)
|
43
|
+
|
44
|
+
Dir.each_child(base_path) do |file_name|
|
45
|
+
locate_music(file_name) unless file_name.start_with?(".")
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def base_path
|
50
|
+
"#{Dir.pwd}/musics"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
class Shape
|
2
|
+
include UserInputs
|
3
|
+
|
4
|
+
attr_accessor :kind, :position, :width, :height, :stroke, :color, :fill, :stroke_color, :layer
|
5
|
+
|
6
|
+
def initialize(kind:, position:, width:, height:, stroke: 1, fill: true, color: Color.palette.black, stroke_color: nil)
|
7
|
+
@kind = kind
|
8
|
+
@position = position
|
9
|
+
@width = width
|
10
|
+
@height = height
|
11
|
+
@stroke = stroke
|
12
|
+
@color = color
|
13
|
+
@fill = fill
|
14
|
+
@stroke_color = stroke_color
|
15
|
+
@layer = 1
|
16
|
+
|
17
|
+
Global.shapes << self
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.rectangle(position:, width:, height:, color: Color.palette.black)
|
21
|
+
Shape.new(kind: "rectangle", position: position, width: width, height: height)
|
22
|
+
end
|
23
|
+
|
24
|
+
def draw
|
25
|
+
case @kind
|
26
|
+
when "rectangle"
|
27
|
+
draw_rectangle
|
28
|
+
else
|
29
|
+
raise "Shape.kind not supported: '#{@kind}'. Supported kinds: 'rectangle'"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def destroy
|
34
|
+
Global.shapes.delete(self)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def draw_rectangle
|
40
|
+
if fill
|
41
|
+
Gosu.draw_rect(@position.x, @position.y, @width, @height, @color)
|
42
|
+
end
|
43
|
+
|
44
|
+
unless stroke.zero?
|
45
|
+
draw_frame(@position.x, @position.y, @width, @height, @stroke, @stroke_color || @color)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def draw_frame(x, y, width, height, stroke, color)
|
50
|
+
Gosu.draw_rect(x, y, width, stroke, color)
|
51
|
+
Gosu.draw_rect(width - stroke + x, y, stroke, height, color)
|
52
|
+
Gosu.draw_rect(x, height - stroke + y, width, stroke, color)
|
53
|
+
Gosu.draw_rect(x, y, stroke, height, color)
|
54
|
+
end
|
55
|
+
end
|
data/lib/fantasy/sound.rb
CHANGED
@@ -2,8 +2,8 @@ module Sound
|
|
2
2
|
class << self
|
3
3
|
@@sounds = {}
|
4
4
|
|
5
|
-
def play(sound_name)
|
6
|
-
locate_sound(sound_name).play
|
5
|
+
def play(sound_name, volume: 1)
|
6
|
+
locate_sound(sound_name).play(volume)
|
7
7
|
end
|
8
8
|
|
9
9
|
def locate_sound(sound_name)
|
@@ -21,6 +21,8 @@ module Sound
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def preload_sounds
|
24
|
+
return unless Dir.exist?(base_path)
|
25
|
+
|
24
26
|
Dir.each_child(base_path) do |file_name|
|
25
27
|
locate_sound(file_name) unless file_name.start_with?(".")
|
26
28
|
end
|
data/lib/fantasy/version.rb
CHANGED
data/lib/fantasy.rb
CHANGED
@@ -2,12 +2,21 @@
|
|
2
2
|
require "gosu"
|
3
3
|
|
4
4
|
require_relative "fantasy/version"
|
5
|
+
|
6
|
+
require_relative "fantasy/coordinates"
|
7
|
+
require_relative "fantasy/cursor"
|
8
|
+
require_relative "fantasy/mouse"
|
5
9
|
require_relative "fantasy/includes/move_by_cursors"
|
10
|
+
require_relative "fantasy/includes/move_by_direction"
|
11
|
+
require_relative "fantasy/includes/mover"
|
12
|
+
require_relative "fantasy/includes/gravitier"
|
13
|
+
require_relative "fantasy/includes/jumper"
|
14
|
+
require_relative "fantasy/includes/user_inputs"
|
6
15
|
require_relative "fantasy/tween"
|
7
16
|
require_relative "fantasy/draggable"
|
8
17
|
require_relative "fantasy/color"
|
18
|
+
require_relative "fantasy/shape"
|
9
19
|
require_relative "fantasy/actor"
|
10
|
-
require_relative "fantasy/coordinates"
|
11
20
|
require_relative "fantasy/utils"
|
12
21
|
require_relative "fantasy/global"
|
13
22
|
require_relative "fantasy/clock"
|
@@ -16,7 +25,9 @@ require_relative "fantasy/hud_text"
|
|
16
25
|
require_relative "fantasy/hud_image"
|
17
26
|
require_relative "fantasy/background"
|
18
27
|
require_relative "fantasy/sound"
|
28
|
+
require_relative "fantasy/music"
|
19
29
|
require_relative "fantasy/camera"
|
20
30
|
require_relative "fantasy/image"
|
21
31
|
require_relative "fantasy/tilemap"
|
22
32
|
require_relative "fantasy/base"
|
33
|
+
require_relative "fantasy/disk"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fantasy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fernando Guillen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gosu
|
@@ -47,6 +47,7 @@ extra_rdoc_files: []
|
|
47
47
|
files:
|
48
48
|
- ".rubocop.yml"
|
49
49
|
- CHANGELOG.md
|
50
|
+
- COLOR_PALETTE.md
|
50
51
|
- Gemfile
|
51
52
|
- LICENSE.txt
|
52
53
|
- README.md
|
@@ -64,13 +65,23 @@ files:
|
|
64
65
|
- lib/fantasy/clock.rb
|
65
66
|
- lib/fantasy/color.rb
|
66
67
|
- lib/fantasy/coordinates.rb
|
68
|
+
- lib/fantasy/cursor.rb
|
69
|
+
- lib/fantasy/disk.rb
|
67
70
|
- lib/fantasy/draggable.rb
|
68
71
|
- lib/fantasy/global.rb
|
69
72
|
- lib/fantasy/hud_image.rb
|
70
73
|
- lib/fantasy/hud_text.rb
|
71
74
|
- lib/fantasy/image.rb
|
75
|
+
- lib/fantasy/includes/gravitier.rb
|
76
|
+
- lib/fantasy/includes/jumper.rb
|
72
77
|
- lib/fantasy/includes/move_by_cursors.rb
|
78
|
+
- lib/fantasy/includes/move_by_direction.rb
|
79
|
+
- lib/fantasy/includes/mover.rb
|
80
|
+
- lib/fantasy/includes/user_inputs.rb
|
73
81
|
- lib/fantasy/loop.rb
|
82
|
+
- lib/fantasy/mouse.rb
|
83
|
+
- lib/fantasy/music.rb
|
84
|
+
- lib/fantasy/shape.rb
|
74
85
|
- lib/fantasy/sound.rb
|
75
86
|
- lib/fantasy/tilemap.rb
|
76
87
|
- lib/fantasy/tween.rb
|