Improved place buildings tool to use the grid

This commit is contained in:
2019-11-28 08:17:19 -06:00
parent 8869ddb3de
commit e3d1a84efa
9 changed files with 95 additions and 21 deletions

View File

@@ -17,12 +17,33 @@ class IMICRTS
def update
# TODO: ensure that construction worker is alive
cancel_tool if @construction_worker.die?
@preview.position = @player.camera.transform(@game.window.mouse)
@preview.position.z = ZOrder::OVERLAY
vector = vector_to_grid(@game.window.mouse)
if tile = @director.map.tile_at(vector.x, vector.y)
position = tile.position.clone
@preview.position = position
@preview.position.z = ZOrder::OVERLAY
else
@preview.position.z = -10
end
@preview.color.alpha = 150
end
def use_tool(vector)
return if @game.sidebar.hit?(@game.window.mouse_x, @game.window.mouse_y)
tile = @director.map.tile_at(vector.x, vector.y)
return unless tile
position = tile.position.clone
@director.spawn_entity(
player_id: @player.id, name: @entity,
position: CyberarmEngine::Vector.new(position.x, position.y, ZOrder::BUILDING)
)
cancel_tool
end
def button_down(id)
case id
when Gosu::MsRight
@@ -33,16 +54,7 @@ class IMICRTS
def button_up(id)
case id
when Gosu::MsLeft
return if @game.sidebar.hit?(@game.window.mouse_x, @game.window.mouse_y)
transform = @player.camera.transform(@game.window.mouse)
@director.spawn_entity(
player_id: @player.id, name: @entity,
position: CyberarmEngine::Vector.new(transform.x, transform.y, ZOrder::BUILDING)
)
cancel_tool
use_tool(vector_to_grid(@game.window.mouse))
end
end
end