diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas
index b98681b1c42dd705a623edf16a4cb2d1f280b76c..01dcc3ce0182044baf67cbcef01a4b57c49e7802 100644 (file)
--- a/src/game/g_netmsg.pas
+++ b/src/game/g_netmsg.pas
if gTriggers[I].ClientID = SID then
with gTriggers[I] do
begin
- if SPlaying then
+ if Sound <> nil then
begin
- if tgcLocal then
- Sound.PlayVolumeAt(X+(Width div 2), Y+(Height div 2), tgcVolume/255.0)
+ if SPlaying then
+ begin
+ if tgcLocal then
+ Sound.PlayVolumeAt(X+(Width div 2), Y+(Height div 2), tgcVolume/255.0)
+ else
+ Sound.PlayPanVolume((tgcPan-127.0)/128.0, tgcVolume/255.0);
+ Sound.SetPosition(SPos);
+ end
else
- Sound.PlayPanVolume((tgcPan-127.0)/128.0, tgcVolume/255.0);
- Sound.SetPosition(SPos);
- end
- else
- if Sound.IsPlaying then Sound.Stop;
+ if Sound.IsPlaying then Sound.Stop;
+ end;
SoundPlayCount := SCount;
end;
end;
gPlayer1.ReleaseKeys;
+ gPlayer1.weaponSwitchKeysStateChange(-1, isKeyPressed(KeyNextWeapon, KeyNextWeapon2));
+ gPlayer1.weaponSwitchKeysStateChange(-2, isKeyPressed(KeyPrevWeapon, KeyPrevWeapon2));
+
if P1MoveButton = 1 then
begin
kByte := kByte or NET_KEY_LEFT;
end;
if isKeyPressed(KeyFire, KeyFire2) then kByte := kByte or NET_KEY_FIRE;
if isKeyPressed(KeyOpen, KeyOpen2) then kByte := kByte or NET_KEY_OPEN;
- if isKeyPressed(KeyNextWeapon, KeyNextWeapon2) then kByte := kByte or NET_KEY_NW;
- if isKeyPressed(KeyPrevWeapon, KeyPrevWeapon2) then kByte := kByte or NET_KEY_PW;
+ if isKeyPressed(KeyNextWeapon, KeyNextWeapon2) and gPlayer1.isWeaponSwitchKeyReleased(-1) then kByte := kByte or NET_KEY_NW;
+ if isKeyPressed(KeyPrevWeapon, KeyPrevWeapon2) and gPlayer1.isWeaponSwitchKeyReleased(-2) then kByte := kByte or NET_KEY_PW;
for I := 0 to High(KeyWeapon) do
+ begin
if isKeyPressed(KeyWeapon[I], KeyWeapon2[I]) then
- WeaponSelect := WeaponSelect or Word(1 shl I);
+ begin
+ gPlayer1.weaponSwitchKeysStateChange(i, true);
+ if gPlayer1.isWeaponSwitchKeyReleased(i) then WeaponSelect := WeaponSelect or Word(1 shl I);
+ end
+ else
+ begin
+ gPlayer1.weaponSwitchKeysStateChange(i, false);
+ end;
+ end;
end;
// fix movebutton state
P1MoveButton := P1MoveButton or (strafeDir shl 4);
else
kByte := NET_KEY_CHAT;
+ gPlayer1.weaponSwitchKeysShiftNewStates();
+
NetOut.Write(Byte(NET_MSG_PLRPOS));
NetOut.Write(gTime);
NetOut.Write(kByte);
mapDataMsg: TMapDataMsg;
begin
e_WriteLog('NET: Received map request from ' +
- DecodeIPV4(C.Peer.address.host), TMsgType.Notify);
+ DecodeIPV4(C^.Peer.address.host), TMsgType.Notify);
mapDataMsg := CreateMapDataMsg(MapsDir + gGameSettings.WAD, gExternalResources);
- peer := NetClients[C.ID].Peer;
+ peer := NetClients[C^.ID].Peer;
MapDataMsgToBytes(payload, mapDataMsg);
g_Net_SendData(payload, peer, True, NET_CHAN_DOWNLOAD);
begin
FileName := ExtractFileName(M.ReadString());
e_WriteLog('NET: Received res request: ' + FileName +
- ' from ' + DecodeIPV4(C.Peer.address.host), TMsgType.Notify);
+ ' from ' + DecodeIPV4(C^.Peer.address.host), TMsgType.Notify);
if not IsValidFilePath(FileName) then
begin
exit;
end;
- peer := NetClients[C.ID].Peer;
+ peer := NetClients[C^.ID].Peer;
if gExternalResources.IndexOf(FileName) > -1 then
begin