mirror of
https://github.com/spiffcode/hostile-takeover.git
synced 2026-03-27 15:29:39 -06:00
54 lines
1.5 KiB
C++
54 lines
1.5 KiB
C++
#ifndef __PLAYERMGR_H__
|
|
#define __PLAYERMGR_H__
|
|
|
|
#include "inc/basictypes.h"
|
|
#include "server/player.h"
|
|
#include "server/endpoint.h"
|
|
#include "server/levelinfo.h"
|
|
#include "server/server.h"
|
|
#include "mpshared/netmessage.h"
|
|
#include "mpshared/mpht.h"
|
|
#include "mpshared/side.h"
|
|
|
|
namespace wi {
|
|
|
|
class PlayerMgr
|
|
{
|
|
public:
|
|
PlayerMgr(Server& server);
|
|
|
|
void Init(const LevelInfo& info);
|
|
int GetPlayerCount();
|
|
Player *AllocPlayer(word wf);
|
|
Player *GetPlayer(Side side);
|
|
Player *GetPlayer(Endpoint *endpoint);
|
|
Player *GetPlayerFromPid(Pid pid);
|
|
Player *GetNextPlayer(Player *pplr);
|
|
Player *GetNextHumanPlayer(Player *pplr);
|
|
Player *GetNextPlayerWithEndpoint(Player *pplr);
|
|
void BroadcastPlayersUpdate();
|
|
void Broadcast(NetMessage *pnm, Pid pidIgnore = kpidNeutral);
|
|
void BroadcastPlayerDisconnect(Pid pid, int nReason);
|
|
bool HaveAllPlayersReachedUpdate(long cUpdates);
|
|
Player *FindLaggingPlayer(long cUpdates);
|
|
bool AllPlayersLagging();
|
|
int GetEndpointCount();
|
|
const PlayerName *GetEndpointNames();
|
|
bool CheckSyncError(Player *pplr, const UpdateResult& ur,
|
|
long *pcUpdatesSync);
|
|
void BroadcastSyncError(const UpdateResult& ur);
|
|
void SetLastLagAcknowledge(long64 t) { tLagAcknowledge_ = t; }
|
|
long64 GetLastLagAcknowledge() { return tLagAcknowledge_; }
|
|
void SwapPlayers(Player *playerA, Player *playerB);
|
|
|
|
private:
|
|
long64 tLagAcknowledge_;
|
|
Player players_[kcPlayersMax];
|
|
PlayerName names_[kcPlayersMax];
|
|
Server& server_;
|
|
};
|
|
|
|
} // namespace wi
|
|
|
|
#endif // __PLAYERMGR_H__
|