diff --git a/Gemfile.lock b/Gemfile.lock index f2d326f..5b7c597 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,25 +1,26 @@ GEM remote: https://rubygems.org/ specs: - clipboard (1.3.5) - cyberarm_engine (0.15.0) - clipboard (~> 1.3.5) - excon (~> 0.78.0) - gosu (~> 1.0.0) + cyberarm_engine (0.23.0) + excon (~> 0.88) + gosu (~> 1.1) gosu_more_drawables (~> 0.3) - excon (0.78.1) - gosu (1.0.0) + excon (0.99.0) + gosu (1.4.5) gosu_more_drawables (0.3.1) - mini_portile2 (2.8.0) - nokogiri (1.13.6) + mini_portile2 (2.8.1) + nokogiri (1.14.2) mini_portile2 (~> 2.8.0) racc (~> 1.4) - nokogiri (1.13.6-x86_64-linux) + nokogiri (1.14.2-x64-mingw-ucrt) racc (~> 1.4) - racc (1.6.0) + nokogiri (1.14.2-x86_64-linux) + racc (~> 1.4) + racc (1.6.2) PLATFORMS ruby + x64-mingw-ucrt x86_64-linux DEPENDENCIES @@ -27,4 +28,4 @@ DEPENDENCIES nokogiri BUNDLED WITH - 2.2.3 + 2.4.8 diff --git a/lib/camera.rb b/lib/camera.rb index 28d480c..e0c35b3 100644 --- a/lib/camera.rb +++ b/lib/camera.rb @@ -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 diff --git a/lib/map.rb b/lib/map.rb index 073b4a5..e45fe97 100644 --- a/lib/map.rb +++ b/lib/map.rb @@ -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| diff --git a/lib/particle_emitter.rb b/lib/particle_emitter.rb index 4f57d2d..0c76360 100644 --- a/lib/particle_emitter.rb +++ b/lib/particle_emitter.rb @@ -87,7 +87,7 @@ class IMICRTS end def update - @position -= (@direction * @speed) * $window.dt + @position -= (@direction * @speed) * CyberarmEngine::Window.dt end def die? diff --git a/lib/player.rb b/lib/player.rb index e8be887..fa6a71c 100644 --- a/lib/player.rb +++ b/lib/player.rb @@ -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 \ No newline at end of file +end