fixed crash upon unpause bug

This commit is contained in:
devZoGok
2025-06-22 15:06:55 +03:00
parent 617c137a8d
commit eebab2b78b
4 changed files with 19 additions and 17 deletions
+17 -7
View File
@@ -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);
+1
View File
@@ -20,6 +20,7 @@ namespace battleship{
public:
static Game* getSingleton();
void update();
void updateLuaPlayers(bool);
void togglePause();
void removeAllElements();
void changeUnitPlayer(Unit*, Player*);
+1 -9
View File
@@ -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<Player*> 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() {
-1
View File
@@ -51,7 +51,6 @@ namespace battleship{
private:
bool isMainMenuActive = false;
std::vector<std::string> modelPaths;
Player *mainPlayer;
int playerId;
std::string mapName = "";
ActiveGameState* activeState;