mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
Refresh variables that were modified
This commit is contained in:
parent
63bea5156a
commit
b593da7c2a
2 changed files with 77 additions and 20 deletions
|
@ -23,10 +23,11 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#pragma once
|
||||
|
||||
#include "q_gamespy.h"
|
||||
#include "../qcommon/q_shared.h"
|
||||
#include "../qcommon/qcommon.h"
|
||||
#include "cl_gamespy.h"
|
||||
#include "sv_gamespy.h"
|
||||
|
||||
#define MAX_MASTERS 8
|
||||
#define MAX_MASTERS 8
|
||||
#define MASTER_DEFAULT_MSPORT 28900
|
||||
#define MASTER_DEFAULT_HBPORT 27900
|
||||
|
||||
|
@ -35,21 +36,55 @@ cvar_t *com_master_msport[MAX_MASTERS];
|
|||
cvar_t *com_master_hbport[MAX_MASTERS];
|
||||
|
||||
master_entry_t entries[MAX_MASTERS];
|
||||
int num_entries = 0;
|
||||
int num_entries = 0;
|
||||
|
||||
static void CreateMasterVar(int index, const char *host, int msport, int hbport) {
|
||||
com_master_host[index] = Cvar_Get(va("com_master%d_host", index), host, CVAR_INIT);
|
||||
com_master_msport[index] = Cvar_Get(va("com_master%d_msport", index), va("%d", msport), CVAR_INIT);
|
||||
com_master_hbport[index] = Cvar_Get(va("com_master%d_hbport", index), va("%d", hbport), CVAR_INIT);
|
||||
}
|
||||
static void Com_RestartGameSpy_f(void);
|
||||
|
||||
void Com_InitGameSpy() {
|
||||
static qboolean ShouldRefreshMasters()
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < MAX_MASTERS; i++) {
|
||||
if (com_master_host[i] && com_master_host[i]->latchedString) {
|
||||
return qtrue;
|
||||
}
|
||||
if (com_master_msport[i] && com_master_msport[i]->latchedString) {
|
||||
return qtrue;
|
||||
}
|
||||
if (com_master_hbport[i] && com_master_hbport[i]->latchedString) {
|
||||
return qtrue;
|
||||
}
|
||||
}
|
||||
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
static void CreateMasterVar(int index, const char *host, int msport, int hbport)
|
||||
{
|
||||
//
|
||||
// These entries come from the 333networks community and use the same software
|
||||
// These variables should be modified for testing purposes only.
|
||||
// So prevent them to be saved in the configuration file.
|
||||
//
|
||||
com_master_host[index] = Cvar_Get(va("com_master%d_host", index), host, CVAR_LATCH | CVAR_TEMP);
|
||||
com_master_msport[index] = Cvar_Get(va("com_master%d_msport", index), va("%d", msport), CVAR_LATCH | CVAR_TEMP);
|
||||
com_master_hbport[index] = Cvar_Get(va("com_master%d_hbport", index), va("%d", hbport), CVAR_LATCH | CVAR_TEMP);
|
||||
|
||||
com_master_host[index]->flags &= ~CVAR_ARCHIVE;
|
||||
com_master_msport[index]->flags &= ~CVAR_ARCHIVE;
|
||||
com_master_hbport[index]->flags &= ~CVAR_ARCHIVE;
|
||||
}
|
||||
|
||||
qboolean Com_RefreshGameSpyMasters()
|
||||
{
|
||||
int i;
|
||||
qboolean shouldRestart;
|
||||
|
||||
shouldRestart = ShouldRefreshMasters();
|
||||
|
||||
//
|
||||
// These masters come from the 333networks community and use the same software
|
||||
// that emulate the GameSpy protocol -- see https://333networks.com/
|
||||
// These masters are managed by different entities, they are independent and are syncing eachother.
|
||||
// They are managed by different entities, are independent and sync with eachother.
|
||||
//
|
||||
CreateMasterVar(0, "master.333networks.com", MASTER_DEFAULT_MSPORT, MASTER_DEFAULT_HBPORT);
|
||||
CreateMasterVar(1, "master.errorist.eu", MASTER_DEFAULT_MSPORT, MASTER_DEFAULT_HBPORT);
|
||||
|
@ -57,7 +92,7 @@ void Com_InitGameSpy() {
|
|||
CreateMasterVar(3, "master-au.unrealarchive.org", MASTER_DEFAULT_MSPORT, MASTER_DEFAULT_HBPORT);
|
||||
CreateMasterVar(4, "master.frag-net.com", MASTER_DEFAULT_MSPORT, MASTER_DEFAULT_HBPORT);
|
||||
|
||||
for(i = 5; i < MAX_MASTERS; i++) {
|
||||
for (i = 5; i < MAX_MASTERS; i++) {
|
||||
CreateMasterVar(i, "", MASTER_DEFAULT_MSPORT, MASTER_DEFAULT_HBPORT);
|
||||
}
|
||||
|
||||
|
@ -66,16 +101,35 @@ void Com_InitGameSpy() {
|
|||
//
|
||||
// Find and insert valid entries
|
||||
//
|
||||
for(i = 0; i < MAX_MASTER_SERVERS; i++) {
|
||||
for (i = 0; i < MAX_MASTER_SERVERS; i++) {
|
||||
master_entry_t *entry = &entries[num_entries];
|
||||
|
||||
if (com_master_host[i]->string && com_master_host[i]->string[0]) {
|
||||
entry->host = com_master_host[i]->string;
|
||||
entry->host = com_master_host[i]->string;
|
||||
entry->queryport = com_master_msport[i]->integer;
|
||||
entry->hbport = com_master_hbport[i]->integer;
|
||||
entry->hbport = com_master_hbport[i]->integer;
|
||||
num_entries++;
|
||||
}
|
||||
}
|
||||
|
||||
return shouldRestart;
|
||||
}
|
||||
|
||||
void Com_InitGameSpy()
|
||||
{
|
||||
Com_RefreshGameSpyMasters();
|
||||
|
||||
Cmd_AddCommand("net_gamespy_restart", Com_RestartGameSpy_f);
|
||||
}
|
||||
|
||||
static void Com_RestartGameSpy_f(void)
|
||||
{
|
||||
Com_RefreshGameSpyMasters();
|
||||
|
||||
#ifndef DEDICATED
|
||||
CL_RestartGamespy_f();
|
||||
#endif
|
||||
SV_RestartGamespy_f();
|
||||
}
|
||||
|
||||
unsigned int Com_GetNumMasterEntries()
|
||||
|
@ -83,18 +137,18 @@ unsigned int Com_GetNumMasterEntries()
|
|||
return num_entries;
|
||||
}
|
||||
|
||||
void Com_GetMasterEntry(int index, master_entry_t* entry)
|
||||
void Com_GetMasterEntry(int index, master_entry_t *entry)
|
||||
{
|
||||
if (index >= num_entries) {
|
||||
entry->host = NULL;
|
||||
entry->hbport = 0;
|
||||
entry->host = NULL;
|
||||
entry->hbport = 0;
|
||||
entry->queryport = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
entry->host = com_master_host[index]->string;
|
||||
entry->host = com_master_host[index]->string;
|
||||
entry->queryport = com_master_msport[index]->integer;
|
||||
entry->hbport = com_master_hbport[index]->integer;
|
||||
entry->hbport = com_master_hbport[index]->integer;
|
||||
}
|
||||
|
||||
const char *Com_GetMasterHost()
|
||||
|
|
|
@ -24,6 +24,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "../qcommon/q_shared.h"
|
||||
|
||||
typedef struct {
|
||||
const char *host;
|
||||
int queryport;
|
||||
|
@ -31,6 +33,7 @@ typedef struct {
|
|||
} master_entry_t;
|
||||
|
||||
void Com_InitGameSpy();
|
||||
qboolean Com_RefreshGameSpyMasters();
|
||||
|
||||
unsigned int Com_GetNumMasterEntries();
|
||||
void Com_GetMasterEntry(int index, master_entry_t* entry);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue