diff --git a/Assets/Scripts/Core/player.lua b/Assets/Scripts/Core/player.lua index 943fd54..441f635 100644 --- a/Assets/Scripts/Core/player.lua +++ b/Assets/Scripts/Core/player.lua @@ -74,7 +74,14 @@ function Player:buildExtractor() self:deselectUnits() self:selectUnits({engineer}) - deposits = self:getResourceDeposits() + deposits = {} + players = Game.getSingleton():getPlayers() + + for i = 1, #players do + deps = players[i]:getResourceDeposits() + table.move(deps, 1, #deps, #deposits + 1, deposits) + end + if #deposits == 0 then return false end depPos = deposits[1]:getPos() diff --git a/game.cpp b/game.cpp index 4e80bb4..5f15385 100644 --- a/game.cpp +++ b/game.cpp @@ -33,19 +33,7 @@ namespace battleship{ return game; } - void Game::resetLuaGameObjects(){ - sol::state_view SOL_LUA_VIEW = generateView(); - SOL_LUA_VIEW.script("game.players = {}"); - - for(int i = 0; i < players.size(); i++) - SOL_LUA_VIEW["game"]["players"][i + 1] = players[i]; - - for(int i = 0; i < players.size(); i++) - if(players[i]->isCpuPlayer()){ - string plStr = "game.players[" + to_string(i + 1) + "]"; - SOL_LUA_VIEW.script("executeBtNode(" + plStr + ", " + plStr + ".behaviour)"); - } - } + void Game::resetLuaGameObjects(){} void Game::endGame(bool victory){ ended = true; @@ -60,7 +48,16 @@ namespace battleship{ } void Game::update(){ - resetLuaGameObjects(); + sol::state_view SOL_LUA_VIEW = generateView(); + + for(int i = 0; i < players.size(); i++) + SOL_LUA_VIEW["game"]["players"][i + 1] = players[i]; + + for(int i = 0; i < players.size(); i++) + if(players[i]->isCpuPlayer()){ + string plStr = "game.players[" + to_string(i + 1) + "]"; + SOL_LUA_VIEW.script("executeBtNode(" + plStr + ", " + plStr + ".behaviour)"); + } int numPlayersWithUnits = 0; @@ -88,7 +85,7 @@ namespace battleship{ void Game::removeAllElements(){ - resetLuaGameObjects(); + generateView().script("game.players = {}"); while(!players.empty()){ delete players[0]; diff --git a/playButton.cpp b/playButton.cpp index a91bc52..d22026c 100644 --- a/playButton.cpp +++ b/playButton.cpp @@ -67,7 +67,7 @@ namespace battleship{ int team = stoi(teamsListboxes[i]->getContents()[teamsListboxes[i]->getSelectedOption()]); string name = (cpuPlayer ? "CPU player #" + to_string(i) : "Player"); - game->addPlayer(new Player(difficulty, faction, team, color, cpuPlayer, map->getSpawnPoint(i), name)); + game->addPlayer(new Player(difficulty, faction, team, color, cpuPlayer, i, name)); } map->loadPlayerGameObjects();