summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
author_Tradam <[email protected]>2021-09-24 18:45:35 -0400
committerGitHub <[email protected]>2021-09-24 18:45:35 -0400
commitc326eb2b27921f584ac46c484dab9be2cddb90f7 (patch)
treecd3a7bf117ac88a4ca546bb06da7ae6de94274ad
parentf660af1767ec6243e92f1a41c2d9636e2b88790d (diff)
parent205282994bba06b3ec6507ac0f42f66b13878db2 (diff)
downloadruby2d-camera-1.1.1.tar.gz
ruby2d-camera-1.1.1.zip
Merge pull request #1 from realtradam/bugfix1.1.1
Fixed changing z-index after the shape has been added not applying at all
-rw-r--r--CHANGELOG.mdown4
-rw-r--r--Gemfile.lock42
-rw-r--r--example/README.mdown3
-rw-r--r--lib/ruby2d/camera.rb17
-rw-r--r--lib/ruby2d/camera/circle.rb5
-rw-r--r--lib/ruby2d/camera/image.rb5
-rw-r--r--lib/ruby2d/camera/line.rb9
-rw-r--r--lib/ruby2d/camera/quad.rb9
-rw-r--r--lib/ruby2d/camera/rectangle.rb9
-rw-r--r--lib/ruby2d/camera/sprite.rb5
-rw-r--r--lib/ruby2d/camera/square.rb9
-rw-r--r--lib/ruby2d/camera/text.rb5
-rw-r--r--lib/ruby2d/camera/triangle.rb9
-rw-r--r--lib/ruby2d/camera/version.rb2
-rw-r--r--run.rb248
15 files changed, 119 insertions, 262 deletions
diff --git a/CHANGELOG.mdown b/CHANGELOG.mdown
index a45db6b..2d993ab 100644
--- a/CHANGELOG.mdown
+++ b/CHANGELOG.mdown
@@ -6,6 +6,10 @@
![Deprecated](https://img.shields.io/badge/-Deprecated-orange)
![Removed](https://img.shields.io/badge/-Removed-red)
+## [1.1.1](https://github.com/realtradam/ruby2d-camera/releases/tag/1.1.1) - 2021-09-24
+![Fixed](https://img.shields.io/badge/-Fixed-blue)
+- Fixed changing z-index after the shape has been added not applying at all
+
## [1.1.0](https://github.com/realtradam/ruby2d-camera/releases/tag/1.1.0) - 2021-08-09
![Added](https://img.shields.io/badge/-Added-brightgreen)
- Added Camera functions `Camera.coordinate_to_screenspace` and `Camera.coordinate_to_worldspace`
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000..31fab7d
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,42 @@
+PATH
+ remote: .
+ specs:
+ ruby2d-camera (1.1.1.beta)
+ ruby2d (~> 0.10)
+
+GEM
+ remote: https://rubygems.org/
+ specs:
+ ast (2.4.2)
+ parallel (1.21.0)
+ parser (3.0.2.0)
+ ast (~> 2.4.1)
+ rainbow (3.0.0)
+ rake (13.0.6)
+ regexp_parser (2.1.1)
+ rexml (3.2.5)
+ rubocop (1.21.0)
+ parallel (~> 1.10)
+ parser (>= 3.0.0.0)
+ rainbow (>= 2.2.2, < 4.0)
+ regexp_parser (>= 1.8, < 3.0)
+ rexml
+ rubocop-ast (>= 1.9.1, < 2.0)
+ ruby-progressbar (~> 1.7)
+ unicode-display_width (>= 1.4.0, < 3.0)
+ rubocop-ast (1.11.0)
+ parser (>= 3.0.1.1)
+ ruby-progressbar (1.11.0)
+ ruby2d (0.11.0)
+ unicode-display_width (2.1.0)
+
+PLATFORMS
+ x86_64-linux
+
+DEPENDENCIES
+ rake (~> 13.0)
+ rubocop (~> 1.7)
+ ruby2d-camera!
+
+BUNDLED WITH
+ 2.2.27
diff --git a/example/README.mdown b/example/README.mdown
new file mode 100644
index 0000000..186f6e3
--- /dev/null
+++ b/example/README.mdown
@@ -0,0 +1,3 @@
+### Example Is Currently Broken
+
+Most likely an issue with the example code, but is too spaghetti for me to want to revisit it
diff --git a/lib/ruby2d/camera.rb b/lib/ruby2d/camera.rb
index 8037b4d..3213e16 100644
--- a/lib/ruby2d/camera.rb
+++ b/lib/ruby2d/camera.rb
@@ -16,6 +16,16 @@ module Ruby2D
def objects
@objects ||= []
end
+
+ end
+
+ def self._sort_by_z
+ @sort_by_z = true
+ end
+
+ def self._resolve_z_sorting
+ objects.sort_by!(&:z) if @sort_by_z
+ @sort_by_z = false
end
def self.debug_x
@@ -37,9 +47,9 @@ module Ruby2D
# Adding objects so they are
# tracked by the Camera
def self.<<(item)
- objects.push(item) unless objects.include?(item)
- objects.sort_by! do |n|
- n.z
+ unless objects.include?(item)
+ objects.push(item)
+ self._sort_by_z
end
end
@@ -50,6 +60,7 @@ module Ruby2D
# Redraw all objects that
# are tracked by the Camera
def self._redraw(auto_purge: false)
+ self._resolve_z_sorting
objects.each(&:_draw)
end
diff --git a/lib/ruby2d/camera/circle.rb b/lib/ruby2d/camera/circle.rb
index 60629df..2896055 100644
--- a/lib/ruby2d/camera/circle.rb
+++ b/lib/ruby2d/camera/circle.rb
@@ -28,6 +28,11 @@ module Ruby2D
Window.remove(self)
end
+ def z=(z)
+ super(z)
+ Ruby2D::Camera._sort_by_z
+ end
+
def remove
@hide = true
end
diff --git a/lib/ruby2d/camera/image.rb b/lib/ruby2d/camera/image.rb
index dccbec9..aa72685 100644
--- a/lib/ruby2d/camera/image.rb
+++ b/lib/ruby2d/camera/image.rb
@@ -34,6 +34,11 @@ module Camera
Window.remove(self)
end
+ def z=(z)
+ super(z)
+ Ruby2D::Camera._sort_by_z
+ end
+
def remove
@hide = true
end
diff --git a/lib/ruby2d/camera/line.rb b/lib/ruby2d/camera/line.rb
index f6d8f03..6019f3c 100644
--- a/lib/ruby2d/camera/line.rb
+++ b/lib/ruby2d/camera/line.rb
@@ -45,15 +45,20 @@ module Ruby2D
end
# Methods for moving the shape
+ attr_writer :x, :y
+
def x
@x ||= 0
end
- attr_writer :x, :y
-
def y
@y ||= 0
end
+
+ def z=(z)
+ super(z)
+ Ruby2D::Camera._sort_by_z
+ end
end
end
end
diff --git a/lib/ruby2d/camera/quad.rb b/lib/ruby2d/camera/quad.rb
index 5b778b9..24ba516 100644
--- a/lib/ruby2d/camera/quad.rb
+++ b/lib/ruby2d/camera/quad.rb
@@ -49,15 +49,20 @@ module Ruby2D
end
# Methods for moving the shape
+ attr_writer :x, :y
+
def x
@x ||= 0
end
- attr_writer :x, :y
-
def y
@y ||= 0
end
+
+ def z=(z)
+ super(z)
+ Ruby2D::Camera._sort_by_z
+ end
end
end
end
diff --git a/lib/ruby2d/camera/rectangle.rb b/lib/ruby2d/camera/rectangle.rb
index 4d06eec..b3758b6 100644
--- a/lib/ruby2d/camera/rectangle.rb
+++ b/lib/ruby2d/camera/rectangle.rb
@@ -57,15 +57,20 @@ module Ruby2D
end
# Methods for moving the shape
+ attr_writer :x, :y
+
def x
@x ||= 0
end
- attr_writer :x, :y
-
def y
@y ||= 0
end
+
+ def z=(z)
+ super(z)
+ Ruby2D::Camera._sort_by_z
+ end
end
end
end
diff --git a/lib/ruby2d/camera/sprite.rb b/lib/ruby2d/camera/sprite.rb
index a1fb7b8..d01a86f 100644
--- a/lib/ruby2d/camera/sprite.rb
+++ b/lib/ruby2d/camera/sprite.rb
@@ -49,6 +49,11 @@ module Ruby2D
Window.remove(self)
end
+ def z=(z)
+ super(z)
+ Ruby2D::Camera._sort_by_z
+ end
+
def remove
@hide = true
end
diff --git a/lib/ruby2d/camera/square.rb b/lib/ruby2d/camera/square.rb
index 75e1e83..b6f0321 100644
--- a/lib/ruby2d/camera/square.rb
+++ b/lib/ruby2d/camera/square.rb
@@ -57,15 +57,20 @@ module Ruby2D
end
# Methods for moving the shape
+ attr_writer :x, :y
+
def x
@x ||= 0
end
- attr_writer :x, :y
-
def y
@y ||= 0
end
+
+ def z=(z)
+ super(z)
+ Ruby2D::Camera._sort_by_z
+ end
end
end
end
diff --git a/lib/ruby2d/camera/text.rb b/lib/ruby2d/camera/text.rb
index 00f15b3..da23edb 100644
--- a/lib/ruby2d/camera/text.rb
+++ b/lib/ruby2d/camera/text.rb
@@ -46,6 +46,11 @@ module Ruby2D
Window.remove(self)
end
+ def z=(z)
+ super(z)
+ Ruby2D::Camera._sort_by_z
+ end
+
def remove
@hide = true
end
diff --git a/lib/ruby2d/camera/triangle.rb b/lib/ruby2d/camera/triangle.rb
index b506fb4..56e2aef 100644
--- a/lib/ruby2d/camera/triangle.rb
+++ b/lib/ruby2d/camera/triangle.rb
@@ -44,15 +44,20 @@ module Ruby2D
end
# Methods for moving the shape
+ attr_writer :x, :y
+
def x
@x ||= 0
end
- attr_writer :x, :y
-
def y
@y ||= 0
end
+
+ def z=(z)
+ super(z)
+ Ruby2D::Camera._sort_by_z
+ end
end
end
end
diff --git a/lib/ruby2d/camera/version.rb b/lib/ruby2d/camera/version.rb
index 2372efc..1b12ce9 100644
--- a/lib/ruby2d/camera/version.rb
+++ b/lib/ruby2d/camera/version.rb
@@ -2,6 +2,6 @@
module Ruby2d
module Camera
- VERSION = '1.1.0'
+ VERSION = '1.1.1.beta'
end
end
diff --git a/run.rb b/run.rb
deleted file mode 100644
index 6e5c69c..0000000
--- a/run.rb
+++ /dev/null
@@ -1,248 +0,0 @@
-# frozen_string_literal: true
-
-require 'ruby2d'
-require 'ruby2d/camera'
-require_relative 'house'
-require_relative 'room'
-
-Window.set(icon: './assets/blobcoolthink.png',
- width: 1280,
- height: 720,
- background: 'blue')
-
-
-@player = Camera::Sprite.new('./assets/sprites/mainblob-128.png',
- x: 1920 / 1.1,
- y: 1080 / 1.1,
- width: 50,
- height: 50,
- clip_width: 128,
- loop: true,
- time: 1,
- z: 99,
- animations: {
- walk: 0...60,
- stand: 60...61
- })
-@shadow = Camera::Image.new(
- 'assets/blobshadow.png',
- width: 52,
- height: 10,
- z: 4
-)
-#Camera << @shadow
[email protected] animation: :walk, loop: true
-#Camera << @player
-
-# UI
-Rectangle.new(
- width: 350,
- height: 135,
- color: 'navy',
- z: 100
-)
-@ui_pos_cam = Text.new(
- 'pos: 0,0',
- x: 10,
- y: 10,
- color: 'teal',
- z: 101
-)
-@ui_pos_ply = Text.new(
- 'pos: 0,0',
- x: 10,
- y: 40,
- color: 'teal',
- z: 101
-)
-@ui_zoom = Text.new(
- 'zoom: 0',
- x: 10,
- y: 70,
- color: 'lime',
- z: 101
-)
-@ui_rotation = Text.new(
- 'rotation: 0',
- x: 10,
- y: 100,
- color: 'lime',
- z: 101
-)
-Rectangle.new(
- x: (Window.width - 120),
- width: 120,
- height: 45,
- color: 'navy',
- z: 100
-)
-@ui_fps = Text.new(
- 'fps: 60.00',
- x: (Window.width - 110),
- y: 10,
- color: 'teal',
- z: 101
-)
-
-
-
-# How fast the player can move
-@speed = 5
-
-# Initializing
-@player_movement_x = 0
-@player_movement_y = 0
-@pressed_space = false
-@scene_transition_into = false
-@scene_transition_out = false
-@indoors = false
-@house = nil
-@room = nil
-
-on :key do |event|
- if event.key == 'w'
- @player_movement_y -= @speed unless @scene_transition_into || @scene_transition_out
- end
- if event.key == 's'
- @player_movement_y += @speed unless @scene_transition_into || @scene_transition_out
- end
- if event.key == 'd'
- @player_movement_x += @speed unless @scene_transition_into || @scene_transition_out
- end
- if event.key == 'a'
- @player_movement_x -= @speed unless @scene_transition_into || @scene_transition_out
- end
- if event.key == 'space'
- @pressed_space = true unless @scene_transition_into || @scene_transition_out
- end
- if event.key == 'q'
- Camera.angle += 1 unless @scene_transition_into || @scene_transition_out
- end
- if event.key == 'e'
- Camera.angle -= 1 unless @scene_transition_into || @scene_transition_out
- end
- if event.key == 'r'
- unless @scene_transition_into || @scene_transition_out || Camera.angle.zero?
- if Camera.angle <= 180
- if Camera.angle > 10
- Camera.angle -= 10
- else
- Camera.angle -=1
- end
- elsif
- if Camera.angle < 350
- Camera.angle += 10
- else
- Camera.angle += 1
- end
- end
- end
- end
-end
-
-update do
- if (@player.x > 2371 && @player_movement_x.positive?) || (@player.x.negative? && @player_movement_x.negative?)
- @player_movement_x = 0
- end
- if (@player.y > 1608 && @player_movement_y.positive?) || (@player.y.negative? && @player_movement_y.negative?)
- @player_movement_y = 0
- end
- if !@player_movement_y.zero? == !@player_movement_x.zero?
- @player_movement_x /= 1.4141
- @player_movement_y /= 1.4141
- end
- @player.x += @player_movement_x
- @player.y += @player_movement_y
- if @player_movement_x.negative?
- @player.play animation: :walk, loop: true
- elsif @player_movement_x.positive? || !@player_movement_y.zero?
- @player.play animation: :walk, loop: true, flip: :vertical
- else
- @player.play animation: :stand
- end
-
- if !@scene_transition_into && !@scene_transition_out
- Camera.zoom += ((-[Math.sqrt(((@player.x + (@player.width / 2) - Camera.x)**2) + ((@player.y + (@player.width / 2) - Camera.y)**2)), 350].min * 0.004) + 2 - Camera.zoom) * 0.25
- Camera.x += (@player.x + (@player.width / 2) - Camera.x) * 0.025
- Camera.y += (@player.y + (@player.height / 2) - Camera.y) * 0.025
- elsif @scene_transition_into
- if Camera.zoom < 250
- Camera.zoom *= 1.05
- Camera.angle += 5
- else
- @scene_transition_into = false
- @scene_transition_out = true
- if @room.nil?
- @house.remove
- @house = nil
- @indoors = true
- else
- @room.remove
- @room = nil
- @indoors = false
- end
- #Camera.remove @background
- @background.remove
- @background = nil
- end
- Camera.x += (@player.x + (@player.width / 2) - Camera.x) * 0.25
- Camera.y += (@player.y + (@player.height / 2) - Camera.y) * 0.25
- elsif @scene_transition_out
- if !((Camera.zoom <= (@zoom_transition * 1.001)) && (Camera.angle == @angle_transition))
- Camera.zoom /= 1.05
- Camera.angle -= 5
- else
- @scene_transition_out = false
- end
- end
-
- if @house.nil? && !@indoors
- @house = House.new(750, 300)
- @background = Camera::Image.new(
- 'assets/background.png',
- x: 100, y: 100,
- z: -1
- )
- #Camera << @background
- elsif @room.nil? && @indoors
- @room = Room.new(750,300)
- @background = Camera::Rectangle.new(
- color: 'black',
- x: 0,
- y: 0,
- width: 1920,
- height: 1080,
- z: -1
- )
- end
- @shadow.x = @player.x - 2
- @shadow.y = @player.y + 42
-
- #Camera.remove @house_text
- @house_text&.remove
- if @indoors
- @house_text = @room.visted_by?(@player)
- else
- @house_text = @house.visted_by?(@player)
- end
- unless @house_text.nil?
- #Camera << @house_text
- @house_text.center = true
- end
- if !@house_text.nil? && @pressed_space && !@scene_transition_into && !@scene_transition_out
- @scene_transition_into = true
- @angle_transition = Camera.angle
- @zoom_transition = Camera.zoom
- end
- @ui_pos_cam.text = "Camera Position: #{Camera.x.round(1)}, #{Camera.y.round(1)}"
- @ui_pos_ply.text = "Player Position: #{@player.x.round(1)}, #{@player.y.round(1)}"
- @ui_zoom.text = "Zoom: #{Camera.zoom.round(3)}"
- @ui_fps.text = "FPS: #{Window.fps.round(2)}"
- @ui_rotation.text = "Angle: #{Camera.angle}"
- @player_movement_x = 0
- @player_movement_y = 0
- @pressed_space = false
-
- #Camera.redraw
-end
-show