]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - netconn.h
fix a crash in dpm + framegroups
[xonotic/darkplaces.git] / netconn.h
index 63df664494c0f3833439d997001e283f3cbc8cba..29670ccb6cc4a43c5f962a55b4b0bd69d5e1a0eb 100755 (executable)
--- a/netconn.h
+++ b/netconn.h
@@ -62,6 +62,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 // CCREQ_RULE_INFO
 //             string  rule
 //
+// CCREQ_RCON
+//             string  password
+//             string  command
+//
 //
 //
 // CCREP_ACCEPT
@@ -89,6 +93,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 // CCREP_RULE_INFO
 //             string  rule
 //             string  value
+//
+// CCREP_RCON
+//             string  reply
 
 //     note:
 //             There are two address forms used above.  The short form is just a
@@ -104,12 +111,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #define CCREQ_SERVER_INFO      0x02
 #define CCREQ_PLAYER_INFO      0x03
 #define CCREQ_RULE_INFO                0x04
+#define CCREQ_RCON             0x05 // RocketGuy: ProQuake rcon support
 
 #define CCREP_ACCEPT           0x81
 #define CCREP_REJECT           0x82
 #define CCREP_SERVER_INFO      0x83
 #define CCREP_PLAYER_INFO      0x84
 #define CCREP_RULE_INFO                0x85
+#define CCREP_RCON             0x86 // RocketGuy: ProQuake rcon support
 
 typedef struct netconn_s
 {
@@ -142,11 +151,13 @@ typedef struct netconn_s
        int receiveMessageLength;
        unsigned char receiveMessage[NET_MAXMESSAGE];
 
+       // used by both NQ and QW protocols
+       unsigned int outgoing_unreliable_sequence;
+
        struct netconn_nq_s
        {
                unsigned int ackSequence;
                unsigned int sendSequence;
-               unsigned int unreliableSendSequence;
 
                unsigned int receiveSequence;
                unsigned int unreliableReceiveSequence;
@@ -176,7 +187,6 @@ typedef struct netconn_s
 
                int                     incoming_reliable_sequence;             // single bit, maintained local
 
-               int                     outgoing_sequence;
                int                     reliable_sequence;                      // single bit
                int                     last_reliable_sequence;         // sequence number of last send
        }
@@ -226,7 +236,9 @@ typedef enum serverlist_maskop_e
        SLMO_EQUAL,
        SLMO_GREATER,
        SLMO_GREATEREQUAL,
-       SLMO_NOTEQUAL
+       SLMO_NOTEQUAL,
+       SLMO_STARTSWITH,
+       SLMO_NOTSTARTSWITH
 } serverlist_maskop_t;
 
 // struct with all fields that you can search for or sort by
@@ -244,6 +256,10 @@ typedef struct serverlist_info_s
        char map[32];
        // name of the session
        char name[128];
+       // qc-defined short status string
+       char qcstatus[128];
+       // frags/ping/name list (if they fit in the packet)
+       char players[1400];
        // max client number
        int maxplayers;
        // number of currently connected players (including bots)
@@ -252,12 +268,16 @@ typedef struct serverlist_info_s
        int numbots;
        // number of currently connected players that are not bots
        int numhumans;
+       // number of free slots
+       int freeslots;
        // protocol version
        int protocol;
        // game data version
        // (an integer that is used for filtering incompatible servers,
        //  not filterable by QC)
        int gameversion;
+       // favorite server flag
+       qboolean isfavorite;
 } serverlist_info_t;
 
 typedef enum
@@ -273,15 +293,26 @@ typedef enum
        SLIF_PROTOCOL,
        SLIF_NUMBOTS,
        SLIF_NUMHUMANS,
+       SLIF_FREESLOTS,
+       SLIF_QCSTATUS,
+       SLIF_PLAYERS,
+       SLIF_ISFAVORITE,
        SLIF_COUNT
 } serverlist_infofield_t;
 
+typedef enum
+{
+       SLSF_DESCENDING = 1,
+       SLSF_FAVORITESFIRST = 2
+} serverlist_sortflags_t;
+
 typedef enum
 {
        SQS_NONE = 0,
        SQS_QUERYING,
        SQS_QUERIED,
-       SQS_TIMEDOUT
+       SQS_TIMEDOUT,
+       SQS_REFRESHING
 } serverlist_query_state;
 
 typedef struct serverlist_entry_s
@@ -292,7 +323,7 @@ typedef struct serverlist_entry_s
        unsigned querycounter;
        // used to calculate ping when update comes in
        double querytime;
-       // query protocol to use on this server
+   // query protocol to use on this server
        int protocol; // may be PROTOCOL_QUAKEWORLD or PROTOCOL_DARKPLACES7
 
        serverlist_info_t info;
@@ -313,7 +344,7 @@ extern serverlist_mask_t serverlist_andmasks[SERVERLIST_ANDMASKCOUNT];
 extern serverlist_mask_t serverlist_ormasks[SERVERLIST_ORMASKCOUNT];
 
 extern serverlist_infofield_t serverlist_sortbyfield;
-extern qboolean serverlist_sortdescending;
+extern int serverlist_sortflags; // not using the enum, as it is a bitmask
 
 extern int serverlist_viewcount;
 extern serverlist_entry_t *serverlist_viewlist[SERVERLIST_VIEWLISTSIZE];
@@ -322,6 +353,8 @@ extern int serverlist_cachecount;
 
 extern qboolean serverlist_consoleoutput;
 
+void ServerList_GetPlayerStatistics(int *numplayerspointer, int *maxplayerspointer);
+
 //============================================================================
 //
 // public network functions
@@ -347,7 +380,7 @@ extern cvar_t cl_netlocalping;
 extern cvar_t cl_netport;
 extern cvar_t sv_netport;
 extern cvar_t net_address;
-//extern cvar_t net_netaddress_ipv6;
+extern cvar_t net_address_ipv6;
 
 qboolean NetConn_CanSend(netconn_t *conn);
 int NetConn_SendUnreliableMessage(netconn_t *conn, sizebuf_t *data, protocolversion_t protocol, int rate, qboolean quakesignon_suppressreliables);
@@ -378,12 +411,16 @@ void NetConn_QueryQueueFrame(void);
 void Net_Stats_f(void);
 void Net_Slist_f(void);
 void Net_SlistQW_f(void);
+void Net_Refresh_f(void);
 
 // ServerList interface (public)
 // manually refresh the view set, do this after having changed the mask or any other flag
 void ServerList_RebuildViewList(void);
 void ServerList_ResetMasks(void);
-void ServerList_QueryList(qboolean querydp, qboolean queryqw);
+void ServerList_QueryList(qboolean resetcache, qboolean querydp, qboolean queryqw, qboolean consoleoutput);
+
+// called whenever net_slist_favorites changes
+void NetConn_UpdateFavorites();
 
 #endif