1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef _GAME_PARTICIPANT_H
#define _GAME_PARTICIPANT_H
#include <memory>
#include "Game/Players/PlayerBase.h"
#include "Game/Players/PlayerStatistics.h"
#include "System/Net/LoopbackConnection.h"
namespace netcode
{
class CConnection;
class RawPacket;
}
class GameParticipant : public PlayerBase
{
public:
GameParticipant();
void SendData(std::shared_ptr<const netcode::RawPacket> packet);
void Connected(std::shared_ptr<netcode::CConnection> link, bool local);
void Kill(const std::string& reason, const bool flush = false);
GameParticipant& operator=(const PlayerBase& base) { PlayerBase::operator=(base); return *this; };
public:
int id;
enum State
{
UNCONNECTED,
CONNECTED,
INGAME,
DISCONNECTED
};
State myState;
int lastFrameResponse;
int speedControl;
bool isLocal;
bool isReconn;
bool isMidgameJoin;
std::shared_ptr<netcode::CConnection> link;
PlayerStatistics lastStats;
struct PlayerLinkData {
PlayerLinkData(bool connect = true) : bandwidthUsage(0) { if (connect) link.reset(new netcode::CLoopbackConnection()); }
std::shared_ptr<netcode::CConnection> link;
int bandwidthUsage;
};
std::map<unsigned char, PlayerLinkData> linkData;
#ifdef SYNCCHECK
std::map<int, unsigned> syncResponse; // syncResponse[frameNum] = checksum
#endif
};
#endif // _GAME_PARTICIPANT_H
|