diff --git a/polymer/eduke32/source/game.c b/polymer/eduke32/source/game.c index 64bc09883..f6e13f908 100644 --- a/polymer/eduke32/source/game.c +++ b/polymer/eduke32/source/game.c @@ -8456,6 +8456,28 @@ void G_InitTimer(int32_t ticspersec) } } + +static int32_t g_RTSPlaying; + +// Returns: started playing? +int32_t G_StartRTS(int32_t i, int localp) +{ + if (!ud.lockout && ud.config.FXDevice >= 0 && ud.config.SoundToggle && + RTS_IsInitialized() && g_RTSPlaying == 0 && (ud.config.VoiceToggle & (localp ? 1 : 4))) + { + char *sndptr = (char *)RTS_GetSound(i-1); + + if (sndptr != NULL) + { + FX_PlayAuto3D(sndptr, RTS_SoundLength(i-1), FX_ONESHOT, 0, 0, FX_VOLUME(1), 255, -i); + g_RTSPlaying = 7; + return 1; + } + } + + return 0; +} + void G_HandleLocalKeys(void) { int32_t i,ch; @@ -8719,41 +8741,31 @@ void G_HandleLocalKeys(void) } // Not SHIFT -- that is, either some ALT or WIN. - if (!ud.lockout && ud.config.SoundToggle && - RTS_IsInitialized() && g_RTSPlaying == 0 && (ud.config.VoiceToggle & 1)) + if (G_StartRTS(i, 1)) { - char *sndptr = (char *)RTS_GetSound(i-1); - - if (sndptr != NULL) - { - FX_PlayAuto3D(sndptr, RTS_SoundLength(i-1), FX_ONESHOT, 0, 0, FX_VOLUME(1), 255, -i); - - g_RTSPlaying = 7; #ifndef NETCODE_DISABLE - if ((g_netServer || ud.multimode > 1)) - { - tempbuf[0] = PACKET_RTS; - tempbuf[1] = i; - tempbuf[2] = myconnectindex; + if ((g_netServer || ud.multimode > 1)) + { + tempbuf[0] = PACKET_RTS; + tempbuf[1] = i; + tempbuf[2] = myconnectindex; - if (g_netClient) - enet_peer_send(g_netClientPeer, CHAN_CHAT, enet_packet_create(tempbuf, 3, 0)); - else if (g_netServer) - enet_host_broadcast(g_netServer, CHAN_CHAT, enet_packet_create(tempbuf, 3, 0)); - } -#endif - pus = NUMPAGES; - pub = NUMPAGES; - - return; + if (g_netClient) + enet_peer_send(g_netClientPeer, CHAN_CHAT, enet_packet_create(tempbuf, 3, 0)); + else if (g_netServer) + enet_host_broadcast(g_netServer, CHAN_CHAT, enet_packet_create(tempbuf, 3, 0)); } +#endif + pus = NUMPAGES; + pub = NUMPAGES; + + return; } } } if (!ALT_IS_PRESSED && !SHIFTS_IS_PRESSED && !WIN_IS_PRESSED) { - if ((g_netServer || ud.multimode > 1) && BUTTON(gamefunc_SendMessage)) { KB_FlushKeyboardQueue(); diff --git a/polymer/eduke32/source/game.h b/polymer/eduke32/source/game.h index a45d9f869..b12a80dba 100644 --- a/polymer/eduke32/source/game.h +++ b/polymer/eduke32/source/game.h @@ -413,6 +413,8 @@ extern char forcegl; #define Net_EnterText(x, y, t, dalen, c) _EnterText(1,x,y,t,dalen,c) #define S_StopSound(num) S_StopEnvSound(num, -1) +extern int32_t G_StartRTS(int32_t i, int localp); + extern void G_MaybeAllocPlayer(int32_t pnum); static inline void G_HandleAsync(void) diff --git a/polymer/eduke32/source/global.h b/polymer/eduke32/source/global.h index faeb1582b..b9bd23e74 100644 --- a/polymer/eduke32/source/global.h +++ b/polymer/eduke32/source/global.h @@ -59,7 +59,6 @@ G_EXTERN animwalltype animwall[MAXANIMWALLS]; G_EXTERN char *ScriptQuotes[MAXQUOTES],*ScriptQuoteRedefinitions[MAXQUOTES]; G_EXTERN char *label; G_EXTERN char EnvMusicFilename[MAXVOLUMES+1][BMAX_PATH]; -G_EXTERN char g_RTSPlaying; G_EXTERN int32_t g_musicIndex; G_EXTERN char g_loadFromGroupOnly; G_EXTERN char g_numSkills; diff --git a/polymer/eduke32/source/net.c b/polymer/eduke32/source/net.c index 6e2edd901..b01279921 100644 --- a/polymer/eduke32/source/net.c +++ b/polymer/eduke32/source/net.c @@ -682,20 +682,7 @@ void Net_ParsePacketCommon(uint8_t *pbuf, int32_t packbufleng, int32_t serverpac break; case PACKET_RTS: - if (!RTS_IsInitialized()) - break; - - if (ud.config.SoundToggle == 0 || ud.lockout == 1 || ud.config.FXDevice < 0 || !(ud.config.VoiceToggle & 4)) - break; - { - char *sndptr = (char *)RTS_GetSound(pbuf[1]-1); - - if (sndptr != NULL) - { - FX_PlayAuto3D(sndptr, RTS_SoundLength(pbuf[1]-1), FX_ONESHOT, 0, 0, FX_VOLUME(1), 255, -pbuf[1]); - g_RTSPlaying = 7; - } - } + G_StartRTS(pbuf[1], 0); break; case PACKET_USER_MAP: