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.
|
||||
server.GetSessionManager().ResetAllReadyFlags();
|
||||
DoStart(server);
|
||||
server.SetState(SERVER_START_GAME_STATE::Instance());
|
||||
retVal = MSG_SOCK_INIT_DONE;
|
||||
}
|
||||
}
|
||||
@@ -646,7 +645,6 @@ ServerGameStateStartGame::TimerTimeout(ServerGameThread &server)
|
||||
// TODO report successful start! -> new callback?!
|
||||
//retVal = MSG_SOCK_INIT_DONE;
|
||||
DoStart(server);
|
||||
server.SetState(SERVER_START_GAME_STATE::Instance());
|
||||
}
|
||||
|
||||
void
|
||||
@@ -843,6 +841,10 @@ ServerGameStateHand::TimerLoop(ServerGameThread &server)
|
||||
else if (!server.GetSessionManager().IsPlayerConnected(curPlayer->getMyName()))
|
||||
{
|
||||
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
|
||||
{
|
||||
@@ -936,7 +938,6 @@ ServerGameStateHand::TimerLoop(ServerGameThread &server)
|
||||
}
|
||||
}
|
||||
}
|
||||
// TODO if not state changed and not timer set, set new loop timer.
|
||||
}
|
||||
|
||||
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)
|
||||
: 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)
|
||||
{
|
||||
LOG_VERBOSE("Game object " << GetId() << " created.");
|
||||
@@ -721,7 +721,10 @@ ServerGameThread::GetState()
|
||||
void
|
||||
ServerGameThread::SetState(ServerGameState &newState)
|
||||
{
|
||||
if (m_curState)
|
||||
m_curState->Exit(*this);
|
||||
m_curState = &newState;
|
||||
m_curState->Enter(*this);
|
||||
}
|
||||
|
||||
unsigned
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
#endif
|
||||
|
||||
#define SERVER_INITIAL_STATE ServerGameStateInit
|
||||
#define SERVER_START_GAME_STATE ServerGameStateStartGame
|
||||
|
||||
class Game;
|
||||
class PlayerInterface;
|
||||
|
||||
Reference in New Issue
Block a user