Updates to support changes to CyberarmEngine

This commit is contained in:
2023-03-30 10:49:47 -05:00
parent e8702f2b2e
commit b418c402fb
5 changed files with 28 additions and 24 deletions

View File

@@ -1,8 +1,10 @@
class IMICRTS
class Camera
include CyberarmEngine::Common
attr_reader :viewport, :position, :velocity, :zoom, :drag
def initialize(viewport:, scroll_speed: 10, position: CyberarmEngine::Vector.new(0.0, 0.0))
def initialize(viewport: [0, 0, window.width, window.height], scroll_speed: 10, position: CyberarmEngine::Vector.new(0.0, 0.0))
@viewport = CyberarmEngine::BoundingBox.new(viewport[0], viewport[1], viewport[2], viewport[3])
@scroll_speed = scroll_speed
@position = position
@@ -16,10 +18,6 @@ class IMICRTS
@grab_drag = 0.5 # Used when camera is panned using middle mouse button
end
def window;
$window;
end
def draw(&block)
if block
Gosu.clip_to(@viewport.min.x, @viewport.min.y, @viewport.max.x, @viewport.max.y) do

View File

@@ -1,5 +1,7 @@
class IMICRTS
class Map
include CyberarmEngine::Common
attr_reader :tile_size, :tiles, :ores, :spawnpoints, :width, :height, :map_file
def initialize(map_file:)
@@ -88,7 +90,7 @@ class IMICRTS
_tiles = []
visiblity_map = observer.visiblity_map
top_left = (observer.camera.center - observer.camera.position) - CyberarmEngine::Vector.new($window.width / 2, $window.height / 2) / observer.camera.zoom
top_left = (observer.camera.center - observer.camera.position) - CyberarmEngine::Vector.new(window.width / 2, window.height / 2) / observer.camera.zoom
top_left /= @tile_size
top_left.x = top_left.x.floor
@@ -96,8 +98,8 @@ class IMICRTS
# +1 to overdraw a bit to hide pop-in
_width = ((($window.width / @tile_size) + 2) / observer.camera.zoom).ceil
_height = ((($window.height / @tile_size) + 2) / observer.camera.zoom).ceil
_width = (((window.width / @tile_size) + 2) / observer.camera.zoom).ceil
_height = (((window.height / @tile_size) + 2) / observer.camera.zoom).ceil
_height.times do |y|
_width.times do |x|

View File

@@ -87,7 +87,7 @@ class IMICRTS
end
def update
@position -= (@direction * @speed) * $window.dt
@position -= (@direction * @speed) * CyberarmEngine::Window.dt
end
def die?

View File

@@ -14,7 +14,7 @@ class IMICRTS
@entities = []
@orders = []
@camera = Camera.new(viewport: [0, 0, $window.width, $window.height])
@camera = Camera.new
@last_camera_position = @camera.position.clone
@camera_moved = true
@camera_move_threshold = 5
@@ -27,7 +27,10 @@ class IMICRTS
@camera_moved = (@last_camera_position - @camera.position.clone).sum > @camera_move_threshold
@last_camera_position = @camera.position.clone
@entities.each { |ent| ent.tick(tick_id); @visiblity_map.update(ent) }
@entities.each do |ent|
ent.tick(tick_id)
@visiblity_map.update(ent)
end
end
def update
@@ -58,4 +61,4 @@ class IMICRTS
end
end
end
end
end