diff --git a/fteqtv/parse.c b/fteqtv/parse.c index d27f50b8d..e074ea4a7 100644 --- a/fteqtv/parse.c +++ b/fteqtv/parse.c @@ -168,17 +168,6 @@ void SendBufferToViewer(viewer_t *v, const char *buffer, int length, qboolean re void Multicast(sv_t *tv, char *buffer, int length, int to, unsigned int playermask) { -/* -#define dem_cmd 0 //shouldn't be present -#define dem_read 1 //intended for the proxy, equivelent to dem_all :\ -#define dem_set 2 //keeps the playerinfo packets in sync, present once, at start, with specific parameters. Ignored. -#define dem_multiple 3 //send to multiple specific players if tracking - basically team_prints. -#define dem_single 4 //send to a single player, sprint, centerprint, etc -#define dem_stats 5 //overkill... same as single -#define dem_all 6 //broadcast to all -*/ - - viewer_t *v; switch(to) { @@ -204,6 +193,14 @@ void Multicast(sv_t *tv, char *buffer, int length, int to, unsigned int playerma break; } } +void Broadcast(cluster_t *cluster, char *buffer, int length) +{ + viewer_t *v; + for (v = cluster->viewers; v; v = v->next) + { + SendBufferToViewer(v, buffer, length, true); + } +} static void ParseServerData(sv_t *tv, netmsg_t *m, int to, unsigned int playermask) { diff --git a/fteqtv/qtv.h b/fteqtv/qtv.h index fc01321ee..1f1b299bd 100644 --- a/fteqtv/qtv.h +++ b/fteqtv/qtv.h @@ -71,6 +71,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include <sys/time.h> #include <sys/types.h> #include <sys/socket.h> + #include <arpa/inet.h> #include <netdb.h> #include <stdarg.h> #include <stdlib.h> @@ -297,7 +298,7 @@ typedef struct { unsigned short leafs[MAX_ENTITY_LEAFS]; } entity_t; -typedef struct sv_s { +struct sv_s { netadr_t serveraddress; unsigned char buffer[MAX_PROXY_BUFFER]; //this doesn't cycle. @@ -364,9 +365,9 @@ typedef struct sv_s { //options: char server[MAX_QPATH]; -} sv_t; +}; -typedef struct cluster_s { +struct cluster_s { SOCKET qwdsocket; //udp + quakeworld protocols char commandinput[512]; @@ -393,9 +394,9 @@ typedef struct cluster_s { int maxviewers; int maxproxies; - boolean wanttoexit; + qboolean wanttoexit; -} cluster_t; +}; @@ -578,6 +579,7 @@ void WriteString(netmsg_t *b, const char *str); void WriteData(netmsg_t *b, const char *data, int length); void Multicast(sv_t *tv, char *buffer, int length, int to, unsigned int playermask); +void Broadcast(cluster_t *cluster, char *buffer, int length); void ParseMessage(sv_t *tv, char *buffer, int length, int to, int mask); void BuildServerData(sv_t *tv, netmsg_t *msg, qboolean mvd, int servercount); SOCKET QW_InitUDPSocket(int port); diff --git a/fteqtv/qw.c b/fteqtv/qw.c index a73d418de..a5dc30b03 100644 --- a/fteqtv/qw.c +++ b/fteqtv/qw.c @@ -1037,7 +1037,7 @@ void PMove(viewer_t *v, usercmd_t *cmd) v->origin[i] += (cmd->forwardmove*fwd[i] + cmd->sidemove*rgt[i] + cmd->upmove*up[i])*(cmd->msec/1000.0f); } -void QTV_Say(sv_t *qtv, viewer_t *v, char *message) +void QTV_Say(cluster_t *cluster, viewer_t *v, char *message) { char buf[1024]; netmsg_t msg; @@ -1054,7 +1054,7 @@ void QTV_Say(sv_t *qtv, viewer_t *v, char *message) WriteString2(&msg, message); WriteString(&msg, "\n"); - Multicast(qtv, msg.data, msg.cursize, dem_all, (unsigned int)-1); + Broadcast(cluster, msg.data, msg.cursize); } viewer_t *QW_IsOn(cluster_t *cluster, char *name) @@ -1089,8 +1089,8 @@ void QW_PrintfToViewer(viewer_t *v, char *format, ...) SendBufferToViewer(v, buf, strlen(buf)+1, true); } -static const filename_t ConnectionlessModelList[] = {"", "maps/start.bsp", "progs/player.mdl", ""}; -static const filename_t ConnectionlessSoundList[] = {"", ""}; +static const filename_t ConnectionlessModelList[] = {{""}, {"maps/start.bsp"}, {"progs/player.mdl"}, {""}}; +static const filename_t ConnectionlessSoundList[] = {{""}, {""}}; void Menu_Enter(cluster_t *cluster, viewer_t *viewer, int buttonnum); @@ -1245,9 +1245,9 @@ void ParseQWC(cluster_t *cluster, sv_t *qtv, viewer_t *v, netmsg_t *m) { } else if (!strncmp(buf, "say \"", 5) && !cluster->notalking) - QTV_Say(qtv, v, buf+5); + QTV_Say(cluster, v, buf+5); else if (!strncmp(buf, "say ", 4) && !cluster->notalking) - QTV_Say(qtv, v, buf+4); + QTV_Say(cluster, v, buf+4); else if (!strncmp(buf, "servers", 7)) { diff --git a/fteqtv/source.c b/fteqtv/source.c index 821e7e6ee..1295c5b9f 100644 --- a/fteqtv/source.c +++ b/fteqtv/source.c @@ -1550,4 +1550,5 @@ void Sys_Printf(cluster_t *cluster, char *fmt, ...) va_end (argptr); printf("%s", string); -} \ No newline at end of file +} +