1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-06 09:09:40 +02:00

Add game pause

This commit is contained in:
nordsoft
2023-10-07 01:44:37 +02:00
parent 088ce9b948
commit d7d435dcb7
23 changed files with 83 additions and 18 deletions

View File

@@ -16,6 +16,7 @@
#include "processors/PlayerMessageProcessor.h"
#include "processors/TurnOrderProcessor.h"
#include "queries/QueriesProcessor.h"
#include "queries/MapQueries.h"
#include "../lib/IGameCallback.h"
#include "../lib/mapObjects/CGTownInstance.h"
@@ -35,6 +36,14 @@ void ApplyGhNetPackVisitor::visitSaveGame(SaveGame & pack)
result = true;
}
void ApplyGhNetPackVisitor::visitGamePause(GamePause & pack)
{
auto turnQuery = std::make_shared<TimerPauseQuery>(&gh, pack.player);
turnQuery->queryID = QueryID::CLIENT;
gh.queries->addQuery(turnQuery);
result = true;
}
void ApplyGhNetPackVisitor::visitEndTurn(EndTurn & pack)
{
gh.throwIfWrongPlayer(&pack);

View File

@@ -29,6 +29,7 @@ public:
}
virtual void visitSaveGame(SaveGame & pack) override;
virtual void visitGamePause(GamePause & pack) override;
virtual void visitEndTurn(EndTurn & pack) override;
virtual void visitDismissHero(DismissHero & pack) override;
virtual void visitMoveHero(MoveHero & pack) override;

View File

@@ -216,7 +216,7 @@ void TurnOrderProcessor::doStartPlayerTurn(PlayerColor which)
awaitingPlayers.erase(which);
gameHandler->onPlayerTurnStarted(which);
auto turnQuery = std::make_shared<PlayerStartsTurnQuery>(gameHandler, which);
auto turnQuery = std::make_shared<TimerPauseQuery>(gameHandler, which);
gameHandler->queries->addQuery(turnQuery);
PlayerStartsTurn pst;

View File

@@ -15,28 +15,28 @@
#include "../../lib/mapObjects/MiscObjects.h"
#include "../../lib/serializer/Cast.h"
PlayerStartsTurnQuery::PlayerStartsTurnQuery(CGameHandler * owner, PlayerColor player):
TimerPauseQuery::TimerPauseQuery(CGameHandler * owner, PlayerColor player):
CQuery(owner)
{
addPlayer(player);
}
bool PlayerStartsTurnQuery::blocksPack(const CPack *pack) const
bool TimerPauseQuery::blocksPack(const CPack *pack) const
{
return blockAllButReply(pack);
}
void PlayerStartsTurnQuery::onAdding(PlayerColor color)
void TimerPauseQuery::onAdding(PlayerColor color)
{
gh->turnTimerHandler.setTimerEnabled(color, false);
}
void PlayerStartsTurnQuery::onRemoval(PlayerColor color)
void TimerPauseQuery::onRemoval(PlayerColor color)
{
gh->turnTimerHandler.setTimerEnabled(color, true);
}
bool PlayerStartsTurnQuery::endsByPlayerAnswer() const
bool TimerPauseQuery::endsByPlayerAnswer() const
{
return true;
}

View File

@@ -15,12 +15,12 @@
class TurnTimerHandler;
//Created when player starts turn
//Removed when player accepts a turn
class PlayerStartsTurnQuery : public CQuery
//Created when player starts turn or when player puts game on [ause
//Removed when player accepts a turn or continur play
class TimerPauseQuery : public CQuery
{
public:
PlayerStartsTurnQuery(CGameHandler * owner, PlayerColor player);
TimerPauseQuery(CGameHandler * owner, PlayerColor player);
bool blocksPack(const CPack *pack) const override;
void onAdding(PlayerColor color) override;