mirror of
https://github.com/rehlds/rehlds.git
synced 2025-02-06 10:40:31 +03:00
HLTV: Refactoring and fixes (#469)
This commit is contained in:
parent
96a8033de9
commit
49483d3b05
@ -412,7 +412,7 @@ bool BSPModel::InPVS(vec_t *point)
|
|||||||
|
|
||||||
void BSPModel::Clear()
|
void BSPModel::Clear()
|
||||||
{
|
{
|
||||||
#define FREE_FIELD(field) if (field) { free(field); }
|
#define FREE_FIELD(field) if (field) { Mem_Free(field); }
|
||||||
FREE_FIELD(m_model.leafs);
|
FREE_FIELD(m_model.leafs);
|
||||||
FREE_FIELD(m_model.nodes);
|
FREE_FIELD(m_model.nodes);
|
||||||
FREE_FIELD(m_model.planes);
|
FREE_FIELD(m_model.planes);
|
||||||
@ -833,28 +833,25 @@ void BSPModel::LoadEntities(lump_t *l)
|
|||||||
m_model.entities = (char *)Mem_ZeroMalloc(l->filelen);
|
m_model.entities = (char *)Mem_ZeroMalloc(l->filelen);
|
||||||
memcpy(m_model.entities, (const void *)(m_base + l->fileofs), l->filelen);
|
memcpy(m_model.entities, (const void *)(m_base + l->fileofs), l->filelen);
|
||||||
|
|
||||||
if (m_model.entities)
|
char *pszInputStream = COM_Parse(m_model.entities);
|
||||||
|
if (*pszInputStream)
|
||||||
{
|
{
|
||||||
char *pszInputStream = COM_Parse(m_model.entities);
|
while (com_token[0] != '}')
|
||||||
if (*pszInputStream)
|
|
||||||
{
|
{
|
||||||
while (com_token[0] != '}')
|
if (!strcmp(com_token, "wad"))
|
||||||
{
|
{
|
||||||
if (!strcmp(com_token, "wad"))
|
COM_Parse(pszInputStream);
|
||||||
{
|
if (m_wadpath) {
|
||||||
COM_Parse(pszInputStream);
|
Mem_Free(m_wadpath);
|
||||||
if (m_wadpath) {
|
|
||||||
free(m_wadpath);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_wadpath = _strdup(com_token);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pszInputStream = COM_Parse(pszInputStream);
|
m_wadpath = _strdup(com_token);
|
||||||
if (!*pszInputStream)
|
return;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pszInputStream = COM_Parse(pszInputStream);
|
||||||
|
if (!*pszInputStream)
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1013,8 +1013,8 @@ void Delta::ClearEncoders()
|
|||||||
while (p)
|
while (p)
|
||||||
{
|
{
|
||||||
n = p->next;
|
n = p->next;
|
||||||
free(p->name);
|
Mem_Free(p->name);
|
||||||
free(p);
|
Mem_Free(p);
|
||||||
p = n;
|
p = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1070,7 +1070,7 @@ void Delta::ClearLinks(delta_link_t **plinks)
|
|||||||
while (p)
|
while (p)
|
||||||
{
|
{
|
||||||
n = p->next;
|
n = p->next;
|
||||||
free(p);
|
Mem_Free(p);
|
||||||
p = n;
|
p = n;
|
||||||
}
|
}
|
||||||
*plinks = 0;
|
*plinks = 0;
|
||||||
@ -1097,13 +1097,13 @@ delta_t *Delta::BuildFromLinks(delta_link_t **pplinks)
|
|||||||
for (p = *pplinks, pcur = pdesc; p; p = p->next, pcur++)
|
for (p = *pplinks, pcur = pdesc; p; p = p->next, pcur++)
|
||||||
{
|
{
|
||||||
memcpy(pcur, p->delta, sizeof(delta_description_t));
|
memcpy(pcur, p->delta, sizeof(delta_description_t));
|
||||||
free(p->delta);
|
Mem_Free(p->delta);
|
||||||
p->delta = 0;
|
p->delta = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ClearLinks(pplinks);
|
ClearLinks(pplinks);
|
||||||
|
|
||||||
pdelta->dynamic = 1;
|
pdelta->dynamic = TRUE;
|
||||||
pdelta->fieldCount = count;
|
pdelta->fieldCount = count;
|
||||||
pdelta->pdd = pdesc;
|
pdelta->pdd = pdesc;
|
||||||
|
|
||||||
@ -1238,10 +1238,10 @@ void Delta::FreeDescription(delta_t **ppdesc)
|
|||||||
if (ppdesc && *ppdesc)
|
if (ppdesc && *ppdesc)
|
||||||
{
|
{
|
||||||
if ((*ppdesc)->dynamic) {
|
if ((*ppdesc)->dynamic) {
|
||||||
free((*ppdesc)->pdd);
|
Mem_Free((*ppdesc)->pdd);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(*ppdesc);
|
Mem_Free(*ppdesc);
|
||||||
*ppdesc = nullptr;
|
*ppdesc = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1276,8 +1276,8 @@ void Delta::ClearDefinitions()
|
|||||||
while (p)
|
while (p)
|
||||||
{
|
{
|
||||||
n = p->next;
|
n = p->next;
|
||||||
free(p->ptypename);
|
Mem_Free(p->ptypename);
|
||||||
free(p);
|
Mem_Free(p);
|
||||||
p = n;
|
p = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1456,7 +1456,7 @@ bool Delta::Load(char *name, delta_t **ppdesc, char *pszFile)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool res = ParseDescription(name, ppdesc, pbuf);
|
bool res = ParseDescription(name, ppdesc, pbuf);
|
||||||
free(pbuf);
|
Mem_Free(pbuf);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1475,13 +1475,13 @@ void Delta::ClearRegistrations()
|
|||||||
while (p)
|
while (p)
|
||||||
{
|
{
|
||||||
n = p->next;
|
n = p->next;
|
||||||
free(p->name);
|
Mem_Free(p->name);
|
||||||
|
|
||||||
if (p->pdesc) {
|
if (p->pdesc) {
|
||||||
FreeDescription(&p->pdesc);
|
FreeDescription(&p->pdesc);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(p);
|
Mem_Free(p);
|
||||||
p = n;
|
p = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +28,15 @@
|
|||||||
|
|
||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
|
Network::Network()
|
||||||
|
{
|
||||||
|
m_NoDNS = false;
|
||||||
|
m_IsMultihomed = false;
|
||||||
|
|
||||||
|
m_FakeLoss = 0;
|
||||||
|
m_LastStatsUpdateTime = 0;
|
||||||
|
}
|
||||||
|
|
||||||
bool Network::Init(IBaseSystem *system, int serial, char *name)
|
bool Network::Init(IBaseSystem *system, int serial, char *name)
|
||||||
{
|
{
|
||||||
BaseSystemModule::Init(system, serial, name);
|
BaseSystemModule::Init(system, serial, name);
|
||||||
|
@ -82,7 +82,7 @@
|
|||||||
class NetSocket;
|
class NetSocket;
|
||||||
class Network: public BaseSystemModule, public INetwork {
|
class Network: public BaseSystemModule, public INetwork {
|
||||||
public:
|
public:
|
||||||
Network() {}
|
Network();
|
||||||
virtual ~Network() {}
|
virtual ~Network() {}
|
||||||
|
|
||||||
bool Init(IBaseSystem *system, int serial, char *name);
|
bool Init(IBaseSystem *system, int serial, char *name);
|
||||||
|
@ -108,7 +108,7 @@ bool Server::Init(IBaseSystem *system, int serial, char *name)
|
|||||||
m_DelayReconnect = true;
|
m_DelayReconnect = true;
|
||||||
m_Protocol = PROTOCOL_VERSION;
|
m_Protocol = PROTOCOL_VERSION;
|
||||||
|
|
||||||
m_UserInfo.SetMaxSize(256);
|
m_UserInfo.SetMaxSize(MAX_INFO_STRING);
|
||||||
m_UserInfo.SetValueForKey("name", "HLTV Proxy");
|
m_UserInfo.SetValueForKey("name", "HLTV Proxy");
|
||||||
m_UserInfo.SetValueForKey("cl_lw", "1");
|
m_UserInfo.SetValueForKey("cl_lw", "1");
|
||||||
m_UserInfo.SetValueForKey("cl_lc", "1");
|
m_UserInfo.SetValueForKey("cl_lc", "1");
|
||||||
@ -119,6 +119,7 @@ bool Server::Init(IBaseSystem *system, int serial, char *name)
|
|||||||
m_IsGameServer = false;
|
m_IsGameServer = false;
|
||||||
m_IsVoiceBlocking = false;
|
m_IsVoiceBlocking = false;
|
||||||
m_ServerSocket = nullptr;
|
m_ServerSocket = nullptr;
|
||||||
|
|
||||||
m_ServerChannel.Create(system);
|
m_ServerChannel.Create(system);
|
||||||
m_ServerInfo.SetMaxSize(512);
|
m_ServerInfo.SetMaxSize(512);
|
||||||
|
|
||||||
@ -227,6 +228,7 @@ void Server::ShutDown()
|
|||||||
|
|
||||||
Disconnect();
|
Disconnect();
|
||||||
m_ServerChannel.Close();
|
m_ServerChannel.Close();
|
||||||
|
|
||||||
m_ReliableData.Free();
|
m_ReliableData.Free();
|
||||||
m_UnreliableData.Free();
|
m_UnreliableData.Free();
|
||||||
m_VoiceData.Free();
|
m_VoiceData.Free();
|
||||||
@ -367,7 +369,7 @@ void Server::ProcessMessage(unsigned int seqNr)
|
|||||||
{
|
{
|
||||||
if (m_Instream->IsOverflowed()) {
|
if (m_Instream->IsOverflowed()) {
|
||||||
m_System->Printf("WARNING! Server::ProcessMessage: packet read overflow.\n");
|
m_System->Printf("WARNING! Server::ProcessMessage: packet read overflow.\n");
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cmd = m_Instream->ReadByte();
|
int cmd = m_Instream->ReadByte();
|
||||||
@ -883,11 +885,11 @@ void Server::ParseSetView()
|
|||||||
{
|
{
|
||||||
m_ReliableData.WriteByte(svc_setview);
|
m_ReliableData.WriteByte(svc_setview);
|
||||||
m_ReliableData.WriteBuf(m_Instream->CurrentByte(), 2);
|
m_ReliableData.WriteBuf(m_Instream->CurrentByte(), 2);
|
||||||
m_ReliableData.SkipBytes(2);
|
m_Instream->SkipBytes(2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_System->Errorf("Server::ParseAddAngle: unexpected server state.\n");
|
m_System->Errorf("Server::ParseSetView: unexpected server state.\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -938,8 +940,9 @@ void Server::ParseNewUserMsg()
|
|||||||
iSize = -1;
|
iSize = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
char name[16];
|
char name[17];
|
||||||
m_Instream->ReadBuf(sizeof(name), name);
|
m_Instream->ReadBuf(sizeof(name) - 1, name);
|
||||||
|
name[sizeof(name) - 1] = '\0';
|
||||||
|
|
||||||
m_System->DPrintf("Adding user message:%s(%i).\n", name, iMsg);
|
m_System->DPrintf("Adding user message:%s(%i).\n", name, iMsg);
|
||||||
m_World->AddUserMessage(iMsg, iSize, name);
|
m_World->AddUserMessage(iMsg, iSize, name);
|
||||||
@ -1323,7 +1326,7 @@ void Server::ParseFileTransferFailed()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_System->Printf("WARNING! Downloading \"%s\" failed.\n", name);
|
m_System->Printf("WARNING! Server::ParseFileTransferFailed: Downloading \"%s\" failed.\n", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Server::ParseSignonNum()
|
void Server::ParseSignonNum()
|
||||||
@ -1378,12 +1381,12 @@ void Server::ParseCustomization()
|
|||||||
resource->pNext = nullptr;
|
resource->pNext = nullptr;
|
||||||
|
|
||||||
if (resource->ucFlags & RES_CUSTOM) {
|
if (resource->ucFlags & RES_CUSTOM) {
|
||||||
m_Instream->ReadBuf(16, resource->rgucMD5_hash);
|
m_Instream->ReadBuf(sizeof(resource->rgucMD5_hash), resource->rgucMD5_hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
resource->playernum = index;
|
resource->playernum = index;
|
||||||
m_System->DPrintf("Ignoring player customization (%s).\n", resource->szFileName);
|
m_System->DPrintf("Ignoring player customization (%s).\n", resource->szFileName);
|
||||||
free(resource);
|
Mem_Free(resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Server::ClearFrame(bool completely)
|
void Server::ClearFrame(bool completely)
|
||||||
@ -1422,7 +1425,7 @@ bool Server::ParseUserMessage(int cmd)
|
|||||||
{
|
{
|
||||||
UserMsg *usermsg = m_World->GetUserMsg(cmd);
|
UserMsg *usermsg = m_World->GetUserMsg(cmd);
|
||||||
if (!usermsg) {
|
if (!usermsg) {
|
||||||
m_System->Printf("WARNING! Server::ProcessMessage: unknown user message (%i).\n", cmd);
|
m_System->Printf("WARNING! Server::ParseUserMessage: unknown user message (%i).\n", cmd);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1539,7 +1542,7 @@ void Server::ParseSound()
|
|||||||
m_Instream->StartBitMode();
|
m_Instream->StartBitMode();
|
||||||
|
|
||||||
vec3_t pos;
|
vec3_t pos;
|
||||||
unsigned char *start = this->m_Instream->m_CurByte;
|
unsigned char *start = this->m_Instream->CurrentByte();
|
||||||
int field_mask = m_Instream->ReadBits(9);
|
int field_mask = m_Instream->ReadBits(9);
|
||||||
|
|
||||||
if (field_mask & SND_FL_VOLUME) {
|
if (field_mask & SND_FL_VOLUME) {
|
||||||
@ -1564,20 +1567,21 @@ void Server::ParseSound()
|
|||||||
|
|
||||||
m_Instream->EndBitMode();
|
m_Instream->EndBitMode();
|
||||||
|
|
||||||
m_UnreliableData.WriteByte(6);
|
m_UnreliableData.WriteByte(svc_sound);
|
||||||
m_UnreliableData.WriteBuf(start, m_Instream->m_CurByte - start);
|
m_UnreliableData.WriteBuf(start, m_Instream->CurrentByte() - start);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Server::ParseEvent()
|
void Server::ParseEvent()
|
||||||
{
|
{
|
||||||
m_Instream->StartBitMode();
|
m_Instream->StartBitMode();
|
||||||
|
|
||||||
m_Frame.events = m_Instream->m_CurByte;
|
m_Frame.events = m_Instream->CurrentByte();
|
||||||
m_Frame.eventnum = m_Instream->ReadBits(5);
|
m_Frame.eventnum = m_Instream->ReadBits(5);
|
||||||
|
|
||||||
for (unsigned int i = 0; i < m_Frame.eventnum; i++)
|
for (unsigned int i = 0; i < m_Frame.eventnum; i++)
|
||||||
{
|
{
|
||||||
m_Instream->SkipBits(10);
|
m_Instream->SkipBits(10);
|
||||||
|
|
||||||
if (m_Instream->ReadBit())
|
if (m_Instream->ReadBit())
|
||||||
m_Instream->SkipBits(11);
|
m_Instream->SkipBits(11);
|
||||||
|
|
||||||
@ -1594,10 +1598,10 @@ void Server::ParseEvent()
|
|||||||
|
|
||||||
void Server::ParseStopSound()
|
void Server::ParseStopSound()
|
||||||
{
|
{
|
||||||
int i = m_Instream->ReadShort();
|
int entityIndex = m_Instream->ReadShort();
|
||||||
|
|
||||||
m_UnreliableData.WriteByte(svc_stopsound);
|
m_UnreliableData.WriteByte(svc_stopsound);
|
||||||
m_UnreliableData.WriteShort(i);
|
m_UnreliableData.WriteShort(entityIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Server::ParsePings()
|
void Server::ParsePings()
|
||||||
@ -2059,7 +2063,11 @@ void Server::ParseCenterPrint()
|
|||||||
m_UnreliableData.WriteString(string);
|
m_UnreliableData.WriteString(string);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_System->Errorf("Server::ParseStuffText: unexpected state.\n");
|
m_System->Errorf("Server::ParseCenterPrint: unexpected state.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string[0]) {
|
||||||
|
m_System->DPrintf(">>%s\n", string);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2189,7 +2197,7 @@ void Server::ParseTimeScale()
|
|||||||
{
|
{
|
||||||
m_System->Printf("Server::ParseTimeScale: invalid during signon.\n");
|
m_System->Printf("Server::ParseTimeScale: invalid during signon.\n");
|
||||||
}
|
}
|
||||||
else if (m_ServerState == SERVER_RUNNING && m_ServerState == SERVER_INTERMISSION)
|
else if (m_ServerState == SERVER_RUNNING || m_ServerState == SERVER_INTERMISSION)
|
||||||
{
|
{
|
||||||
m_ReliableData.WriteByte(svc_timescale);
|
m_ReliableData.WriteByte(svc_timescale);
|
||||||
m_ReliableData.WriteFloat(timescale);
|
m_ReliableData.WriteFloat(timescale);
|
||||||
|
@ -39,8 +39,8 @@ bool World::Init(IBaseSystem *system, int serial, char *name)
|
|||||||
SetName(WORLD_INTERFACE_VERSION);
|
SetName(WORLD_INTERFACE_VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ClientUserMsgs = 0;
|
m_ClientUserMsgs = nullptr;
|
||||||
m_ResourcesList = 0;
|
m_ResourcesList = nullptr;
|
||||||
m_ResourcesNum = 0;
|
m_ResourcesNum = 0;
|
||||||
m_Protocol = PROTOCOL_VERSION;
|
m_Protocol = PROTOCOL_VERSION;
|
||||||
|
|
||||||
@ -99,13 +99,13 @@ void World::ShutDown()
|
|||||||
|
|
||||||
if (m_DeltaCache)
|
if (m_DeltaCache)
|
||||||
{
|
{
|
||||||
free(m_DeltaCache);
|
Mem_Free(m_DeltaCache);
|
||||||
m_DeltaCache = nullptr;
|
m_DeltaCache = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_FrameCache)
|
if (m_FrameCache)
|
||||||
{
|
{
|
||||||
free(m_FrameCache);
|
Mem_Free(m_FrameCache);
|
||||||
m_FrameCache = nullptr;
|
m_FrameCache = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,7 +161,7 @@ void World::ClearUserMessages()
|
|||||||
for (pList = m_ClientUserMsgs; pList; pList = pNext)
|
for (pList = m_ClientUserMsgs; pList; pList = pNext)
|
||||||
{
|
{
|
||||||
pNext = pList->next;
|
pNext = pList->next;
|
||||||
free(pList);
|
Mem_Free(pList);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ClientUserMsgs = nullptr;
|
m_ClientUserMsgs = nullptr;
|
||||||
@ -193,7 +193,7 @@ bool World::AddUserMessage(int msgNumber, int size, char *name)
|
|||||||
|
|
||||||
if (!bFound)
|
if (!bFound)
|
||||||
{
|
{
|
||||||
UserMsg *pumsg = (UserMsg *)malloc(sizeof(UserMsg));
|
UserMsg *pumsg = (UserMsg *)Mem_Malloc(sizeof(UserMsg));
|
||||||
memcpy(pumsg, &umsg, sizeof(*pumsg));
|
memcpy(pumsg, &umsg, sizeof(*pumsg));
|
||||||
pumsg->next = m_ClientUserMsgs;
|
pumsg->next = m_ClientUserMsgs;
|
||||||
m_ClientUserMsgs = pumsg;
|
m_ClientUserMsgs = pumsg;
|
||||||
@ -258,7 +258,7 @@ void World::ClearResources()
|
|||||||
resource_t *res, *next;
|
resource_t *res, *next;
|
||||||
for (res = m_ResourcesList; res; res = next) {
|
for (res = m_ResourcesList; res; res = next) {
|
||||||
next = res->pNext;
|
next = res->pNext;
|
||||||
free(res);
|
Mem_Free(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ResourcesList = nullptr;
|
m_ResourcesList = nullptr;
|
||||||
@ -755,7 +755,7 @@ int World::AddFrame(frame_t *newFrame)
|
|||||||
maxFrameSize += sizeof(demo_info_t);
|
maxFrameSize += sizeof(demo_info_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
pdata = (unsigned char *)malloc(maxFrameSize);
|
pdata = (unsigned char *)Mem_ZeroMalloc(maxFrameSize);
|
||||||
|
|
||||||
currentFrame->data = pdata;
|
currentFrame->data = pdata;
|
||||||
currentFrame->delta = -1;
|
currentFrame->delta = -1;
|
||||||
@ -1446,7 +1446,7 @@ bool World::AddSignonData(unsigned char type, unsigned char *data, int size)
|
|||||||
m_SignonData.WriteByte(type);
|
m_SignonData.WriteByte(type);
|
||||||
m_SignonData.WriteBuf(data, size);
|
m_SignonData.WriteBuf(data, size);
|
||||||
|
|
||||||
return m_SignonData.m_Overflowed;
|
return m_SignonData.IsOverflowed();
|
||||||
}
|
}
|
||||||
|
|
||||||
int World::FindUserMsgByName(char *name)
|
int World::FindUserMsgByName(char *name)
|
||||||
@ -1742,10 +1742,10 @@ int World::RemoveFrames(unsigned int startSeqNr, unsigned int endSeqNr)
|
|||||||
m_FramesByTime.Remove(frame);
|
m_FramesByTime.Remove(frame);
|
||||||
|
|
||||||
if (frame->data) {
|
if (frame->data) {
|
||||||
free(frame->data);
|
Mem_Free(frame->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(frame);
|
Mem_Free(frame);
|
||||||
frame = (frame_t *)m_Frames.FindExactKey(++nextseqnr);
|
frame = (frame_t *)m_Frames.FindExactKey(++nextseqnr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1787,10 +1787,10 @@ void World::ClearFrames()
|
|||||||
while (frame)
|
while (frame)
|
||||||
{
|
{
|
||||||
if (frame->data) {
|
if (frame->data) {
|
||||||
free(frame->data);
|
Mem_Free(frame->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(frame);
|
Mem_Free(frame);
|
||||||
frame = (frame_t *)m_Frames.GetNext();
|
frame = (frame_t *)m_Frames.GetNext();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1910,7 +1910,6 @@ void World::ParseDeltaDescription(BitBuffer *stream)
|
|||||||
|
|
||||||
char szDesc[256];
|
char szDesc[256];
|
||||||
strcopy(szDesc, s);
|
strcopy(szDesc, s);
|
||||||
|
|
||||||
m_System->DPrintf("Reading delta description for: %s.\n", s);
|
m_System->DPrintf("Reading delta description for: %s.\n", s);
|
||||||
|
|
||||||
delta_t **ppdelta = m_Delta.LookupRegistration(szDesc);
|
delta_t **ppdelta = m_Delta.LookupRegistration(szDesc);
|
||||||
@ -1924,7 +1923,7 @@ void World::ParseDeltaDescription(BitBuffer *stream)
|
|||||||
*ppdelta = (delta_t *)Mem_ZeroMalloc(sizeof(delta_t));
|
*ppdelta = (delta_t *)Mem_ZeroMalloc(sizeof(delta_t));
|
||||||
pdesc = (delta_description_t *)Mem_ZeroMalloc(sizeof(delta_description_t) * c);
|
pdesc = (delta_description_t *)Mem_ZeroMalloc(sizeof(delta_description_t) * c);
|
||||||
|
|
||||||
(*ppdelta)->dynamic = 1;
|
(*ppdelta)->dynamic = TRUE;
|
||||||
(*ppdelta)->fieldCount = c;
|
(*ppdelta)->fieldCount = c;
|
||||||
|
|
||||||
for (int i = 0; i < c; i++) {
|
for (int i = 0; i < c; i++) {
|
||||||
@ -2122,8 +2121,8 @@ bool World::SaveAsDemo(char *filename, IDirector *director)
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_WorldTime = frame->time;
|
m_WorldTime = frame->time;
|
||||||
demoChannel.Create(m_System, 0, 0);
|
demoChannel.Create(m_System);
|
||||||
demoFile.Init(this, 0, &demoChannel);
|
demoFile.Init(this, nullptr, &demoChannel);
|
||||||
|
|
||||||
if (!demoFile.StartRecording(filename)) {
|
if (!demoFile.StartRecording(filename)) {
|
||||||
return false;
|
return false;
|
||||||
@ -2171,6 +2170,8 @@ bool World::SaveAsDemo(char *filename, IDirector *director)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
demoFile.CloseFile();
|
||||||
|
demoChannel.Clear();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -894,7 +894,6 @@ bool DemoPlayer::LoadGame(char *filename)
|
|||||||
m_LastClockUpdateTime = 0;
|
m_LastClockUpdateTime = 0;
|
||||||
m_LastFrameTime = 0;
|
m_LastFrameTime = 0;
|
||||||
m_PlayerState = DEMOPLAYER_INITIALIZING;
|
m_PlayerState = DEMOPLAYER_INITIALIZING;
|
||||||
m_LastFrameTime = 0;
|
|
||||||
m_MasterMode = true;
|
m_MasterMode = true;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -953,9 +952,9 @@ void DemoPlayer::ExecuteDemoFileCommands(BitBuffer *stream)
|
|||||||
unsigned int cmd;
|
unsigned int cmd;
|
||||||
while ((cmd = stream->ReadByte()) != -1)
|
while ((cmd = stream->ReadByte()) != -1)
|
||||||
{
|
{
|
||||||
switch (cmd)
|
switch ((DemoCmd)cmd)
|
||||||
{
|
{
|
||||||
case DEM_STRING:
|
case DemoCmd::StringCmd:
|
||||||
{
|
{
|
||||||
char szCmdName[64];
|
char szCmdName[64];
|
||||||
stream->ReadBuf(sizeof(szCmdName), szCmdName);
|
stream->ReadBuf(sizeof(szCmdName), szCmdName);
|
||||||
@ -963,14 +962,14 @@ void DemoPlayer::ExecuteDemoFileCommands(BitBuffer *stream)
|
|||||||
m_Engine->Cbuf_AddText("\n");
|
m_Engine->Cbuf_AddText("\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DEM_CLIENTDATA:
|
case DemoCmd::ClientData:
|
||||||
{
|
{
|
||||||
client_data_t cdat;
|
client_data_t cdat;
|
||||||
stream->ReadBuf(sizeof(cdat), &cdat);
|
stream->ReadBuf(sizeof(cdat), &cdat);
|
||||||
m_Engine->DemoUpdateClientData(&cdat);
|
m_Engine->DemoUpdateClientData(&cdat);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DEM_EVENT:
|
case DemoCmd::Event:
|
||||||
{
|
{
|
||||||
int flags = _LittleLong(stream->ReadLong());
|
int flags = _LittleLong(stream->ReadLong());
|
||||||
int idx = _LittleLong(stream->ReadLong());
|
int idx = _LittleLong(stream->ReadLong());
|
||||||
@ -982,7 +981,7 @@ void DemoPlayer::ExecuteDemoFileCommands(BitBuffer *stream)
|
|||||||
m_Engine->CL_QueueEvent(flags, idx, delay, &eargs);
|
m_Engine->CL_QueueEvent(flags, idx, delay, &eargs);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DEM_WEAPONANIM:
|
case DemoCmd::WeaponAnim:
|
||||||
{
|
{
|
||||||
int anim = _LittleLong(stream->ReadLong());
|
int anim = _LittleLong(stream->ReadLong());
|
||||||
int body = _LittleLong(stream->ReadLong());
|
int body = _LittleLong(stream->ReadLong());
|
||||||
@ -990,7 +989,7 @@ void DemoPlayer::ExecuteDemoFileCommands(BitBuffer *stream)
|
|||||||
m_Engine->HudWeaponAnim(anim, body);
|
m_Engine->HudWeaponAnim(anim, body);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DEM_PLAYSOUND:
|
case DemoCmd::PlaySound:
|
||||||
{
|
{
|
||||||
int channel = stream->ReadLong();
|
int channel = stream->ReadLong();
|
||||||
int sampleSize = stream->ReadLong();
|
int sampleSize = stream->ReadLong();
|
||||||
@ -1007,13 +1006,14 @@ void DemoPlayer::ExecuteDemoFileCommands(BitBuffer *stream)
|
|||||||
m_Engine->CL_DemoPlaySound(channel, sample, attenuation, volume, flags, pitch);
|
m_Engine->CL_DemoPlaySound(channel, sample, attenuation, volume, flags, pitch);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DEM_PAYLOAD:
|
case DemoCmd::PayLoad:
|
||||||
{
|
{
|
||||||
unsigned char data[32768];
|
unsigned char data[32768];
|
||||||
memset(data, 0, sizeof(data));
|
memset(data, 0, sizeof(data));
|
||||||
|
|
||||||
int length = stream->ReadLong();
|
int length = stream->ReadLong();
|
||||||
stream->ReadBuf(length, data);
|
stream->ReadBuf(length, data);
|
||||||
|
|
||||||
m_Engine->ClientDLL_ReadDemoBuffer(length, data);
|
m_Engine->ClientDLL_ReadDemoBuffer(length, data);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,18 @@
|
|||||||
|
|
||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
|
DemoClient::DemoClient()
|
||||||
|
{
|
||||||
|
m_Proxy = nullptr;
|
||||||
|
m_World = nullptr;
|
||||||
|
|
||||||
|
m_ClientDelta = 0;
|
||||||
|
m_LastFrameSeqNr = 0;
|
||||||
|
m_IsActive = false;
|
||||||
|
|
||||||
|
memset(m_BaseFileName, 0, sizeof(m_BaseFileName));
|
||||||
|
}
|
||||||
|
|
||||||
bool DemoClient::Init(IBaseSystem *system, int serial, char *name)
|
bool DemoClient::Init(IBaseSystem *system, int serial, char *name)
|
||||||
{
|
{
|
||||||
BaseSystemModule::Init(system, serial, name);
|
BaseSystemModule::Init(system, serial, name);
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
class DemoClient: public IClient, public BaseSystemModule {
|
class DemoClient: public IClient, public BaseSystemModule {
|
||||||
public:
|
public:
|
||||||
DemoClient() {}
|
DemoClient();
|
||||||
virtual ~DemoClient() {}
|
virtual ~DemoClient() {}
|
||||||
|
|
||||||
bool Init(IBaseSystem *system, int serial, char *name);
|
bool Init(IBaseSystem *system, int serial, char *name);
|
||||||
|
@ -28,6 +28,14 @@
|
|||||||
|
|
||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
|
FakeClient::FakeClient()
|
||||||
|
{
|
||||||
|
m_Network = nullptr;
|
||||||
|
m_World = nullptr;
|
||||||
|
m_Server = nullptr;
|
||||||
|
m_Socket = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
bool FakeClient::Init(IBaseSystem *system, int serial, char *name)
|
bool FakeClient::Init(IBaseSystem *system, int serial, char *name)
|
||||||
{
|
{
|
||||||
BaseSystemModule::Init(system, serial, name);
|
BaseSystemModule::Init(system, serial, name);
|
||||||
|
@ -37,7 +37,7 @@ class INetSocket;
|
|||||||
|
|
||||||
class FakeClient: public BaseSystemModule {
|
class FakeClient: public BaseSystemModule {
|
||||||
public:
|
public:
|
||||||
FakeClient() {}
|
FakeClient();
|
||||||
virtual ~FakeClient() {}
|
virtual ~FakeClient() {}
|
||||||
|
|
||||||
bool Init(IBaseSystem *system, int serial, char *name);
|
bool Init(IBaseSystem *system, int serial, char *name);
|
||||||
|
@ -43,10 +43,16 @@ Master::GameToAppIDMapItem_t Master::m_GameToAppIDMap[] =
|
|||||||
{ GAME_APPID_CSTRIKE_BETA, "cstrike_beta" }
|
{ GAME_APPID_CSTRIKE_BETA, "cstrike_beta" }
|
||||||
};
|
};
|
||||||
|
|
||||||
Master::Master() :
|
Master::Master()
|
||||||
m_flMasterUpdateTime(0),
|
|
||||||
m_bSteamInitialized(false)
|
|
||||||
{
|
{
|
||||||
|
m_Proxy = nullptr;
|
||||||
|
m_MasterSocket = nullptr;
|
||||||
|
|
||||||
|
m_NoMaster = false;
|
||||||
|
m_bMasterLoaded = false;
|
||||||
|
m_bSteamInitialized = false;
|
||||||
|
|
||||||
|
m_flMasterUpdateTime = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Master::GetGameAppID(const char *gamedir) const
|
int Master::GetGameAppID(const char *gamedir) const
|
||||||
|
@ -198,8 +198,9 @@ bool Proxy::Init(IBaseSystem *system, int serial, char *name)
|
|||||||
m_InfoString.Resize(2080);
|
m_InfoString.Resize(2080);
|
||||||
m_NextInfoMessagesUpdate = 0;
|
m_NextInfoMessagesUpdate = 0;
|
||||||
|
|
||||||
|
m_RconAddress.Clear();
|
||||||
|
|
||||||
// Clear buffers
|
// Clear buffers
|
||||||
memset(&m_RconAddress, 0, sizeof(m_RconAddress));
|
|
||||||
memset(m_RconPassword, 0, sizeof(m_RconPassword));
|
memset(m_RconPassword, 0, sizeof(m_RconPassword));
|
||||||
memset(m_AdminPassword, 0, sizeof(m_AdminPassword));
|
memset(m_AdminPassword, 0, sizeof(m_AdminPassword));
|
||||||
memset(m_ProxyPassword, 0, sizeof(m_ProxyPassword));
|
memset(m_ProxyPassword, 0, sizeof(m_ProxyPassword));
|
||||||
@ -389,7 +390,7 @@ void Proxy::CMD_Ping(char *cmdLine)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!to.m_Port) {
|
if (!to.m_Port) {
|
||||||
to.SetPort_(atoi("27015"));
|
to.SetPort(atoi("27015"));
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Socket->OutOfBandPrintf(&to, "ping");
|
m_Socket->OutOfBandPrintf(&to, "ping");
|
||||||
@ -469,7 +470,7 @@ void Proxy::ReplyConnect(NetAddress *to, int protocol, int challenge, char *prot
|
|||||||
if (type == TYPE_CLIENT && m_DispatchMode != DISPATCH_OFF)
|
if (type == TYPE_CLIENT && m_DispatchMode != DISPATCH_OFF)
|
||||||
{
|
{
|
||||||
float ratio = m_Status.GetBestRelayProxy(&relayProxy);
|
float ratio = m_Status.GetBestRelayProxy(&relayProxy);
|
||||||
float myRatio = m_Clients.CountElements() / m_MaxClients * 1.25f;
|
float myRatio = (float)(m_Clients.CountElements() / m_MaxClients) * 1.25f;
|
||||||
if (myRatio > 1) {
|
if (myRatio > 1) {
|
||||||
myRatio = 1;
|
myRatio = 1;
|
||||||
}
|
}
|
||||||
@ -739,7 +740,7 @@ bool Proxy::WriteSignonData(int type, BitBuffer *stream)
|
|||||||
stream->WriteString(COM_VarArgs("%s\n", m_SignonCommands));
|
stream->WriteString(COM_VarArgs("%s\n", m_SignonCommands));
|
||||||
}
|
}
|
||||||
|
|
||||||
float ex_interp = (1 / GetMaxUpdateRate()) + 0.05f;
|
float ex_interp = (float)(1 / GetMaxUpdateRate()) + 0.05f;
|
||||||
stream->WriteByte(svc_stufftext);
|
stream->WriteByte(svc_stufftext);
|
||||||
stream->WriteString(COM_VarArgs("ex_interp %.2f\n", ex_interp));
|
stream->WriteString(COM_VarArgs("ex_interp %.2f\n", ex_interp));
|
||||||
|
|
||||||
@ -946,7 +947,7 @@ void Proxy::CMD_Connect(char *cmdLine)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!address.m_Port) {
|
if (!address.m_Port) {
|
||||||
address.SetPort_(atoi("27015"));
|
address.SetPort(atoi("27015"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Reset();
|
Reset();
|
||||||
@ -1237,7 +1238,7 @@ void Proxy::CMD_RconAddress(char *cmdLine)
|
|||||||
|
|
||||||
m_Network->ResolveAddress(params.GetToken(1), &m_RconAddress);
|
m_Network->ResolveAddress(params.GetToken(1), &m_RconAddress);
|
||||||
if (!m_RconAddress.m_Port) {
|
if (!m_RconAddress.m_Port) {
|
||||||
m_RconAddress.SetPort_(atoi("27015"));
|
m_RconAddress.SetPort(atoi("27015"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2027,7 +2028,7 @@ resource_t *Proxy::LoadResourceFromFile(char *fileName, resourcetype_t type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_System->Printf("WARNING! Failed to load resource file %s.\n", fileName);
|
m_System->Printf("WARNING! Failed to load resource file %s.\n", fileName);
|
||||||
free(newresource);
|
Mem_Free(newresource);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2041,7 +2042,7 @@ void Proxy::FreeResource(resource_t *resource)
|
|||||||
m_System->FreeFile(resource->data);
|
m_System->FreeFile(resource->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(resource);
|
Mem_Free(resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Proxy::ClearResources()
|
void Proxy::ClearResources()
|
||||||
@ -2169,7 +2170,7 @@ bool Proxy::IsBanned(NetAddress *adr)
|
|||||||
while (bannedAdr)
|
while (bannedAdr)
|
||||||
{
|
{
|
||||||
if (adr->EqualBase(bannedAdr)) {
|
if (adr->EqualBase(bannedAdr)) {
|
||||||
return bannedAdr != nullptr;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bannedAdr = (NetAddress *)m_BannList.GetNext();
|
bannedAdr = (NetAddress *)m_BannList.GetNext();
|
||||||
@ -2249,13 +2250,13 @@ void Proxy::CMD_Bann(char *cmdLine)
|
|||||||
if (!(m_Network->ResolveAddress(params.GetToken(1), adr)))
|
if (!(m_Network->ResolveAddress(params.GetToken(1), adr)))
|
||||||
{
|
{
|
||||||
m_System->Printf("Couldn't resolve IP \x02%s\"\n", params.GetToken(1));
|
m_System->Printf("Couldn't resolve IP \x02%s\"\n", params.GetToken(1));
|
||||||
free(adr);
|
Mem_Free(adr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsBanned(adr)) {
|
if (IsBanned(adr)) {
|
||||||
m_System->Printf("IP already banned.\n");
|
m_System->Printf("IP already banned.\n");
|
||||||
free(adr);
|
Mem_Free(adr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +28,16 @@
|
|||||||
|
|
||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
|
ProxyClient::ProxyClient(IProxy *proxy)
|
||||||
|
{
|
||||||
|
m_Proxy = proxy;
|
||||||
|
|
||||||
|
m_ChatEnabled = false;
|
||||||
|
m_LastChatTime = 0;
|
||||||
|
m_LastCheerTime = 0;
|
||||||
|
m_NextDecalTime = 0;
|
||||||
|
}
|
||||||
|
|
||||||
void ProxyClient::ShutDown()
|
void ProxyClient::ShutDown()
|
||||||
{
|
{
|
||||||
char *clientTypeString[] = { "Spectator", "Relay Proxy", "Director", "Commentator", "Fake Client" };
|
char *clientTypeString[] = { "Spectator", "Relay Proxy", "Director", "Commentator", "Fake Client" };
|
||||||
|
@ -36,7 +36,7 @@ class IBaseSystem;
|
|||||||
|
|
||||||
class ProxyClient: public BaseClient {
|
class ProxyClient: public BaseClient {
|
||||||
public:
|
public:
|
||||||
ProxyClient(IProxy *proxy) : m_Proxy(proxy) {}
|
ProxyClient(IProxy *proxy);
|
||||||
virtual ~ProxyClient() {}
|
virtual ~ProxyClient() {}
|
||||||
|
|
||||||
bool Init(IBaseSystem *system, int serial, char *name);
|
bool Init(IBaseSystem *system, int serial, char *name);
|
||||||
|
@ -28,6 +28,17 @@
|
|||||||
|
|
||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
|
Status::Status()
|
||||||
|
{
|
||||||
|
m_Proxy = nullptr;
|
||||||
|
|
||||||
|
m_NextUpdateTime = 0;
|
||||||
|
m_NumberOfProxies = 0;
|
||||||
|
m_NumberOfSlots = 0;
|
||||||
|
m_NumberOfSpectators = 0;
|
||||||
|
m_MaxNumberOfSpectators = 0;
|
||||||
|
}
|
||||||
|
|
||||||
bool Status::Init(IBaseSystem *system, int serial, char *name)
|
bool Status::Init(IBaseSystem *system, int serial, char *name)
|
||||||
{
|
{
|
||||||
BaseSystemModule::Init(system, serial, name);
|
BaseSystemModule::Init(system, serial, name);
|
||||||
@ -259,7 +270,7 @@ void Status::GetLocalStats(int &proxies, int &slots, int &spectators)
|
|||||||
if (m_SystemTime > proxy->time + 64)
|
if (m_SystemTime > proxy->time + 64)
|
||||||
{
|
{
|
||||||
m_Proxies.Remove(proxy);
|
m_Proxies.Remove(proxy);
|
||||||
free(proxy);
|
Mem_Free(proxy);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -44,7 +44,7 @@ typedef struct proxyInfo_s {
|
|||||||
class IProxy;
|
class IProxy;
|
||||||
class Status: public BaseSystemModule {
|
class Status: public BaseSystemModule {
|
||||||
public:
|
public:
|
||||||
Status() {}
|
Status();
|
||||||
virtual ~Status() {}
|
virtual ~Status() {}
|
||||||
|
|
||||||
bool Init(IBaseSystem *system, int serial, char *name);
|
bool Init(IBaseSystem *system, int serial, char *name);
|
||||||
|
@ -560,7 +560,9 @@ void BaseClient::WriteDatagram(double time, frame_t *frame)
|
|||||||
if (m_ClientChannel.m_unreliableStream.IsOverflowed()) {
|
if (m_ClientChannel.m_unreliableStream.IsOverflowed()) {
|
||||||
m_System->DPrintf("Unreliable data stream overflow.\n");
|
m_System->DPrintf("Unreliable data stream overflow.\n");
|
||||||
m_ClientChannel.m_unreliableStream.Clear();
|
m_ClientChannel.m_unreliableStream.Clear();
|
||||||
m_LastFrameSeqNr = 0;
|
|
||||||
|
// FIXME: V519 The 'm_LastFrameSeqNr' variable is assigned values twice successively.
|
||||||
|
// m_LastFrameSeqNr = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_LastFrameSeqNr = frame->seqnr;
|
m_LastFrameSeqNr = frame->seqnr;
|
||||||
@ -633,12 +635,13 @@ void BaseClient::ParseMove(NetPacket *packet)
|
|||||||
|
|
||||||
void BaseClient::SetName(char *newName)
|
void BaseClient::SetName(char *newName)
|
||||||
{
|
{
|
||||||
char temp[32];
|
char temp[1024];
|
||||||
COM_RemoveEvilChars(newName);
|
COM_RemoveEvilChars(newName);
|
||||||
COM_TrimSpace(newName, temp);
|
COM_TrimSpace(newName, temp);
|
||||||
|
|
||||||
if (strlen(temp) > sizeof(temp) - 1) {
|
const int len = sizeof(m_ClientName);
|
||||||
temp[sizeof(temp) - 1] = '\0';
|
if (strlen(temp) >= len) {
|
||||||
|
temp[len] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!temp[0] || !_stricmp(temp, "console")) {
|
if (!temp[0] || !_stricmp(temp, "console")) {
|
||||||
|
@ -151,15 +151,16 @@ protected:
|
|||||||
};
|
};
|
||||||
static clc_func_s m_ClientFuncs[];
|
static clc_func_s m_ClientFuncs[];
|
||||||
|
|
||||||
|
enum { MAX_USER_INFO = 256, MAX_SCOREBOARD_NAME = 32 };
|
||||||
|
|
||||||
IWorld *m_World;
|
IWorld *m_World;
|
||||||
INetSocket *m_Socket;
|
INetSocket *m_Socket;
|
||||||
NetChannel m_ClientChannel;
|
NetChannel m_ClientChannel;
|
||||||
|
|
||||||
int m_ClientType;
|
int m_ClientType;
|
||||||
int m_ClientState;
|
int m_ClientState;
|
||||||
char m_ClientName[32];
|
char m_ClientName[MAX_SCOREBOARD_NAME];
|
||||||
|
|
||||||
enum { MAX_USER_INFO = 256 };
|
|
||||||
InfoString m_Userinfo;
|
InfoString m_Userinfo;
|
||||||
unsigned int m_LastFrameSeqNr;
|
unsigned int m_LastFrameSeqNr;
|
||||||
unsigned int m_DeltaFrameSeqNr;
|
unsigned int m_DeltaFrameSeqNr;
|
||||||
|
@ -162,7 +162,7 @@ void BitBuffer::Reset()
|
|||||||
void BitBuffer::Free()
|
void BitBuffer::Free()
|
||||||
{
|
{
|
||||||
if (m_Data && m_OwnData) {
|
if (m_Data && m_OwnData) {
|
||||||
free(m_Data);
|
Mem_Free(m_Data);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Data = nullptr;
|
m_Data = nullptr;
|
||||||
|
@ -106,7 +106,7 @@ void DemoFile::CloseFile()
|
|||||||
|
|
||||||
if (m_Entries)
|
if (m_Entries)
|
||||||
{
|
{
|
||||||
free(m_Entries);
|
Mem_Free(m_Entries);
|
||||||
m_Entries = nullptr;
|
m_Entries = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -423,7 +423,7 @@ void DemoFile::ReadDemoPacket(BitBuffer *demoData, demo_info_t *demoInfo)
|
|||||||
int msglen; // command length in bytes
|
int msglen; // command length in bytes
|
||||||
unsigned char msgbuf[MAX_POSSIBLE_MSG];
|
unsigned char msgbuf[MAX_POSSIBLE_MSG];
|
||||||
float time;
|
float time;
|
||||||
unsigned char cmd;
|
DemoCmd cmd;
|
||||||
int frame;
|
int frame;
|
||||||
int channel;
|
int channel;
|
||||||
int sampleSize;
|
int sampleSize;
|
||||||
@ -432,18 +432,18 @@ void DemoFile::ReadDemoPacket(BitBuffer *demoData, demo_info_t *demoInfo)
|
|||||||
while (readNextCmd)
|
while (readNextCmd)
|
||||||
{
|
{
|
||||||
unsigned int curpos = m_FileSystem->Tell(m_FileHandle);
|
unsigned int curpos = m_FileSystem->Tell(m_FileHandle);
|
||||||
if (m_FileSystem->Read(&cmd, sizeof(unsigned char), m_FileHandle) != sizeof(unsigned char)) {
|
if (m_FileSystem->Read(&cmd, sizeof(cmd), m_FileHandle) != sizeof(cmd)) {
|
||||||
StopPlayBack();
|
StopPlayBack();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_FileSystem->Read(&time, sizeof(float), m_FileHandle);
|
m_FileSystem->Read(&time, sizeof(time), m_FileHandle);
|
||||||
time = _LittleFloat(time);
|
time = _LittleFloat(time);
|
||||||
|
|
||||||
m_FileSystem->Read(&frame, sizeof(int), m_FileHandle);
|
m_FileSystem->Read(&frame, sizeof(frame), m_FileHandle);
|
||||||
frame = _LittleLong(frame);
|
frame = _LittleLong(frame);
|
||||||
|
|
||||||
if (cmd && cmd != DEM_READ) {
|
if (cmd != DemoCmd::Unknown && cmd != DemoCmd::Read) {
|
||||||
m_nextReadTime = m_startTime + time;
|
m_nextReadTime = m_startTime + time;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -456,16 +456,16 @@ void DemoFile::ReadDemoPacket(BitBuffer *demoData, demo_info_t *demoInfo)
|
|||||||
|
|
||||||
switch (cmd)
|
switch (cmd)
|
||||||
{
|
{
|
||||||
case DEM_START_TIME:
|
case DemoCmd::StartTime:
|
||||||
m_startTime = (float)m_System->GetTime();
|
m_startTime = (float)m_System->GetTime();
|
||||||
break;
|
break;
|
||||||
case DEM_STRING:
|
case DemoCmd::StringCmd:
|
||||||
msglen = sizeof(char [64]);
|
msglen = sizeof(char [64]);
|
||||||
break;
|
break;
|
||||||
case DEM_CLIENTDATA:
|
case DemoCmd::ClientData:
|
||||||
msglen = sizeof(client_data_t);
|
msglen = sizeof(client_data_t);
|
||||||
break;
|
break;
|
||||||
case DEM_READ:
|
case DemoCmd::Read:
|
||||||
{
|
{
|
||||||
if (++m_CurrentEntry >= m_EntryNumber) {
|
if (++m_CurrentEntry >= m_EntryNumber) {
|
||||||
StopPlayBack();
|
StopPlayBack();
|
||||||
@ -477,22 +477,22 @@ void DemoFile::ReadDemoPacket(BitBuffer *demoData, demo_info_t *demoInfo)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DEM_EVENT:
|
case DemoCmd::Event:
|
||||||
msglen = sizeof(int) // flags
|
msglen = sizeof(int) // flags
|
||||||
+ sizeof(int) // idx
|
+ sizeof(int) // idx
|
||||||
+ sizeof(float) // delay
|
+ sizeof(float) // delay
|
||||||
+ sizeof(event_args_t); // eargs
|
+ sizeof(event_args_t); // eargs
|
||||||
break;
|
break;
|
||||||
case DEM_WEAPONANIM:
|
case DemoCmd::WeaponAnim:
|
||||||
msglen = sizeof(int) // anim
|
msglen = sizeof(int) // anim
|
||||||
+ sizeof(int); // body
|
+ sizeof(int); // body
|
||||||
break;
|
break;
|
||||||
case DEM_PLAYSOUND:
|
case DemoCmd::PlaySound:
|
||||||
{
|
{
|
||||||
m_FileSystem->Read(&channel, sizeof(int), m_FileHandle);
|
m_FileSystem->Read(&channel, sizeof(channel), m_FileHandle);
|
||||||
channel = _LittleLong(channel);
|
channel = _LittleLong(channel);
|
||||||
|
|
||||||
m_FileSystem->Read(&sampleSize, sizeof(int), m_FileHandle);
|
m_FileSystem->Read(&sampleSize, sizeof(sampleSize), m_FileHandle);
|
||||||
sampleSize = _LittleLong(sampleSize);
|
sampleSize = _LittleLong(sampleSize);
|
||||||
msglen = sampleSize
|
msglen = sampleSize
|
||||||
+ sizeof(float) // attenuation
|
+ sizeof(float) // attenuation
|
||||||
@ -501,9 +501,9 @@ void DemoFile::ReadDemoPacket(BitBuffer *demoData, demo_info_t *demoInfo)
|
|||||||
+ sizeof(int); // pitch
|
+ sizeof(int); // pitch
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DEM_PAYLOAD:
|
case DemoCmd::PayLoad:
|
||||||
{
|
{
|
||||||
m_FileSystem->Read(&msglen, sizeof(int), m_FileHandle);
|
m_FileSystem->Read(&msglen, sizeof(msglen), m_FileHandle);
|
||||||
msglen = _LittleLong(msglen);
|
msglen = _LittleLong(msglen);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -516,15 +516,15 @@ void DemoFile::ReadDemoPacket(BitBuffer *demoData, demo_info_t *demoInfo)
|
|||||||
{
|
{
|
||||||
m_FileSystem->Read(msgbuf, msglen, m_FileHandle);
|
m_FileSystem->Read(msgbuf, msglen, m_FileHandle);
|
||||||
|
|
||||||
demoData->WriteByte(cmd);
|
demoData->WriteByte((unsigned char)cmd);
|
||||||
|
|
||||||
switch (cmd)
|
switch (cmd)
|
||||||
{
|
{
|
||||||
case DEM_PLAYSOUND:
|
case DemoCmd::PlaySound:
|
||||||
demoData->WriteLong(channel);
|
demoData->WriteLong(channel);
|
||||||
demoData->WriteLong(sampleSize);
|
demoData->WriteLong(sampleSize);
|
||||||
break;
|
break;
|
||||||
case DEM_PAYLOAD:
|
case DemoCmd::PayLoad:
|
||||||
demoData->WriteLong(msglen);
|
demoData->WriteLong(msglen);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -537,7 +537,7 @@ void DemoFile::ReadDemoPacket(BitBuffer *demoData, demo_info_t *demoInfo)
|
|||||||
ReadSequenceInfo();
|
ReadSequenceInfo();
|
||||||
|
|
||||||
int length;
|
int length;
|
||||||
if (m_FileSystem->Read(&length, sizeof(int), m_FileHandle) != sizeof(int)) {
|
if (m_FileSystem->Read(&length, sizeof(length), m_FileHandle) != sizeof(length)) {
|
||||||
m_System->DPrintf("WARNING! DemoFile::ReadDemoPacket: Bad demo length.\n");
|
m_System->DPrintf("WARNING! DemoFile::ReadDemoPacket: Bad demo length.\n");
|
||||||
StopPlayBack();
|
StopPlayBack();
|
||||||
return;
|
return;
|
||||||
|
@ -46,21 +46,22 @@ const int DEMO_PROTOCOL = 5;
|
|||||||
const int DEMO_STARTUP = 0; // this lump contains startup info needed to spawn into the server
|
const int DEMO_STARTUP = 0; // this lump contains startup info needed to spawn into the server
|
||||||
const int DEMO_NORMAL = 1; // this lump contains playback info of messages, etc., needed during playback.
|
const int DEMO_NORMAL = 1; // this lump contains playback info of messages, etc., needed during playback.
|
||||||
|
|
||||||
enum DemoCmd {
|
#undef PlaySound
|
||||||
DEM_UNKNOWN = 0,
|
enum class DemoCmd : unsigned char {
|
||||||
DEM_NOREWIND, // startup message
|
Unknown = 0,
|
||||||
DEM_START_TIME,
|
NoRewind, // startup message
|
||||||
DEM_STRING,
|
StartTime,
|
||||||
DEM_CLIENTDATA,
|
StringCmd,
|
||||||
DEM_READ,
|
ClientData,
|
||||||
DEM_EVENT,
|
Read,
|
||||||
DEM_WEAPONANIM,
|
Event,
|
||||||
DEM_PLAYSOUND,
|
WeaponAnim,
|
||||||
DEM_PAYLOAD
|
PlaySound,
|
||||||
|
PayLoad
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct demoheader_s {
|
typedef struct demoheader_s {
|
||||||
char szFileStamp[6];
|
char szFileStamp[8];
|
||||||
int nDemoProtocol; // should be DEMO_PROTOCOL
|
int nDemoProtocol; // should be DEMO_PROTOCOL
|
||||||
int nNetProtocolVersion; // should be PROTOCOL_VERSION
|
int nNetProtocolVersion; // should be PROTOCOL_VERSION
|
||||||
char szMapName[260]; // name of map
|
char szMapName[260]; // name of map
|
||||||
|
@ -49,7 +49,8 @@ char *DirectorCmd::m_CMD_Name[] =
|
|||||||
"WAYPOINTS"
|
"WAYPOINTS"
|
||||||
};
|
};
|
||||||
|
|
||||||
DirectorCmd::DirectorCmd()
|
DirectorCmd::DirectorCmd() :
|
||||||
|
m_Size(0), m_Index(0)
|
||||||
{
|
{
|
||||||
Clear();
|
Clear();
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ InfoString::InfoString(char *string)
|
|||||||
InfoString::~InfoString()
|
InfoString::~InfoString()
|
||||||
{
|
{
|
||||||
if (m_String) {
|
if (m_String) {
|
||||||
free(m_String);
|
Mem_Free(m_String);
|
||||||
m_String = nullptr;
|
m_String = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -100,7 +100,7 @@ void InfoString::SetMaxSize(unsigned int maxSize)
|
|||||||
newBuffer[maxSize - 1] = '\0';
|
newBuffer[maxSize - 1] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
free(m_String);
|
Mem_Free(m_String);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_MaxSize = maxSize;
|
m_MaxSize = maxSize;
|
||||||
@ -398,7 +398,7 @@ bool InfoString::SetValueForStarKey(const char *key, const char *value)
|
|||||||
// Remove current key/value and return if we doesn't specified to set a value
|
// Remove current key/value and return if we doesn't specified to set a value
|
||||||
RemoveKey(key);
|
RemoveKey(key);
|
||||||
|
|
||||||
if (!value || !strlen(value)) {
|
if (!strlen(value)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,12 +28,12 @@
|
|||||||
|
|
||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
NetAddress::NetAddress()
|
NetAddress::NetAddress() :
|
||||||
|
m_Port(0), m_IP(), m_String()
|
||||||
{
|
{
|
||||||
memset(this, 0, sizeof(NetAddress));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetAddress::SetPort_(int16 port)
|
void NetAddress::SetPort(int16 port)
|
||||||
{
|
{
|
||||||
m_Port = htons(port);
|
m_Port = htons(port);
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,8 @@
|
|||||||
#include "netadr.h"
|
#include "netadr.h"
|
||||||
#include "BitBuffer.h"
|
#include "BitBuffer.h"
|
||||||
|
|
||||||
|
#undef SetPort
|
||||||
|
|
||||||
class NetAddress {
|
class NetAddress {
|
||||||
public:
|
public:
|
||||||
NetAddress();
|
NetAddress();
|
||||||
@ -51,7 +53,7 @@ public:
|
|||||||
bool Equal(NetAddress *a);
|
bool Equal(NetAddress *a);
|
||||||
bool FromSockadr(struct sockaddr *s);
|
bool FromSockadr(struct sockaddr *s);
|
||||||
void ToSockadr(struct sockaddr *s);
|
void ToSockadr(struct sockaddr *s);
|
||||||
void SetPort_(int16 port);
|
void SetPort(int16 port);
|
||||||
void ToStream(BitBuffer *stream);
|
void ToStream(BitBuffer *stream);
|
||||||
void FromStream(BitBuffer *stream);
|
void FromStream(BitBuffer *stream);
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ void NetChannel::UnlinkFragment(fragbuf_t *buf, int stream)
|
|||||||
if (*list == buf)
|
if (*list == buf)
|
||||||
{
|
{
|
||||||
*list = buf->next;
|
*list = buf->next;
|
||||||
free(buf);
|
Mem_Free(buf);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ void NetChannel::UnlinkFragment(fragbuf_t *buf, int stream)
|
|||||||
if (search->next == buf)
|
if (search->next == buf)
|
||||||
{
|
{
|
||||||
search->next = buf->next;
|
search->next = buf->next;
|
||||||
free(buf);
|
Mem_Free(buf);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ void NetChannel::ClearFragbufs(fragbuf_t **ppbuf)
|
|||||||
while (buf)
|
while (buf)
|
||||||
{
|
{
|
||||||
n = buf->next;
|
n = buf->next;
|
||||||
free(buf);
|
Mem_Free(buf);
|
||||||
buf = n;
|
buf = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,7 +132,7 @@ void NetChannel::ClearFragments()
|
|||||||
{
|
{
|
||||||
next = wait->next;
|
next = wait->next;
|
||||||
ClearFragbufs(&wait->fragbufs);
|
ClearFragbufs(&wait->fragbufs);
|
||||||
free(wait);
|
Mem_Free(wait);
|
||||||
wait = next;
|
wait = next;
|
||||||
}
|
}
|
||||||
m_waitlist[i] = nullptr;
|
m_waitlist[i] = nullptr;
|
||||||
@ -155,7 +155,7 @@ void NetChannel::FlushIncoming(int stream)
|
|||||||
while (p)
|
while (p)
|
||||||
{
|
{
|
||||||
n = p->next;
|
n = p->next;
|
||||||
free(p);
|
Mem_Free(p);
|
||||||
p = n;
|
p = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,7 +203,7 @@ void NetChannel::Clear()
|
|||||||
|
|
||||||
if (m_tempBuffer)
|
if (m_tempBuffer)
|
||||||
{
|
{
|
||||||
free(m_tempBuffer);
|
Mem_Free(m_tempBuffer);
|
||||||
m_tempBuffer = nullptr;
|
m_tempBuffer = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -664,7 +664,7 @@ void NetChannel::ProcessIncoming(unsigned char *data, int size)
|
|||||||
|
|
||||||
bool frag_message[MAX_STREAMS] = { false, false };
|
bool frag_message[MAX_STREAMS] = { false, false };
|
||||||
int frag_offset[MAX_STREAMS] = { 0, 0 };
|
int frag_offset[MAX_STREAMS] = { 0, 0 };
|
||||||
int m_frag_length[MAX_STREAMS] = { 0, 0 };
|
int frag_length[MAX_STREAMS] = { 0, 0 };
|
||||||
|
|
||||||
bool message_contains_fragments;
|
bool message_contains_fragments;
|
||||||
int net_drop;
|
int net_drop;
|
||||||
@ -718,7 +718,7 @@ void NetChannel::ProcessIncoming(unsigned char *data, int size)
|
|||||||
frag_message[i] = true;
|
frag_message[i] = true;
|
||||||
fragid[i] = message.ReadLong();
|
fragid[i] = message.ReadLong();
|
||||||
frag_offset[i] = message.ReadShort();
|
frag_offset[i] = message.ReadShort();
|
||||||
m_frag_length[i] = message.ReadShort();
|
frag_length[i] = message.ReadShort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -801,8 +801,8 @@ void NetChannel::ProcessIncoming(unsigned char *data, int size)
|
|||||||
pbuf = FindBufferById(&m_incomingbufs[i], fragid[i], true);
|
pbuf = FindBufferById(&m_incomingbufs[i], fragid[i], true);
|
||||||
if (pbuf)
|
if (pbuf)
|
||||||
{
|
{
|
||||||
memcpy(pbuf->data, message.GetData() + message.CurrentSize() + frag_offset[i], m_frag_length[i]);
|
memcpy(pbuf->data, message.GetData() + message.CurrentSize() + frag_offset[i], frag_length[i]);
|
||||||
pbuf->size = m_frag_length[i];
|
pbuf->size = frag_length[i];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -815,15 +815,15 @@ void NetChannel::ProcessIncoming(unsigned char *data, int size)
|
|||||||
|
|
||||||
// Rearrange incoming data to not have the frag stuff in the middle of it
|
// Rearrange incoming data to not have the frag stuff in the middle of it
|
||||||
int wpos = message.CurrentSize() + frag_offset[i];
|
int wpos = message.CurrentSize() + frag_offset[i];
|
||||||
int rpos = wpos + m_frag_length[i];
|
int rpos = wpos + frag_length[i];
|
||||||
|
|
||||||
memmove(message.GetData() + wpos, message.GetData() + rpos, message.GetMaxSize() - rpos);
|
memmove(message.GetData() + wpos, message.GetData() + rpos, message.GetMaxSize() - rpos);
|
||||||
message.m_MaxSize -= m_frag_length[i];
|
message.m_MaxSize -= frag_length[i];
|
||||||
|
|
||||||
for (j = i + 1; j < MAX_STREAMS; j++)
|
for (j = i + 1; j < MAX_STREAMS; j++)
|
||||||
{
|
{
|
||||||
// fragments order already validated
|
// fragments order already validated
|
||||||
frag_offset[j] -= m_frag_length[i];
|
frag_offset[j] -= frag_length[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -871,7 +871,7 @@ void NetChannel::FragSend()
|
|||||||
m_fragbufcount[i] = wait->fragbufcount;
|
m_fragbufcount[i] = wait->fragbufcount;
|
||||||
|
|
||||||
// Throw away wait list
|
// Throw away wait list
|
||||||
free(wait);
|
Mem_Free(wait);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -974,7 +974,7 @@ bool NetChannel::CreateFragmentsFromBuffer(void *buffer, int size, int streamtyp
|
|||||||
if (!buf)
|
if (!buf)
|
||||||
{
|
{
|
||||||
m_System->Printf("NetChannel::CreateFragmentsFromBuffer:Couldn't allocate fragbuf_t\n");
|
m_System->Printf("NetChannel::CreateFragmentsFromBuffer:Couldn't allocate fragbuf_t\n");
|
||||||
free(wait);
|
Mem_Free(wait);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1100,7 +1100,7 @@ void NetChannel::CopyNormalFragments()
|
|||||||
n = p->next;
|
n = p->next;
|
||||||
packet->data.WriteBuf(p->data, p->size);
|
packet->data.WriteBuf(p->data, p->size);
|
||||||
|
|
||||||
free(p);
|
Mem_Free(p);
|
||||||
p = n;
|
p = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1257,7 +1257,7 @@ bool NetChannel::CopyFileFragments()
|
|||||||
{
|
{
|
||||||
n = p->next;
|
n = p->next;
|
||||||
filecontent.WriteBuf(p->data, p->size);
|
filecontent.WriteBuf(p->data, p->size);
|
||||||
free(p);
|
Mem_Free(p);
|
||||||
p = n;
|
p = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +28,17 @@
|
|||||||
|
|
||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
|
|
||||||
|
BaseSystemModule::BaseSystemModule()
|
||||||
|
{
|
||||||
|
m_System = nullptr;
|
||||||
|
m_Serial = 0;
|
||||||
|
m_SystemTime = 0;
|
||||||
|
m_State = MODULE_UNDEFINED;
|
||||||
|
|
||||||
|
memset(m_Name, 0, sizeof(m_Name));
|
||||||
|
}
|
||||||
|
|
||||||
char *BaseSystemModule::GetName()
|
char *BaseSystemModule::GetName()
|
||||||
{
|
{
|
||||||
return m_Name;
|
return m_Name;
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
class BaseSystemModule: virtual public ISystemModule {
|
class BaseSystemModule: virtual public ISystemModule {
|
||||||
public:
|
public:
|
||||||
BaseSystemModule() : m_State(MODULE_UNDEFINED) {}
|
BaseSystemModule();
|
||||||
virtual ~BaseSystemModule() {}
|
virtual ~BaseSystemModule() {}
|
||||||
|
|
||||||
virtual bool Init(IBaseSystem *system, int serial, char *name);
|
virtual bool Init(IBaseSystem *system, int serial, char *name);
|
||||||
|
@ -44,7 +44,7 @@ ObjectDictionary::ObjectDictionary()
|
|||||||
ObjectDictionary::~ObjectDictionary()
|
ObjectDictionary::~ObjectDictionary()
|
||||||
{
|
{
|
||||||
if (m_entries) {
|
if (m_entries) {
|
||||||
free(m_entries);
|
Mem_Free(m_entries);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,7 +56,7 @@ void ObjectDictionary::Clear(bool freeObjectssMemory)
|
|||||||
{
|
{
|
||||||
void *obj = m_entries[i].object;
|
void *obj = m_entries[i].object;
|
||||||
if (obj) {
|
if (obj) {
|
||||||
free(obj);
|
Mem_Free(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -177,7 +177,7 @@ bool ObjectDictionary::RemoveIndex(int index, bool freeObjectMemory)
|
|||||||
entry_t *e2 = &m_entries[index + 1];
|
entry_t *e2 = &m_entries[index + 1];
|
||||||
|
|
||||||
if (freeObjectMemory && e1->object)
|
if (freeObjectMemory && e1->object)
|
||||||
free(e1->object);
|
Mem_Free(e1->object);
|
||||||
|
|
||||||
while (p != e1)
|
while (p != e1)
|
||||||
{
|
{
|
||||||
@ -281,7 +281,7 @@ bool ObjectDictionary::CheckSize()
|
|||||||
|
|
||||||
if (newSize != m_maxSize)
|
if (newSize != m_maxSize)
|
||||||
{
|
{
|
||||||
entry_t *newEntries = (entry_t *)malloc(sizeof(entry_t) * newSize);
|
entry_t *newEntries = (entry_t *)Mem_Malloc(sizeof(entry_t) * newSize);
|
||||||
if (!newEntries)
|
if (!newEntries)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -290,7 +290,7 @@ bool ObjectDictionary::CheckSize()
|
|||||||
if (m_entries && m_size)
|
if (m_entries && m_size)
|
||||||
{
|
{
|
||||||
memcpy(newEntries, m_entries, sizeof(entry_t) * m_size);
|
memcpy(newEntries, m_entries, sizeof(entry_t) * m_size);
|
||||||
free(m_entries);
|
Mem_Free(m_entries);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_entries = newEntries;
|
m_entries = newEntries;
|
||||||
|
@ -84,7 +84,7 @@ void *ObjectList::RemoveHead()
|
|||||||
if (m_tail == m_head)
|
if (m_tail == m_head)
|
||||||
m_tail = nullptr;
|
m_tail = nullptr;
|
||||||
|
|
||||||
free(m_head);
|
Mem_Free(m_head);
|
||||||
m_head = newHead;
|
m_head = newHead;
|
||||||
|
|
||||||
m_number--;
|
m_number--;
|
||||||
@ -140,7 +140,7 @@ void *ObjectList::RemoveTail()
|
|||||||
if (m_head == m_tail)
|
if (m_head == m_tail)
|
||||||
m_head = nullptr;
|
m_head = nullptr;
|
||||||
|
|
||||||
free(m_tail);
|
Mem_Free(m_tail);
|
||||||
m_tail = newTail;
|
m_tail = newTail;
|
||||||
|
|
||||||
m_number--;
|
m_number--;
|
||||||
@ -189,9 +189,9 @@ void ObjectList::Clear(bool freeElementsMemory)
|
|||||||
ne = e->next;
|
ne = e->next;
|
||||||
|
|
||||||
if (freeElementsMemory && e->object)
|
if (freeElementsMemory && e->object)
|
||||||
free(e->object);
|
Mem_Free(e->object);
|
||||||
|
|
||||||
free(e);
|
Mem_Free(e);
|
||||||
e = ne;
|
e = ne;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,7 +214,7 @@ bool ObjectList::Remove(void *object)
|
|||||||
if (m_tail == e) m_tail = e->prev;
|
if (m_tail == e) m_tail = e->prev;
|
||||||
if (m_current == e) m_current= e->next;
|
if (m_current == e) m_current= e->next;
|
||||||
|
|
||||||
free(e);
|
Mem_Free(e);
|
||||||
m_number--;
|
m_number--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ int StartVGUI()
|
|||||||
// make sure we get the right version
|
// make sure we get the right version
|
||||||
adminFactory = Sys_GetFactory(g_hAdminServerModule);
|
adminFactory = Sys_GetFactory(g_hAdminServerModule);
|
||||||
g_pAdminServer = (IAdminServer *)adminFactory(ADMINSERVER_INTERFACE_VERSION, nullptr);
|
g_pAdminServer = (IAdminServer *)adminFactory(ADMINSERVER_INTERFACE_VERSION, nullptr);
|
||||||
g_pAdminVGuiModule = (IVGuiModule *)adminFactory("VGuiModuleAdminServer001", nullptr);
|
g_pAdminVGuiModule = (IVGuiModule *)adminFactory(VGUIMODULE_INTERFACE_VERSION, nullptr);
|
||||||
Assert(g_pAdminServer != nullptr);
|
Assert(g_pAdminServer != nullptr);
|
||||||
Assert(g_pAdminVGuiModule != nullptr);
|
Assert(g_pAdminVGuiModule != nullptr);
|
||||||
if (!g_pAdminServer || !g_pAdminVGuiModule)
|
if (!g_pAdminServer || !g_pAdminVGuiModule)
|
||||||
|
@ -959,8 +959,8 @@ void DELTA_ClearEncoders()
|
|||||||
while (p)
|
while (p)
|
||||||
{
|
{
|
||||||
n = p->next;
|
n = p->next;
|
||||||
free(p->name);
|
Mem_Free(p->name);
|
||||||
free(p);
|
Mem_Free(p);
|
||||||
p = n;
|
p = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1016,7 +1016,7 @@ void DELTA_ClearLinks(delta_link_t **plinks)
|
|||||||
while (p)
|
while (p)
|
||||||
{
|
{
|
||||||
n = p->next;
|
n = p->next;
|
||||||
free(p);
|
Mem_Free(p);
|
||||||
p = n;
|
p = n;
|
||||||
}
|
}
|
||||||
*plinks = 0;
|
*plinks = 0;
|
||||||
@ -1042,7 +1042,7 @@ delta_t *DELTA_BuildFromLinks(delta_link_t **pplinks)
|
|||||||
for (p = *pplinks, pcur = pdesc; p; p = p->next, pcur++)
|
for (p = *pplinks, pcur = pdesc; p; p = p->next, pcur++)
|
||||||
{
|
{
|
||||||
memcpy(pcur, p->delta, sizeof(delta_description_t));
|
memcpy(pcur, p->delta, sizeof(delta_description_t));
|
||||||
free(p->delta);
|
Mem_Free(p->delta);
|
||||||
p->delta = nullptr;
|
p->delta = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1178,10 +1178,10 @@ void DELTA_FreeDescription(delta_t **ppdesc)
|
|||||||
if (ppdesc && *ppdesc)
|
if (ppdesc && *ppdesc)
|
||||||
{
|
{
|
||||||
if ((*ppdesc)->dynamic) {
|
if ((*ppdesc)->dynamic) {
|
||||||
free((*ppdesc)->pdd);
|
Mem_Free((*ppdesc)->pdd);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(*ppdesc);
|
Mem_Free(*ppdesc);
|
||||||
*ppdesc = nullptr;
|
*ppdesc = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1216,8 +1216,8 @@ void DELTA_ClearDefinitions()
|
|||||||
while (p)
|
while (p)
|
||||||
{
|
{
|
||||||
n = p->next;
|
n = p->next;
|
||||||
free(p->ptypename);
|
Mem_Free(p->ptypename);
|
||||||
free(p);
|
Mem_Free(p);
|
||||||
p = n;
|
p = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1402,13 +1402,13 @@ void DELTA_ClearRegistrations()
|
|||||||
while (p)
|
while (p)
|
||||||
{
|
{
|
||||||
n = p->next;
|
n = p->next;
|
||||||
free(p->name);
|
Mem_Free(p->name);
|
||||||
|
|
||||||
if (p->pdesc) {
|
if (p->pdesc) {
|
||||||
DELTA_FreeDescription(&p->pdesc);
|
DELTA_FreeDescription(&p->pdesc);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(p);
|
Mem_Free(p);
|
||||||
p = n;
|
p = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user