networking
This commit is contained in:
@@ -1,8 +1,14 @@
|
||||
#include "gamemode.h"
|
||||
#include "engine.h"
|
||||
#include "playerstart.h"
|
||||
#include "networking.h"
|
||||
|
||||
#include "tier1/utlvector.h"
|
||||
#include "tier1/utlstring.h"
|
||||
|
||||
CGameMode *pCurrentMode = NULL;
|
||||
CUtlString szCurrentModeName;
|
||||
CUtlVector<CGameModeRegistry*> g_RegisteredGameModes;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Round begin handler
|
||||
@@ -26,6 +32,17 @@ void CGameMode::RoundBegin( void )
|
||||
pSelectedStart->RoundStart(player);
|
||||
i++;
|
||||
}
|
||||
|
||||
for (auto &client: g_clients)
|
||||
{
|
||||
CSteamID steamID = CSteamID();
|
||||
if ( client->playerID == 0)
|
||||
V_printf("%s\t", SteamFriends()->GetPlayerNickname((uint64)client->playerID));
|
||||
else
|
||||
V_printf("%s\t", SteamFriends()->GetPersonaName());
|
||||
V_printf("%llu\t", client->playerID);
|
||||
V_printf("%u\n", client->playerHandle);
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -49,25 +66,35 @@ void IGameModeManager::Init( void )
|
||||
//-----------------------------------------------------------------------------
|
||||
void IGameModeManager::Frame( void )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Sets gamemode
|
||||
//-----------------------------------------------------------------------------
|
||||
void IGameModeManager::StartGameMode(CGameMode *pGameMode)
|
||||
void IGameModeManager::StartGameMode( const char *szName )
|
||||
{
|
||||
V_printf("starting game mode %s\n", szName);
|
||||
if (pCurrentMode)
|
||||
{
|
||||
pCurrentMode->RoundEnd();
|
||||
pCurrentMode = pGameMode;
|
||||
if (pCurrentMode)
|
||||
pCurrentMode->RoundBegin();
|
||||
delete pCurrentMode;
|
||||
}
|
||||
for (auto &mode: g_RegisteredGameModes)
|
||||
{
|
||||
if (!V_strcmp(mode->m_szName, szName))
|
||||
{
|
||||
pCurrentMode = mode->m_pfn();
|
||||
pCurrentMode->RoundBegin();
|
||||
szCurrentModeName = szName;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
CGameMode *IGameModeManager::GetCurrentMode( void )
|
||||
CGameMode *IGameModeManager::GetCurrentGameModeClass( void )
|
||||
{
|
||||
return pCurrentMode;
|
||||
}
|
||||
@@ -75,11 +102,33 @@ CGameMode *IGameModeManager::GetCurrentMode( void )
|
||||
//-----------------------------------------------------------------------------
|
||||
// Restarts the gamemode
|
||||
//-----------------------------------------------------------------------------
|
||||
void IGameModeManager::RestartCurrentMode( void )
|
||||
void IGameModeManager::RestartCurrentGameMode( void )
|
||||
{
|
||||
if (!pCurrentMode)
|
||||
return;
|
||||
|
||||
if (INetworking::IsServer())
|
||||
{
|
||||
PacketGameMode_t mode = {};
|
||||
mode.type = PACKET_TYPE_GAMEMODE_START;
|
||||
V_memcpy(mode.szName,szCurrentModeName, min(szCurrentModeName.GetLenght(), 255));
|
||||
V_printf("%u clients connected\n",g_clients.GetSize());
|
||||
for (auto &client: g_clients)
|
||||
{
|
||||
INetworking::SendData(&mode, sizeof(mode), client, MESSAGE_MODE_RELIABLE);
|
||||
V_printf("sending to %u\n",client->playerHandle);
|
||||
};
|
||||
V_printf("restarting game mode\n");
|
||||
};
|
||||
pCurrentMode->RoundEnd();
|
||||
pCurrentMode->RoundBegin();
|
||||
}
|
||||
|
||||
|
||||
CGameModeRegistry::CGameModeRegistry(const char *szName, GameModeRegistryFn pfn) :
|
||||
m_szName(szName), m_pfn(pfn)
|
||||
{
|
||||
g_RegisteredGameModes.AppendTail(this);
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user