Fixing some timer problems. Starting an internet game now works again. There are still some issues: Games are never terminated, and error handling is not implemented (errors will terminate the server).
This commit is contained in:
@@ -630,7 +630,6 @@ ServerGameStateStartGame::InternalProcessPacket(ServerGameThread &server, Sessio
|
|||||||
// Everyone is ready.
|
// Everyone is ready.
|
||||||
server.GetSessionManager().ResetAllReadyFlags();
|
server.GetSessionManager().ResetAllReadyFlags();
|
||||||
DoStart(server);
|
DoStart(server);
|
||||||
server.SetState(SERVER_START_GAME_STATE::Instance());
|
|
||||||
retVal = MSG_SOCK_INIT_DONE;
|
retVal = MSG_SOCK_INIT_DONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -646,7 +645,6 @@ ServerGameStateStartGame::TimerTimeout(ServerGameThread &server)
|
|||||||
// TODO report successful start! -> new callback?!
|
// TODO report successful start! -> new callback?!
|
||||||
//retVal = MSG_SOCK_INIT_DONE;
|
//retVal = MSG_SOCK_INIT_DONE;
|
||||||
DoStart(server);
|
DoStart(server);
|
||||||
server.SetState(SERVER_START_GAME_STATE::Instance());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -843,6 +841,10 @@ ServerGameStateHand::TimerLoop(ServerGameThread &server)
|
|||||||
else if (!server.GetSessionManager().IsPlayerConnected(curPlayer->getMyName()))
|
else if (!server.GetSessionManager().IsPlayerConnected(curPlayer->getMyName()))
|
||||||
{
|
{
|
||||||
PerformPlayerAction(server, curPlayer, PLAYER_ACTION_FOLD, 0);
|
PerformPlayerAction(server, curPlayer, PLAYER_ACTION_FOLD, 0);
|
||||||
|
server.SetStateTimerId(
|
||||||
|
server.GetLobbyThread().GetTimerManager().RegisterTimer(
|
||||||
|
SERVER_LOOP_DELAY_MSEC,
|
||||||
|
boost::bind(&ServerGameStateHand::TimerLoop, this, boost::ref(server))));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -936,7 +938,6 @@ ServerGameStateHand::TimerLoop(ServerGameThread &server)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO if not state changed and not timer set, set new loop timer.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ using namespace std;
|
|||||||
|
|
||||||
ServerGameThread::ServerGameThread(ServerLobbyThread &lobbyThread, u_int32_t id, const string &name, const string &pwd, const GameData &gameData, unsigned adminPlayerId, GuiInterface &gui, ConfigFile *playerConfig)
|
ServerGameThread::ServerGameThread(ServerLobbyThread &lobbyThread, u_int32_t id, const string &name, const string &pwd, const GameData &gameData, unsigned adminPlayerId, GuiInterface &gui, ConfigFile *playerConfig)
|
||||||
: m_adminPlayerId(adminPlayerId), m_lobbyThread(lobbyThread), m_gui(gui),
|
: m_adminPlayerId(adminPlayerId), m_lobbyThread(lobbyThread), m_gui(gui),
|
||||||
m_gameData(gameData), m_id(id), m_name(name), m_password(pwd), m_playerConfig(playerConfig),
|
m_gameData(gameData), m_curState(NULL), m_id(id), m_name(name), m_password(pwd), m_playerConfig(playerConfig),
|
||||||
m_gameNum(1), m_curPetitionId(1), m_stateTimerId(0)
|
m_gameNum(1), m_curPetitionId(1), m_stateTimerId(0)
|
||||||
{
|
{
|
||||||
LOG_VERBOSE("Game object " << GetId() << " created.");
|
LOG_VERBOSE("Game object " << GetId() << " created.");
|
||||||
@@ -721,7 +721,10 @@ ServerGameThread::GetState()
|
|||||||
void
|
void
|
||||||
ServerGameThread::SetState(ServerGameState &newState)
|
ServerGameThread::SetState(ServerGameState &newState)
|
||||||
{
|
{
|
||||||
|
if (m_curState)
|
||||||
|
m_curState->Exit(*this);
|
||||||
m_curState = &newState;
|
m_curState = &newState;
|
||||||
|
m_curState->Enter(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned
|
unsigned
|
||||||
|
|||||||
@@ -31,7 +31,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SERVER_INITIAL_STATE ServerGameStateInit
|
#define SERVER_INITIAL_STATE ServerGameStateInit
|
||||||
#define SERVER_START_GAME_STATE ServerGameStateStartGame
|
|
||||||
|
|
||||||
class Game;
|
class Game;
|
||||||
class PlayerInterface;
|
class PlayerInterface;
|
||||||
|
|||||||
Reference in New Issue
Block a user