diff --git a/Assets/Scripts/Core/player.lua b/Assets/Scripts/Core/player.lua index 7709556..8fbb056 100644 --- a/Assets/Scripts/Core/player.lua +++ b/Assets/Scripts/Core/player.lua @@ -55,14 +55,15 @@ function Player:buildExtractor() self:selectUnits({engineer}) deposits = self:getResourceDeposits() - depPos = nil + if #deposits == 0 then return false end - if #deposits > 0 then - depPos = deposits[1]:getPos() - end + depPos = deposits[1]:getPos() + spawnPoint = self:getSpawnPoint() - if depPos == nil then - return false + for i = 1, #deposits do + if deposits[i]:getPos():getDistanceFrom(spawnPoint) < depPos:getDistanceFrom(spawnPoint) then + depPos = deposits[i]:getPos() + end end extractor = GameObjectFactory.createUnit(self, UnitId.EXTRACTOR, depPos, Quaternion:new(1, 0, 0, 0), 0) diff --git a/gameManager.cpp b/gameManager.cpp index af66839..09d541a 100755 --- a/gameManager.cpp +++ b/gameManager.cpp @@ -111,6 +111,7 @@ namespace battleship{ "y", &Vector3::y, "z", &Vector3::z, "norm", &Vector3::norm, + "getDistanceFrom", &Vector3::getDistanceFrom, "add", [](Vector3 v1, Vector3 v2){return v1 + v2;}, "subtr", [](Vector3 v1, Vector3 v2){return v1 - v2;}, "mult", [](Vector3 v1, float s){return v1 * s;},