working on docking / ship commands

This commit is contained in:
Paul Liverman
2015-04-12 23:02:00 -07:00
parent 09614cd678
commit af14ea661f
3 changed files with 53 additions and 17 deletions

View File

@@ -72,22 +72,29 @@ end
function love.mousepressed(x, y, button) function love.mousepressed(x, y, button)
if button == "l" then if button == "l" then
for i=1,#ships do if selected then
if ships[i].selection.r then -- find out where this actually is, now the ship selected is ordered to move to this point
if pointInRadius(x, y, ships[i].x, ships[i].y, ships[i].selection.r) then selected.ship:moveTo(x * scale + hx, y * scale + hy)
-- selected else
-- NOW CHECK IF HAS NODES AND IF WE ARE SELECTING A SHIP ON A NODE! for i=1,#ships do
selected = {} if ships[i].selection.r then
selected.x = ships[i].x if pointInRadius(x, y, ships[i].x, ships[i].y, ships[i].selection.r) then
selected.y = ships[i].y -- selected
end -- NOW CHECK IF HAS NODES AND IF WE ARE SELECTING A SHIP ON A NODE!
else selected = {}
if pointInAABB(x, y, ships[i].x, ships[i].y, ships[i].selection, ships[i].rotation) then selected.ship = ships[i]
-- we are selecting it! selected.x = ships[i].x
-- NOW CHECK IF HAS NODES AND IF WE ARE SELECTING A SHIP ON A NODE! selected.y = ships[i].y
selected = {} end
selected.x = ships[i].x else
selected.y = ships[i].y if pointInAABB(x, y, ships[i].x, ships[i].y, ships[i].selection, ships[i].rotation) then
-- we are selecting it!
-- NOW CHECK IF HAS NODES AND IF WE ARE SELECTING A SHIP ON A NODE!
selected = {}
selected.ship = ships[i]
selected.x = ships[i].x
selected.y = ships[i].y
end
end end
end end
end end

View File

@@ -35,13 +35,16 @@ return function(x, y, rotation)
} }
self.dock = function(self, ship, node) self.dock = function(self, ship, node)
if self.node[node].docked then return false end if self.node[node].docked or ship.isDocked then return false end
ship.x = self.node[node].x ship.x = self.node[node].x
ship.y = self.node[node].y ship.y = self.node[node].y
ship.rotation = self.node[node].rotation ship.rotation = self.node[node].rotation
self.node[node].docked = ship self.node[node].docked = ship
ship.isDocked = true
ship.dockedTo = self
ship.dockedNode = node
return true return true
end end
@@ -49,6 +52,9 @@ return function(x, y, rotation)
if not self.node[node].docked then return false end if not self.node[node].docked then return false end
local ship = self.node[node].docked local ship = self.node[node].docked
ship.isDocked = false
ship.dockedTo = false
ship.dockedNode = false
self.node[node].docked = false self.node[node].docked = false
return ship return ship

View File

@@ -9,6 +9,12 @@ return function(x, y, rotation)
self.y = y or 0 self.y = y or 0
self.rotation = rotation or 0 self.rotation = rotation or 0
self.destination = {
x = x or 0,
y = y or 0
}
self.isMoving = false
--[[ --[[
self.selection = { self.selection = {
w = 9, w = 9,
@@ -20,6 +26,23 @@ return function(x, y, rotation)
} }
--self.node = false --self.node = false
self.isDocked = false
self.dockedTo = false
self.dockedNode = false
self.moveTo = function(self, x, y)
if self.isDocked then
self.dockedTo:undock(self.dockedNode)
end
self.destination.x = x
self.destination.y = y
self.isMoving = true
end
self.update = function(self, dt)
-- check if moving, check our speed, see how far along the "line" we can go, go there
-- if reached destination ... WELL SHIT DEST NEEDS TO BE ABLE TO KNOW IF IS SHIP OR WHATEVER
end
return self return self
end end