Files

319 lines
9.4 KiB
C++

#pragma once
// Reconstructed C++ declarations from IDA Local Types and PDB/DIA metadata.
// Original PDB header: w:\tech5\engine\sys\sys_lobby.h
// Recovered logical types: 17
// Signatures retain Xbox 360 ABI evidence and may still require manual review.
// IDA Local Type ordinal 2966; PDB kind: enum.
enum idLobby::migrationState_t : __int32
{
MIGRATE_NONE = 0x0,
MIGRATE_PICKING_HOST = 0x1,
MIGRATE_BECOMING_HOST = 0x2,
};
// IDA Local Type ordinal 2968; PDB kind: enum.
enum idLobby::lobbyType_t : __int32
{
TYPE_PARTY = 0x0,
TYPE_GAME = 0x1,
TYPE_GAME_STATE = 0x2,
TYPE_INVALID = 0xFF,
};
// IDA Local Type ordinal 2969; PDB kind: enum.
enum idLobby::lobbyState_t : __int32
{
STATE_CREATE_LOBBY_BACKEND = 0x1,
STATE_SEARCHING = 0x2,
STATE_OBTAINING_ADDRESS = 0x3,
STATE_CONNECT_HELLO_WAIT = 0x4,
STATE_FINALIZE_CONNECT = 0x5,
NUM_STATES = 0x7,
};
// IDA Local Type ordinal 2970; PDB kind: enum.
enum idLobby::reliablePlayerToPlayer_t : __int32
{
RELIABLE_PLAYER_TO_PLAYER_GAME_DATA = 0x0,
NUM_RELIABLE_PLAYER_TO_PLAYER = 0x1,
};
// IDA Local Type ordinal 2971; PDB kind: enum.
enum idLobby::reliableType_t : __int32
{
RELIABLE_HELLO = 0x0,
RELIABLE_USER_CONNECTED = 0x1,
RELIABLE_USER_DISCONNECTED = 0x2,
RELIABLE_START_LOADING = 0x3,
RELIABLE_LOADING_DONE = 0x4,
RELIABLE_IN_GAME = 0x5,
RELIABLE_SNAPSHOT_ACK = 0x6,
RELIABLE_RESOURCE_ACK = 0x7,
RELIABLE_CONNECT_AND_MOVE_TO_LOBBY = 0x8,
RELIABLE_PARTY_CONNECT_OK = 0x9,
RELIABLE_PARTY_LEAVE_GAME_LOBBY = 0xA,
RELIABLE_MATCH_PARMS = 0xB,
RELIABLE_UPDATE_MATCH_PARMS = 0xC,
RELIABLE_USER_CONNECT_REQUEST = 0xD,
RELIABLE_USER_CONNECT_DENIED = 0xE,
RELIABLE_USER_DISCONNECT_REQUEST = 0xF,
RELIABLE_KICK_PLAYER = 0x10,
RELIABLE_MATCHFINISHED = 0x11,
RELIABLE_ENDMATCH = 0x12,
RELIABLE_ENDMATCH_PREMATURE = 0x13,
RELIABLE_SESSION_USER_MODIFIED = 0x14,
RELIABLE_UPDATE_SESSION_USER = 0x15,
RELIABLE_HEADSET_STATE = 0x16,
RELIABLE_VOICE_STATE = 0x17,
RELIABLE_PING = 0x18,
RELIABLE_PING_VALUES = 0x19,
RELIABLE_BANDWIDTH_VALUES = 0x1A,
RELIABLE_ARBITRATE = 0x1B,
RELIABLE_ARBITRATE_OK = 0x1C,
RELIABLE_POST_STATS = 0x1D,
RELIABLE_MIGRATION_GAME_DATA = 0x1E,
RELIABLE_START_MATCH_GAME_LOBBY_HOST = 0x1F,
RELIABLE_DUMMY_MSG = 0x20,
RELIABLE_PLAYER_TO_PLAYER_BEGIN = 0x21,
RELIABLE_PLAYER_TO_PLAYER_END = 0x22,
RELIABLE_GAME_DATA = 0x22,
};
// IDA Local Type ordinal 2972; PDB kind: enum.
enum idLobby::connectionState_t : __int32
{
CONNECTION_FREE = 0x0,
CONNECTION_CONNECTING = 0x1,
CONNECTION_ESTABLISHED = 0x2,
};
// IDA Local Type ordinal 2976; PDB kind: enum.
enum idLobby::failedReason_t : __int32
{
FAILED_UNKNOWN = 0x0,
FAILED_CONNECT_FAILED = 0x1,
FAILED_MIGRATION_CONNECT_FAILED = 0x2,
};
// IDA Local Type ordinal 2994; PDB kind: enum.
enum idLobby::DrawDebugNetworkHUD_ServerSnapshotMetrics::__l22::netDebugGraphs_t : __int32
{
GRAPH_SNAPSENT = 0x0,
GRAPH_OUTGOING = 0x1,
GRAPH_INCOMINGREPORTED = 0x2,
GRAPH_MAX = 0x3,
};
// IDA Local Type ordinal 22539; PDB kind: class.
class __declspec(align(8)) idLobby : public idLobbyBase
{
public:
// Recovered virtual interface; IDA vtable ordinal 22558.
virtual bool IsHost();
virtual bool IsPeer();
virtual bool HasActivePeers();
virtual int GetNumLobbyUsers();
virtual int GetNumActiveLobbyUsers();
virtual lobbyUserID_t *GetLobbyUserIdByOrdinal(lobbyUserID_t *result, int);
virtual int GetLobbyUserIndexFromLobbyUserID(lobbyUserID_t);
virtual void SendReliable(int, idBitMsg *, bool, unsigned __int8);
virtual void SendReliableToLobbyUser(lobbyUserID_t, int, idBitMsg *);
virtual void SendReliableToHost(int, idBitMsg *);
virtual const char *GetLobbyUserName(lobbyUserID_t);
virtual void KickLobbyUser(lobbyUserID_t);
virtual bool IsLobbyUserValid(lobbyUserID_t);
virtual bool IsLobbyUserLoaded(lobbyUserID_t);
virtual bool LobbyUserHasFirstFullSnap(lobbyUserID_t);
virtual void EnableSnapshotsForLobbyUser(lobbyUserID_t);
virtual int GetLobbyUserEmblemOrdinal(lobbyUserID_t);
virtual int GetLobbyUserLevel(lobbyUserID_t);
virtual int GetLobbyUserQoS(lobbyUserID_t);
virtual int GetLobbyUserTeam(lobbyUserID_t);
virtual bool SetLobbyUserTeam(lobbyUserID_t, int);
virtual int GetLobbyUserPartyToken(lobbyUserID_t);
virtual idPlayerProfile *GetProfileFromLobbyUser(lobbyUserID_t);
virtual idLocalUser *GetLocalUserFromLobbyUser(lobbyUserID_t);
virtual int GetNumLobbyUsersOnTeam(int);
virtual void SendLobbyUserUpdateToPeers();
virtual int PeerIndexFromLobbyUser(lobbyUserID_t);
virtual lobbyUserID_t *AllocLobbyUserSlotForBot(lobbyUserID_t *result, const char *, void *);
virtual void *GetLobbyUserBotData(lobbyUserID_t);
virtual void RemoveBotFromLobbyUserList(lobbyUserID_t);
virtual bool GetLobbyUserIsBot(lobbyUserID_t);
virtual const char *GetHostUserName();
virtual const idMatchParameters *GetMatchParms();
virtual bool IsLobbyFull();
virtual bool EnsureAllPeersHaveBaseState();
virtual bool AllPeersInGame();
virtual int GetNumConnectedPeers();
virtual int GetNumConnectedPeersInGame();
virtual int PeerIndexOnHost();
virtual bool IsPeerDisconnected(int);
virtual bool AllPeersHaveStaleSnapObj(int);
virtual bool AllPeersHaveExpectedSnapObj(int);
virtual void RefreshSnapObj(int);
virtual void MarkSnapObjDeleted(int);
virtual void AddSnapObjTemplate(int, idBitMsg *);
virtual void DrawDebugNetworkHUD(idRenderModelGui *);
virtual void DrawDebugNetworkHUD2(idRenderModelGui *);
virtual void DrawDebugNetworkHUD_ServerSnapshotMetrics(idRenderModelGui *, bool);
virtual bool IsLobbyUserDisconnected(int);
int lastPingValuesRecvTime;
int nextSendPingValuesTime;
int nextSendMigrationGameTime;
int nextSendMigrationGamePeer;
idLobby::lobbyType_t lobbyType;
idLobby::lobbyState_t state;
idLobby::failedReason_t failedReason;
int host;
int peerIndexOnHost;
lobbyAddress_t hostAddress;
bool isHost;
idLobbyBackend *lobbyBackend;
int helloStartTime;
int lastConnectRequest;
int connectionAttempts;
bool needToDisplayMigrateMsg;
gameDialogMessages_t migrationDlg;
unsigned __int8 migrateMsgFlags;
int migrateMsgGameType;
bool joiningMigratedGame;
int bandwidthChallengeEndTime;
int bandwidthChallengeStartTime;
bool bandwidthChallengeFinished;
int bandwidthChallengeNumGoodSeq;
int lastSnapBspHistoryUpdateSequence;
idSessionCallbacks *sessionCB;
idLobby::migrationInfo_t migrationInfo;
bool showHostLeftTheSession;
bool connectIsFromInvite;
idStaticList<lobbyConnectInfo_t,25> searchResults;
idStaticList<lobbyUser_t *,6> userList;
idStaticList<lobbyUser_t *,6> freeUsers;
idStaticList<lobbyUser_t,6> userPool;
idStaticList<idLobby::peer_t,6> peers;
unsigned int partyToken;
idMatchParameters parms;
bool loaded;
bool respondToArbitrate;
bool everyoneArbitrated;
bool waitForPartyOk;
bool startLoadingFromHost;
bool haveSubmittedSnaps;
idSnapShot *localReadSS;
idStaticList<idLobby::snapDeltaAck_t,16> snapDeltaAckQueue;
};
// IDA Local Type ordinal 22542; PDB kind: struct.
struct idLobby::migrationInvite_t
{
lobbyAddress_t address;
int pingMs;
lobbyUserID_t userId;
int lastInviteTime;
int migrationGameData;
};
// IDA Local Type ordinal 22545; PDB kind: struct.
struct __declspec(align(4)) idLobby::migrationInfo_t::persistUntilGameEnds_t
{
int ourGameData;
bool wasMigratedHost;
bool wasMigratedJoin;
bool wasMigratedGame;
bool hasRelaunchedMigratedGame;
unsigned __int8 gameData[32];
unsigned __int8 gameDataUser[6][64];
bool hasGameData;
};
// IDA Local Type ordinal 22546; PDB kind: struct.
struct idLobby::migrationInfo_t
{
idLobby::migrationState_t state;
idStaticList<idLobby::migrationInvite_t,6> invites;
int migrationStartTime;
int ourPingMs;
lobbyUserID_t ourUserId;
idLobby::migrationInfo_t::persistUntilGameEnds_t persistUntilGameEndsData;
};
// IDA Local Type ordinal 22552; PDB kind: struct.
struct idLobby::peer_t
{
idLobby::connectionState_t connectionState;
bool loaded;
bool inGame;
int lastSnapTime;
float snapHz;
int lastProcTime;
int lastInBandProcTime;
int lastFragmentSendTime;
unsigned int networkChecksum;
int pauseSnapshots;
lobbyAddress_t address;
int numResources;
idPacketProcessor *packetProc;
idSnapshotProcessor *snapProc;
idGaugeMetric latencyMetric;
idStaticList<idDebugGraph *,4> debugGraphs;
int lastResourceTime;
int lastHeartBeat;
int nextPing;
int lastPingRtt;
bool needToSubmitPendingSnap;
int lastSnapJobTime;
int startResourceLoadTime;
int maxSnapQueueSize;
int throttledSnapRate;
int nextThrottleCheck;
int numSnapsSent;
float sentBpsHistory[32];
int receivedBpsIndex;
float receivedBps;
float maxSnapBps;
float receivedThrottle;
int receivedThrottleTime;
int throttleSnapsForXSeconds;
int recoverPing;
int failedPingRecoveries;
int rightBeforeSnapsPing;
int bandwidthChallengeStartSendTime;
int bandwidthTestLastSendTime;
int bandwidthTestBytes;
int bandwidthSequenceNum;
bool bandwidthChallengeResults;
bool bandwidthChallengeSendComplete;
unsigned __int16 sessionID;
};
// IDA Local Type ordinal 22555; PDB kind: struct.
struct idLobby::snapDeltaAck_t
{
int p;
int snapshotNumber;
};
// IDA Local Type ordinal 22580; PDB kind: struct.
struct idLobby::reliablePlayerToPlayerHeader_t
{
int fromSessionUserIndex;
int toSessionUserIndex;
};
// IDA Local Type ordinal 22581; PDB kind: struct.
struct idLobby::pktPing_t
{
int timestamp;
};
// IDA Local Type ordinal 22583; PDB kind: struct.
struct idLobby::pktPingValues_t
{
idArray<short,6> pings;
};