📄 bloodservershell.h
字号:
// ----------------------------------------------------------------------- //
//
// MODULE : BloodServerShell.cpp
//
// PURPOSE : Blood's Server Shell - Definition
//
// CREATED : 9/18/97
//
// ----------------------------------------------------------------------- //
#ifndef __BLOODSERVERSHELL_H__
#define __BLOODSERVERSHELL_H__
#include "cpp_server_de.h"
#include "cpp_engineobjects_de.h"
#include "cpp_servershell_de.h"
#include "PathMgr.h"
#include "NetDefs.h"
#include "SharedDefs.h"
#include "VoiceMgr.h"
#include "TeamMgr.h"
#define MAX_CLIENTS MAX_MULTI_PLAYERS
class CPlayerObj;
class CBloodServerShell : public CServerShellDE
{
public :
CBloodServerShell();
~CBloodServerShell();
void FragStatus();
GameType GetGameType() const { return (GameType)m_GameInfo.m_byType; }
const NetGame * GetNetGameInfo() const { return &m_GameInfo; }
DBOOL IsMultiplayerGame() { return (m_GameInfo.m_byType != GAMETYPE_SINGLE); }
DBOOL IsMultiplayerTeamBasedGame();
DBOOL IsMultiplayerTeams() { return(m_GameInfo.m_byType == NGT_TEAMS); }
DBOOL IsMultiplayerCtf() { return(m_GameInfo.m_byType == NGT_CAPTUREFLAG); }
DBOOL IsMultiplayerSoccer() { return(m_GameInfo.m_byType == NGT_SOCCER); }
PathMgr* GetPathMgr() { return &m_PathMgr; }
CVoiceMgr* GetVoiceMgr() { return &m_VoiceMgr; }
CTeamMgr* GetTeamMgr() { return(&m_TeamMgr); }
void SetStartPointName(HSTRING hstrStartPt);
HSTRING GetStartPointName() { return m_hstrStartPointName; }
void SendBlood2ServConsoleMessage(char* sMsg);
void SetUpdateBlood2Serv() { m_bUpdateBlood2Serv = DTRUE; }
HCLIENT FindClient(HOBJECT hObject);
#ifdef _ADD_ON
DBOOL IsAddon() { return m_bAddonLevel; };
#endif
protected :
BaseClass* OnClientEnterWorld(HCLIENT hClient, void* pClientData, DDWORD dwClientDataLen);
void OnClientExitWorld(HCLIENT hClient);
void OnMessage(HCLIENT hSender, DBYTE messageID, HMESSAGEREAD hMessage);
void OnCommandOn(HCLIENT hClient, int command);
void PreStartWorld(DBOOL bSwitchingWorlds);
void PostStartWorld();
void Update(DFLOAT timeElapsed);
void UpdateClientPingTimes();
void OnRemoveClient(HCLIENT hClient);
DBOOL LoadWorld(HMESSAGEREAD hMessage);
DBOOL SaveGame(DBYTE bySaveType, DBOOL bSavePlayers, DBOOL bSaveConsole);
DBOOL RestoreGame(DBYTE bySaveType);
// DBOOL BuildSavePath(char *pBuffer, char *pFilename);
DBOOL KeepAliveSave();
DBOOL KeepAliveLoad();
void CacheFiles();
void DoLevelChangeCharacterCheck(char* sLevel);
private:
int m_NumPlayers;
BaseClass* CreatePlayer(HCLIENT hClient);
void RespawnPlayer(BaseClass* pBaseClass, HCLIENT hClient);
void ConsoleMessage(HCLIENT hClient, char *msg);
void AddPlayerMessage(HCLIENT hDestClient, HCLIENT hNewPlayerClient);
void AddPlayersMessage(HCLIENT hClient);
void RemovePlayerMessage(HCLIENT hClient);
void SetGameInfo(DBYTE nGameFlags, DBYTE nDifficulty);
void SetupGameInfo();
DBOOL UpdateSessionName();
DBOOL UpdateBlood2Server();
void UpdateMultiplayer();
void StartNextMultiplayerLevel();
void StartNextMultiplayerLevelAck();
DRESULT ServerAppMessageFn(char* sMsg);
void ClearClientList() { for (int i = 0; i < MAX_CLIENTS; i++) { m_aClients[i] = DNULL; } }
DBOOL AddClientToList(HCLIENT hClient);
DBOOL RemoveClientFromList(HCLIENT hClient);
DBOOL IsClientInList(HCLIENT hClient);
CPlayerObj* GetPlayerFromClientList(HCLIENT hClient);
CVoiceMgr m_VoiceMgr;
CTeamMgr m_TeamMgr;
PathMgr m_PathMgr;
HSTRING m_hstrStartPointName;
DBOOL m_bKeepAlive;
#ifdef _ADD_ON
DBOOL m_bAddonLevel;
#endif
HCLIENT m_aClients[MAX_CLIENTS];
NetGame m_GameInfo;
DBOOL m_bBlood2ServHosted;
DBOOL m_bUpdateBlood2Serv;
int m_nCurLevel;
};
// Externs...
extern CBloodServerShell* g_pBloodServerShell;
extern char g_szVarRevisiting[];
extern char g_szVarDifficulty[];
extern char g_szVarGameType[];
// Inlines...
inline DBOOL CBloodServerShell::IsMultiplayerTeamBasedGame()
{
if (m_GameInfo.m_byType == NGT_CAPTUREFLAG) return(DTRUE);
if (m_GameInfo.m_byType == NGT_TEAMS) return(DTRUE);
if (m_GameInfo.m_byType == NGT_SOCCER) return(DTRUE);
return(DFALSE);
}
// EOF...
#endif // __BLOODSERVERSHELL_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -