mirror of
https://github.com/devZoGok/PlanetFleet.git
synced 2026-08-26 19:43:29 +00:00
corrected reseting of Lua scripts after toggling game pause state
This commit is contained in:
@@ -1,11 +1,24 @@
|
||||
#include "game.h"
|
||||
#include "player.h"
|
||||
#include "projectile.h"
|
||||
#include "gameManager.h"
|
||||
#include "activeGameState.h"
|
||||
#include "inGameAppState.h"
|
||||
#include "concreteGuiManager.h"
|
||||
#include "defConfigs.h"
|
||||
|
||||
#include <assetManager.h>
|
||||
|
||||
#include <stateManager.h>
|
||||
|
||||
#include <solUtil.h>
|
||||
|
||||
#include <SFML/Audio.hpp>
|
||||
|
||||
namespace battleship{
|
||||
using namespace std;
|
||||
using namespace vb01;
|
||||
using namespace gameBase;
|
||||
|
||||
static Game *game = nullptr;
|
||||
|
||||
@@ -50,5 +63,28 @@ namespace battleship{
|
||||
}
|
||||
|
||||
void Game::togglePause(){
|
||||
GameManager *gm = GameManager::getSingleton();
|
||||
ConcreteGuiManager *guiManager = ConcreteGuiManager::getSingleton();
|
||||
ActiveGameState *activeState = ((InGameAppState*)gm->getStateManager()->getAppStateByType(AppStateType::IN_GAME_STATE))->getActiveState();
|
||||
|
||||
if (!paused) {
|
||||
gm->getStateManager()->dettachAppState(activeState);
|
||||
guiManager->readLuaScreenScript("gamePaused.lua", activeState->getButtons());
|
||||
}
|
||||
else {
|
||||
for(string f : configData::scripts)
|
||||
generateView().script_file(gm->getPath() + f);
|
||||
|
||||
guiManager->readLuaScreenScript("inGame.lua", activeState->getButtons());
|
||||
AssetManager::getSingleton()->load(gm->getPath() + (string)generateView()["modelPrefix"], true);
|
||||
|
||||
for(Player *p : Game::getSingleton()->getPlayers())
|
||||
for(Unit *u : p->getUnits())
|
||||
u->reinit();
|
||||
|
||||
gm->getStateManager()->attachAppState(activeState);
|
||||
}
|
||||
|
||||
paused = !paused;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-27
@@ -27,8 +27,7 @@ namespace battleship{
|
||||
InGameAppState::ResumeButton::ResumeButton(Vector2 pos, Vector2 size) : Button(pos, size, "Resume", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true) {}
|
||||
|
||||
void InGameAppState::ResumeButton::onClick() {
|
||||
StateManager *sm = GameManager::getSingleton()->getStateManager();
|
||||
((InGameAppState*)sm->getAppStateByType((int)AppStateType::IN_GAME_STATE))->toggleMainMenu();
|
||||
Game::getSingleton()->togglePause();
|
||||
}
|
||||
|
||||
InGameAppState::ConsoleButton::ConsoleButton(Vector2 pos, Vector2 size) : Button(pos, size, "Console", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true) { }
|
||||
@@ -98,35 +97,11 @@ namespace battleship{
|
||||
Game::getSingleton()->update();
|
||||
}
|
||||
|
||||
void InGameAppState::toggleMainMenu() {
|
||||
GameManager *gm = GameManager::getSingleton();
|
||||
ConcreteGuiManager *guiManager = ConcreteGuiManager::getSingleton();
|
||||
|
||||
if (!isMainMenuActive) {
|
||||
isMainMenuActive = true;
|
||||
gm->getStateManager()->dettachAppState(activeState);
|
||||
|
||||
guiManager->readLuaScreenScript("gamePaused.lua", activeState->getButtons());
|
||||
}
|
||||
else {
|
||||
isMainMenuActive = false;
|
||||
gm->getStateManager()->attachAppState(activeState);
|
||||
|
||||
AssetManager::getSingleton()->load(gm->getPath() + (string)generateView()["modelPrefix"], true);
|
||||
|
||||
guiManager->readLuaScreenScript("inGame.lua", activeState->getButtons());
|
||||
|
||||
for(Player *p : Game::getSingleton()->getPlayers())
|
||||
for(Unit *u : p->getUnits())
|
||||
u->reinit();
|
||||
}
|
||||
}
|
||||
|
||||
void InGameAppState::onAction(int bind, bool isPressed) {
|
||||
switch((Bind)bind){
|
||||
case Bind::TOGGLE_MAIN_MENU:
|
||||
if(isPressed && !GameObjectFrameController::getSingleton()->isPlacingFrames())
|
||||
toggleMainMenu();
|
||||
Game::getSingleton()->togglePause();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -12,6 +12,7 @@
|
||||
|
||||
#include <vector>
|
||||
|
||||
//TODO refactor dependence on ActiveGameState
|
||||
namespace battleship{
|
||||
class InGameAppState : public gameBase::AbstractAppState {
|
||||
public:
|
||||
@@ -46,14 +47,13 @@ namespace battleship{
|
||||
void onAction(int, bool);
|
||||
void onAnalog(int, float);
|
||||
std::vector<Unit*> getSelectedUnits(Player*);
|
||||
inline ActiveGameState* getActiveState(){return activeState;}
|
||||
private:
|
||||
bool isMainMenuActive = false;
|
||||
std::vector<std::string> difficultyLevels, factions, modelPaths;
|
||||
Player *mainPlayer;
|
||||
int playerId;
|
||||
ActiveGameState* activeState;
|
||||
|
||||
void toggleMainMenu();
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user