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:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user