fixed merge bugs

removed reseting player Lua counterparts
CPU players look for all resource deposits
This commit is contained in:
devZoGok
2025-03-08 14:48:40 +02:00
parent 00363f3832
commit c34d70526c
3 changed files with 21 additions and 17 deletions
+8 -1
View File
@@ -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()
+12 -15
View File
@@ -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];
+1 -1
View File
@@ -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();