From 902e48d53ae60915fc09d79476e6737fa3536e5f Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Thu, 21 Nov 2019 12:31:29 -0600 Subject: [PATCH] Don't issue commands for moving and de/selecting entities, now able to 'pick' single entity if clicked on --- lib/entity_controller.rb | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/lib/entity_controller.rb b/lib/entity_controller.rb index ec58d80..d730050 100644 --- a/lib/entity_controller.rb +++ b/lib/entity_controller.rb @@ -46,10 +46,12 @@ class IMICRTS @selection_start = @player.camera.transform(@game.window.mouse) end when Gosu::MS_RIGHT - @director.schedule_order(Order::MOVE, @player.id, @player.camera.transform(@game.window.mouse)) + if @selected_entities.size > 0 + @director.schedule_order(Order::MOVE, @player.id, @player.camera.transform(@game.window.mouse)) - @game.overlays << Game::Overlay.new(Gosu::Image.new("#{IMICRTS::ASSETS_PATH}/cursors/move.png"), @player.camera.transform(@game.window.mouse), 0, 255) - @game.overlays.last.position.z = ZOrder::OVERLAY + @game.overlays << Game::Overlay.new(Gosu::Image.new("#{IMICRTS::ASSETS_PATH}/cursors/move.png"), @player.camera.transform(@game.window.mouse), 0, 255) + @game.overlays.last.position.z = ZOrder::OVERLAY + end end end @@ -62,7 +64,24 @@ class IMICRTS diff = (@player.selected_entities - @selected_entities) - @director.schedule_order(Order::DESELECTED_UNITS, @player.id, diff) + @director.schedule_order(Order::DESELECTED_UNITS, @player.id, diff) if diff.size > 0 + if @selected_entities.size > 0 + @director.schedule_order(Order::SELECTED_UNITS, @player.id, @selected_entities) + else + pick_entity + end + end + end + + def pick_entity + transform = @player.camera.transform(@game.window.mouse) + + found = @player.entities.find do |ent| + transform.distance(ent.position) <= ent.radius + end + + if found + @selected_entities = [found] @director.schedule_order(Order::SELECTED_UNITS, @player.id, @selected_entities) end end