Changeset View
Changeset View
Standalone View
Standalone View
source/network/NetServer.cpp
Show First 20 Lines • Show All 632 Lines • ▼ Show 20 Lines | void CNetServerWorker::SetupSession(CNetServerSession* session) | ||||
session->AddTransition(NSS_HANDSHAKE, (uint)NMT_CLIENT_HANDSHAKE, NSS_AUTHENTICATE, (void*)&OnClientHandshake, context); | session->AddTransition(NSS_HANDSHAKE, (uint)NMT_CLIENT_HANDSHAKE, NSS_AUTHENTICATE, (void*)&OnClientHandshake, context); | ||||
session->AddTransition(NSS_AUTHENTICATE, (uint)NMT_CONNECTION_LOST, NSS_UNCONNECTED); | session->AddTransition(NSS_AUTHENTICATE, (uint)NMT_CONNECTION_LOST, NSS_UNCONNECTED); | ||||
session->AddTransition(NSS_AUTHENTICATE, (uint)NMT_AUTHENTICATE, NSS_PREGAME, (void*)&OnAuthenticate, context); | session->AddTransition(NSS_AUTHENTICATE, (uint)NMT_AUTHENTICATE, NSS_PREGAME, (void*)&OnAuthenticate, context); | ||||
session->AddTransition(NSS_PREGAME, (uint)NMT_CONNECTION_LOST, NSS_UNCONNECTED, (void*)&OnDisconnect, context); | session->AddTransition(NSS_PREGAME, (uint)NMT_CONNECTION_LOST, NSS_UNCONNECTED, (void*)&OnDisconnect, context); | ||||
session->AddTransition(NSS_PREGAME, (uint)NMT_CHAT, NSS_PREGAME, (void*)&OnChat, context); | session->AddTransition(NSS_PREGAME, (uint)NMT_CHAT, NSS_PREGAME, (void*)&OnChat, context); | ||||
session->AddTransition(NSS_PREGAME, (uint)NMT_READY, NSS_PREGAME, (void*)&OnReady, context); | session->AddTransition(NSS_PREGAME, (uint)NMT_READY, NSS_PREGAME, (void*)&OnReady, context); | ||||
session->AddTransition(NSS_PREGAME, (uint)NMT_CHANGE_SETTING, NSS_PREGAME, (void*)&OnChangeSetting, context); | |||||
session->AddTransition(NSS_PREGAME, (uint)NMT_CLEAR_ALL_READY, NSS_PREGAME, (void*)&OnClearAllReady, context); | session->AddTransition(NSS_PREGAME, (uint)NMT_CLEAR_ALL_READY, NSS_PREGAME, (void*)&OnClearAllReady, context); | ||||
session->AddTransition(NSS_PREGAME, (uint)NMT_GAME_SETUP, NSS_PREGAME, (void*)&OnGameSetup, context); | session->AddTransition(NSS_PREGAME, (uint)NMT_GAME_SETUP, NSS_PREGAME, (void*)&OnGameSetup, context); | ||||
session->AddTransition(NSS_PREGAME, (uint)NMT_ASSIGN_PLAYER, NSS_PREGAME, (void*)&OnAssignPlayer, context); | session->AddTransition(NSS_PREGAME, (uint)NMT_ASSIGN_PLAYER, NSS_PREGAME, (void*)&OnAssignPlayer, context); | ||||
session->AddTransition(NSS_PREGAME, (uint)NMT_KICKED, NSS_PREGAME, (void*)&OnKickPlayer, context); | session->AddTransition(NSS_PREGAME, (uint)NMT_KICKED, NSS_PREGAME, (void*)&OnKickPlayer, context); | ||||
session->AddTransition(NSS_PREGAME, (uint)NMT_GAME_START, NSS_PREGAME, (void*)&OnStartGame, context); | session->AddTransition(NSS_PREGAME, (uint)NMT_GAME_START, NSS_PREGAME, (void*)&OnStartGame, context); | ||||
session->AddTransition(NSS_PREGAME, (uint)NMT_LOADED_GAME, NSS_INGAME, (void*)&OnLoadedGame, context); | session->AddTransition(NSS_PREGAME, (uint)NMT_LOADED_GAME, NSS_INGAME, (void*)&OnLoadedGame, context); | ||||
session->AddTransition(NSS_JOIN_SYNCING, (uint)NMT_KICKED, NSS_JOIN_SYNCING, (void*)&OnKickPlayer, context); | session->AddTransition(NSS_JOIN_SYNCING, (uint)NMT_KICKED, NSS_JOIN_SYNCING, (void*)&OnKickPlayer, context); | ||||
▲ Show 20 Lines • Show All 517 Lines • ▼ Show 20 Lines | bool CNetServerWorker::OnStartGame(void* context, CFsmEvent* event) | ||||
CNetServerWorker& server = session->GetServer(); | CNetServerWorker& server = session->GetServer(); | ||||
if (session->GetGUID() == server.m_HostGUID) | if (session->GetGUID() == server.m_HostGUID) | ||||
server.StartGame(); | server.StartGame(); | ||||
return true; | return true; | ||||
} | } | ||||
bool CNetServerWorker::OnChangeSetting(void* context, CFsmEvent* event) | |||||
{ | |||||
ENSURE(event->GetType() == (uint)NMT_CHANGE_SETTING); | |||||
CNetServerSession* session = (CNetServerSession*)context; | |||||
CNetServerWorker& server = session->GetServer(); | |||||
CChangeSettingMessage* message = (CChangeSettingMessage*)event->GetParamRef(); | |||||
message->m_GUID = session->GetGUID(); | |||||
// Forward message to host | |||||
for (CNetServerSession* session : server.m_Sessions) | |||||
if (session->GetGUID() == server.m_HostGUID) | |||||
return session->SendMessage(message); | |||||
LOGERROR("No host found to send the ChangeSettingMessage to."); | |||||
return false; | |||||
} | |||||
bool CNetServerWorker::OnLoadedGame(void* context, CFsmEvent* event) | bool CNetServerWorker::OnLoadedGame(void* context, CFsmEvent* event) | ||||
{ | { | ||||
ENSURE(event->GetType() == (uint)NMT_LOADED_GAME); | ENSURE(event->GetType() == (uint)NMT_LOADED_GAME); | ||||
CNetServerSession* loadedSession = (CNetServerSession*)context; | CNetServerSession* loadedSession = (CNetServerSession*)context; | ||||
CNetServerWorker& server = loadedSession->GetServer(); | CNetServerWorker& server = loadedSession->GetServer(); | ||||
// We're in the loading state, so wait until every client has loaded | // We're in the loading state, so wait until every client has loaded | ||||
▲ Show 20 Lines • Show All 305 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator