summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2021-04-24 16:22:08 -0400
committerrealtradam <[email protected]>2021-04-24 16:22:08 -0400
commit93290fb327f4dac63ac201c4c21e13c60cae0eff (patch)
tree6e44d1a48359c86a70b89a9f8cc8af3e3da8706a
parent8968999c513b4ce3cac9f5907199235006bb6a11 (diff)
downloadruby2d-camera-93290fb327f4dac63ac201c4c21e13c60cae0eff.tar.gz
ruby2d-camera-93290fb327f4dac63ac201c4c21e13c60cae0eff.zip
.
-rw-r--r--assets/alienpls.gifbin0 -> 112862 bytes
-rw-r--r--assets/blobcoolthink.pngbin0 -> 13066 bytes
-rw-r--r--assets/bricktexture.pngbin0 -> 741798 bytes
-rw-r--r--assets/dance2.gifbin0 -> 95393 bytes
-rw-r--r--assets/dancer.gifbin0 -> 34230 bytes
-rw-r--r--assets/sprites/alienpls.pngbin0 -> 255710 bytes
-rw-r--r--assets/sprites/blobdance.png (renamed from assets/sprites/blob.png)bin35825 -> 35825 bytes
-rw-r--r--assets/sprites/dance2.pngbin0 -> 214857 bytes
-rw-r--r--assets/sprites/dancer.pngbin0 -> 39270 bytes
-rw-r--r--assets/sprites/mainblob.pngbin0 -> 94235 bytes
-rw-r--r--assets/sprites/peepocomfy.pngbin0 -> 4321 bytes
-rw-r--r--assets/stand.pngbin0 -> 7792 bytes
-rw-r--r--assets/walk.gifbin0 -> 102604 bytes
-rw-r--r--lib/camera/camera.rb4
-rw-r--r--lib/camera/wrappers/circle_wrapper.rb2
-rw-r--r--lib/camera/wrappers/image_wrapper.rb2
-rw-r--r--lib/camera/wrappers/line_wrapper.rb2
-rw-r--r--lib/camera/wrappers/quad_wrapper.rb2
-rw-r--r--lib/camera/wrappers/rectangle_wrapper.rb2
-rw-r--r--lib/camera/wrappers/sprite_wrapper.rb23
-rw-r--r--lib/camera/wrappers/square_wrapper.rb2
-rw-r--r--lib/camera/wrappers/text_wrapper.rb64
-rw-r--r--lib/camera/wrappers/triangle_wrapper.rb2
-rw-r--r--run.rb68
24 files changed, 112 insertions, 61 deletions
diff --git a/assets/alienpls.gif b/assets/alienpls.gif
new file mode 100644
index 0000000..af0f7b0
--- /dev/null
+++ b/assets/alienpls.gif
Binary files differ
diff --git a/assets/blobcoolthink.png b/assets/blobcoolthink.png
new file mode 100644
index 0000000..7cdfcc8
--- /dev/null
+++ b/assets/blobcoolthink.png
Binary files differ
diff --git a/assets/bricktexture.png b/assets/bricktexture.png
new file mode 100644
index 0000000..4ef86e0
--- /dev/null
+++ b/assets/bricktexture.png
Binary files differ
diff --git a/assets/dance2.gif b/assets/dance2.gif
new file mode 100644
index 0000000..c1381aa
--- /dev/null
+++ b/assets/dance2.gif
Binary files differ
diff --git a/assets/dancer.gif b/assets/dancer.gif
new file mode 100644
index 0000000..a2fdfef
--- /dev/null
+++ b/assets/dancer.gif
Binary files differ
diff --git a/assets/sprites/alienpls.png b/assets/sprites/alienpls.png
new file mode 100644
index 0000000..af9452a
--- /dev/null
+++ b/assets/sprites/alienpls.png
Binary files differ
diff --git a/assets/sprites/blob.png b/assets/sprites/blobdance.png
index 6326ec0..6326ec0 100644
--- a/assets/sprites/blob.png
+++ b/assets/sprites/blobdance.png
Binary files differ
diff --git a/assets/sprites/dance2.png b/assets/sprites/dance2.png
new file mode 100644
index 0000000..2d69026
--- /dev/null
+++ b/assets/sprites/dance2.png
Binary files differ
diff --git a/assets/sprites/dancer.png b/assets/sprites/dancer.png
new file mode 100644
index 0000000..c3fdbc0
--- /dev/null
+++ b/assets/sprites/dancer.png
Binary files differ
diff --git a/assets/sprites/mainblob.png b/assets/sprites/mainblob.png
new file mode 100644
index 0000000..836e6ff
--- /dev/null
+++ b/assets/sprites/mainblob.png
Binary files differ
diff --git a/assets/sprites/peepocomfy.png b/assets/sprites/peepocomfy.png
new file mode 100644
index 0000000..6d8812d
--- /dev/null
+++ b/assets/sprites/peepocomfy.png
Binary files differ
diff --git a/assets/stand.png b/assets/stand.png
new file mode 100644
index 0000000..2c7038d
--- /dev/null
+++ b/assets/stand.png
Binary files differ
diff --git a/assets/walk.gif b/assets/walk.gif
new file mode 100644
index 0000000..67638ad
--- /dev/null
+++ b/assets/walk.gif
Binary files differ
diff --git a/lib/camera/camera.rb b/lib/camera/camera.rb
index cfea114..2b94150 100644
--- a/lib/camera/camera.rb
+++ b/lib/camera/camera.rb
@@ -61,8 +61,8 @@ module Camera
# Redraw all objects that
# are tracked by the Camera
- def self.update
- objects.each(&:update)
+ def self.redraw
+ objects.each(&:redraw)
end
# Variables changing Camera properties
diff --git a/lib/camera/wrappers/circle_wrapper.rb b/lib/camera/wrappers/circle_wrapper.rb
index bd4f54a..52a97c0 100644
--- a/lib/camera/wrappers/circle_wrapper.rb
+++ b/lib/camera/wrappers/circle_wrapper.rb
@@ -6,7 +6,7 @@ module Camera
module CircleWrapped
# Recalculates real coordiantes
# Use after changing variables
- def update
+ def redraw
angle = Camera.angle * (Math::PI / 180)
half_width = Window.width * 0.5
half_height = Window.height * 0.5
diff --git a/lib/camera/wrappers/image_wrapper.rb b/lib/camera/wrappers/image_wrapper.rb
index 3f603d4..9e4b163 100644
--- a/lib/camera/wrappers/image_wrapper.rb
+++ b/lib/camera/wrappers/image_wrapper.rb
@@ -6,7 +6,7 @@ module Camera
module ImageWrapped
# Recalculates real coordiantes
# Use after changing variables
- def update
+ def redraw
angle = Camera.angle * (Math::PI / 180)
half_width = Window.width * 0.5
half_height = Window.height * 0.5
diff --git a/lib/camera/wrappers/line_wrapper.rb b/lib/camera/wrappers/line_wrapper.rb
index 4024d1f..d2c1801 100644
--- a/lib/camera/wrappers/line_wrapper.rb
+++ b/lib/camera/wrappers/line_wrapper.rb
@@ -6,7 +6,7 @@ module Camera
module LineWrapped
# Recalculates real coordiantes
# Use after changing variables
- def update
+ def redraw
angle = Camera.angle * (Math::PI / 180)
half_width = Window.width * 0.5
half_height = Window.height * 0.5
diff --git a/lib/camera/wrappers/quad_wrapper.rb b/lib/camera/wrappers/quad_wrapper.rb
index 19d6166..08a2d6c 100644
--- a/lib/camera/wrappers/quad_wrapper.rb
+++ b/lib/camera/wrappers/quad_wrapper.rb
@@ -6,7 +6,7 @@ module Camera
module QuadWrapped
# Recalculates real coordiantes
# Use after changing variables
- def update
+ def redraw
angle = Camera.angle * (Math::PI / 180)
half_width = Window.width * 0.5
half_height = Window.height * 0.5
diff --git a/lib/camera/wrappers/rectangle_wrapper.rb b/lib/camera/wrappers/rectangle_wrapper.rb
index 51836db..887ab8b 100644
--- a/lib/camera/wrappers/rectangle_wrapper.rb
+++ b/lib/camera/wrappers/rectangle_wrapper.rb
@@ -6,7 +6,7 @@ module Camera
module RectangleWrapped
# Recalculates real coordiantes
# Use after changing variables
- def update
+ def redraw
angle = Camera.angle * (Math::PI / 180)
half_width = Window.width * 0.5
half_height = Window.height * 0.5
diff --git a/lib/camera/wrappers/sprite_wrapper.rb b/lib/camera/wrappers/sprite_wrapper.rb
index 58ed1f7..d38c0bc 100644
--- a/lib/camera/wrappers/sprite_wrapper.rb
+++ b/lib/camera/wrappers/sprite_wrapper.rb
@@ -6,19 +6,32 @@ module Camera
module SpriteWrapped
# Recalculates real coordiantes
# Use after changing variables
- def update
+ def redraw
angle = Camera.angle * (Math::PI / 180)
half_width = Window.width * 0.5
half_height = Window.height * 0.5
offset_x = x + (width / 2)
offset_y = y + (height / 2)
- @x = (((offset_x - Camera.x) * Math.cos(angle)) - ((offset_y - Camera.y) * Math.sin(angle))) \
+ @x = @flip_x = (((offset_x - Camera.x) * Math.cos(angle)) - ((offset_y - Camera.y) * Math.sin(angle))) \
* Camera.zoom + half_width - (width * Camera.zoom / 2)
- @y = (((offset_x - Camera.x) * Math.sin(angle)) + ((offset_y - Camera.y) * Math.cos(angle))) \
+ @y = @flip_y = (((offset_x - Camera.x) * Math.sin(angle)) + ((offset_y - Camera.y) * Math.cos(angle))) \
* Camera.zoom + half_height - (height * Camera.zoom / 2)
@rotate = rotate + Camera.angle
- @width = width * Camera.zoom
- @height = height * Camera.zoom
+ @width = @flip_width = width * Camera.zoom
+ @height = @flip_height = height * Camera.zoom
+ case @flip
+ when :both
+ @flip_x = @x + @height
+ @flip_width = -@width
+ @flip_y = @y + @width
+ @flip_height = -@height
+ when :horizontal
+ @flip_y = @y + @width
+ @flip_height = -@height
+ when :vertical
+ @flip_x = @x + @height
+ @flip_width = -@width
+ end
end
#Methods for moving the shape
diff --git a/lib/camera/wrappers/square_wrapper.rb b/lib/camera/wrappers/square_wrapper.rb
index f828e0c..40578e5 100644
--- a/lib/camera/wrappers/square_wrapper.rb
+++ b/lib/camera/wrappers/square_wrapper.rb
@@ -6,7 +6,7 @@ module Camera
module SquareWrapped
# Recalculates real coordiantes
# Use after changing variables
- def update
+ def redraw
angle = Camera.angle * (Math::PI / 180)
half_width = Window.width * 0.5
half_height = Window.height * 0.5
diff --git a/lib/camera/wrappers/text_wrapper.rb b/lib/camera/wrappers/text_wrapper.rb
new file mode 100644
index 0000000..56b35ed
--- /dev/null
+++ b/lib/camera/wrappers/text_wrapper.rb
@@ -0,0 +1,64 @@
+# frozen_string_literal: true
+
+module Camera
+ # Wraps existing variables as well as adding new methods
+ # so that it can be handled by the Camera Module
+ module TextWrapped
+ # Recalculates real coordiantes
+ # Use after changing variables
+ def redraw
+ angle = Camera.angle * (Math::PI / 180)
+ half_width = Window.width * 0.5
+ half_height = Window.height * 0.5
+ offset_x = x + (width / 2)
+ offset_y = y + (height / 2)
+ @x = (((offset_x - Camera.x) * Math.cos(angle)) - ((offset_y - Camera.y) * Math.sin(angle))) \
+ * Camera.zoom + half_width - (width * Camera.zoom / 2)
+ @y = (((offset_x - Camera.x) * Math.sin(angle)) + ((offset_y - Camera.y) * Math.cos(angle))) \
+ * Camera.zoom + half_height - (height * Camera.zoom / 2)
+ @rotate = rotate + Camera.angle
+ @size = size * Camera.zoom
+ end
+
+ #Methods for moving the shape
+
+ # Wrappers for the coordinates so that
+ # they are handled by the Camera instead
+ # and for ease of programming
+ def x
+ @virtual_x ||= @x
+ end
+
+ def x=(x)
+ @virtual_x = x
+ end
+
+ def y
+ @virtual_y ||= @y
+ end
+
+ def y=(y)
+ @virtual_y = y
+ end
+
+ def x
+ @virtual_x ||= @x
+ end
+
+ def rotate
+ @virtual_rotate ||= @rotate
+ end
+
+ def rotate=(rotate)
+ @virtual_rotate = rotate
+ end
+
+ def size
+ @virtual_size ||= @size
+ end
+
+ def size=(size)
+ @virtual_size = size
+ end
+ end
+end
diff --git a/lib/camera/wrappers/triangle_wrapper.rb b/lib/camera/wrappers/triangle_wrapper.rb
index 46d8f35..b26ef81 100644
--- a/lib/camera/wrappers/triangle_wrapper.rb
+++ b/lib/camera/wrappers/triangle_wrapper.rb
@@ -6,7 +6,7 @@ module Camera
module TriangleWrapped
# Recalculates real coordiantes
# Use after changing variables
- def update
+ def redraw
angle = Camera.angle * (Math::PI / 180)
half_width = Window.width * 0.5
half_height = Window.height * 0.5
diff --git a/run.rb b/run.rb
index 4495b68..5554748 100644
--- a/run.rb
+++ b/run.rb
@@ -5,44 +5,10 @@ require_relative 'lib/camera/camera'
#set width: 700, height: 300
-Window.set(icon: "./assets/blobdanceextract/blob#{(1...20).to_a.sample}.png")
+Window.set(icon: './assets/blobcoolthink.png',
+ width: 1280,
+ height: 720)
-# Use this to add a few extra methods to an Image
-module SizableImage
- def size
- width
- end
-
- def size=(size)
- self.height *= (size / width)
- self.width *= (size / width)
- end
-end
-
-
-# There is 2 ways you can add objects to be known and controlled by the camera, both do the same thing
-
-#@square = Square.new(
-# x: 100, y: 100,
-# size: 125,
-# color: 'random'
-#)
-
-#Camera << @square
-
-25.times do
- tempx = (0..1920).to_a.sample
- tempy = (0..1080).to_a.sample
- tempsize = (25..100).to_a.sample
- Camera << Triangle.new(x1: tempx,
- y1: tempy,
- x2: tempx,
- y2: tempy + tempsize,
- x3: tempx + tempsize,
- y3: tempy + tempsize,
- size: (10..50).to_a.sample,
- color: 'random')
-end
@background = Image.new(
'assets/background.png',
x: 0, y: 0,
@@ -68,12 +34,20 @@ Camera << @line
y4: 0,
size: (10..50).to_a.sample,
color: 'blue')
-=end
@player = Square.new(x: 0,
y: 0,
size: 100,
color: 'random')
-@sprite = Sprite.new('./assets/sprites/blob.png',
+=end
+@player = Sprite.new('./assets/sprites/blobdance.png',
+ x: 0,
+ y: 0,
+ width: 50,
+ height: 50,
+ clip_width: 128,
+ loop: true,
+ time: 17)
+@sprite = Sprite.new('./assets/sprites/blobdance.png',
x: 300,
y: 300,
width: 100,
@@ -83,6 +57,11 @@ Camera << @line
time: 17)
Camera << @sprite
@sprite.play
+@text = Text.new('Hello',
+ x: 150, y: 150,
+ size: 20)
+Camera << @text
Camera << @player
Camera << @player
Rectangle.new(
@@ -180,20 +159,15 @@ on :key do |event|
end
on :key_down do |event|
if event.key == 'f'
- Camera.debug_x += 2
- @player.size -= 5
+ @player.flip_sprite(:vertical)
end
if event.key == 'h'
- Camera.debug_x -= 2
- @player.size += 5
+ @player.flip_sprite(:none)
end
if event.key == 't'
Camera.debug_y += 2
- @player.height += 5
end
if event.key == 'g'
- Camera.debug_y -= 2
- @player.height -= 5
end
end
@@ -246,6 +220,6 @@ update do
@ui_fps.text = "FPS: #{Window.fps.round(2)}"
@ui_rotation.text = "Angle: #{Camera.angle}"
- Camera.update
+ Camera.redraw
end
show