diff --git a/game.cpp b/game.cpp index 15641fb..f19695c 100644 --- a/game.cpp +++ b/game.cpp @@ -43,11 +43,9 @@ namespace battleship{ } void Game::update(){ + updateLuaPlayers(false); 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) + "]"; @@ -78,6 +76,15 @@ namespace battleship{ FxManager::getSingleton()->update(); } + void Game::updateLuaPlayers(bool resetBehaviour){ + sol::state_view SOL_LUA_VIEW = generateView(); + + for(int i = 0; i < players.size(); i++) + SOL_LUA_VIEW["game"]["players"][i + 1] = players[i]; + + if(resetBehaviour) + SOL_LUA_VIEW.script_file(GameManager::getSingleton()->getPath() + "Scripts/Core/playerInit.lua"); + } void Game::removeAllElements(){ generateView().script("game.players = {}"); @@ -101,11 +108,14 @@ namespace battleship{ guiManager->readLuaScreenScript("gamePaused.lua", activeState->getGuiButtons()); } else { - for(string f : configData::scripts) - generateView().script_file(gm->getPath() + f); - - guiManager->readLuaScreenScript("inGame.lua", activeState->getGuiButtons()); sol::state_view SOL_LUA_VIEW = generateView(); + + for(string f : configData::scripts) + SOL_LUA_VIEW.script_file(gm->getPath() + f); + + updateLuaPlayers(true); + guiManager->readLuaScreenScript("inGame.lua", activeState->getGuiButtons()); + string gop = SOL_LUA_VIEW["gameObjPrefix"], vfxp = SOL_LUA_VIEW["vfxPrefix"]; AssetManager::getSingleton()->load(gm->getPath() + gop, true); AssetManager::getSingleton()->load(gm->getPath() + vfxp, true); diff --git a/game.h b/game.h index 1d862af..e5a283d 100644 --- a/game.h +++ b/game.h @@ -20,6 +20,7 @@ namespace battleship{ public: static Game* getSingleton(); void update(); + void updateLuaPlayers(bool); void togglePause(); void removeAllElements(); void changeUnitPlayer(Unit*, Player*); diff --git a/inGameAppState.cpp b/inGameAppState.cpp index ea67c27..1013194 100755 --- a/inGameAppState.cpp +++ b/inGameAppState.cpp @@ -68,21 +68,13 @@ namespace battleship{ cam->setPosition(Map::getSingleton()->getSpawnPoint(playerId) + Vector3(1, 1, 1) * configData::CAMERA_DISTANCE); cam->lookAt(Vector3(0, -1, -1).norm(), Vector3(0, 1, -1).norm()); - mainPlayer = Game::getSingleton()->getPlayer(playerId); - GameManager *gm = GameManager::getSingleton(); StateManager *stateManager = gm->getStateManager(); GuiAppState *guiState = ((GuiAppState*)stateManager->getAppStateByType((int)AppStateType::GUI_STATE)); activeState = new ActiveGameState(guiState, playerId); stateManager->attachAppState(activeState); - sol::state_view SOL_LUA_VIEW = generateView(); - vector players = Game::getSingleton()->getPlayers(); - - for(int i = 0; i < players.size(); i++) - SOL_LUA_VIEW["game"]["players"][i + 1] = players[i]; - - SOL_LUA_VIEW.script_file(gm->getPath() + "Scripts/Core/playerInit.lua"); + Game::getSingleton()->updateLuaPlayers(true); } void InGameAppState::onDettached() { diff --git a/inGameAppState.h b/inGameAppState.h index 1f2c036..14172d5 100755 --- a/inGameAppState.h +++ b/inGameAppState.h @@ -51,7 +51,6 @@ namespace battleship{ private: bool isMainMenuActive = false; std::vector modelPaths; - Player *mainPlayer; int playerId; std::string mapName = ""; ActiveGameState* activeState;