diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas
index 3a2304bb005bca95012c7b85563ee780dddef21e..a7ff31a9639fe68fdf2efdae7e308b54a1683a5d 100644 (file)
--- a/src/game/g_netmsg.pas
+++ b/src/game/g_netmsg.pas
-(* Copyright (C) DooM 2D:Forever Developers
+(* Copyright (C) Doom 2D: Forever Developers
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
g_Console_Add(Format(_lc[I_PLAYER_JOIN], [PName]), True);
e_WriteLog('NET: Client ' + PName + ' [' + IntToStr(C^.ID) +
- '] connected. Assigned player #' + IntToStr(PID) + '.', MSG_NOTIFY);
+ '] connected. Assigned player #' + IntToStr(PID) + '.', TMsgType.Notify);
MH_SEND_Info(C^.ID);
@@ -644,7 +644,7 @@ procedure MH_SEND_Everything(CreatePlayers: Boolean = False; ID: Integer = NET_E
begin
result := false; // don't stop
MH_SEND_PanelState(pan.guid, ID); // anyway, to sync mplats
- if (pan.GetTextureCount > 1) then MH_SEND_PanelTexture(pan.guid, pan.LastAnimLoop, ID);
+ if (pan.CanChangeTexture) then MH_SEND_PanelTexture(pan.guid, pan.LastAnimLoop, ID);
end;
var
if Mode = NET_CHAT_PLAYER then
begin
g_Console_Add(Txt, True);
- e_WriteLog('[Chat] ' + b_Text_Unformat(Txt), MSG_NOTIFY);
- g_Sound_PlayEx('SOUND_GAME_RADIO');
+ e_WriteLog('[Chat] ' + b_Text_Unformat(Txt), TMsgType.Notify);
+ g_Game_ChatSound(b_Text_Unformat(Txt));
end
else
if Mode = NET_CHAT_TEAM then
if (gPlayer1.Team = TEAM_RED) and (Team = TEAM_RED) then
begin
g_Console_Add(#18'[Team] '#2 + Txt, True);
- e_WriteLog('[Team Chat] ' + b_Text_Unformat(Txt), MSG_NOTIFY);
- g_Sound_PlayEx('SOUND_GAME_RADIO');
+ e_WriteLog('[Team Chat] ' + b_Text_Unformat(Txt), TMsgType.Notify);
+ g_Game_ChatSound(b_Text_Unformat(Txt));
end
else if (gPlayer1.Team = TEAM_BLUE) and (Team = TEAM_BLUE) then
begin
g_Console_Add(#20'[Team] '#2 + Txt, True);
- e_WriteLog('[Team Chat] ' + b_Text_Unformat(Txt), MSG_NOTIFY);
- g_Sound_PlayEx('SOUND_GAME_RADIO');
+ e_WriteLog('[Team Chat] ' + b_Text_Unformat(Txt), TMsgType.Notify);
+ g_Game_ChatSound(b_Text_Unformat(Txt));
end;
end;
end
begin
Name := g_Net_ClientName_ByID(ID);
g_Console_Add('-> ' + Name + ': ' + Txt, True);
- e_WriteLog('[Tell ' + Name + '] ' + b_Text_Unformat(Txt), MSG_NOTIFY);
- g_Sound_PlayEx('SOUND_GAME_RADIO');
+ e_WriteLog('[Tell ' + Name + '] ' + b_Text_Unformat(Txt), TMsgType.Notify);
+ g_Game_ChatSound(b_Text_Unformat(Txt), False);
end;
end;
end;
NetOut.Write(kByte);
- if Direction = D_LEFT then NetOut.Write(Byte(0)) else NetOut.Write(Byte(1));
+ if Direction = TDirection.D_LEFT then NetOut.Write(Byte(0)) else NetOut.Write(Byte(1));
NetOut.Write(GameX);
NetOut.Write(GameY);
NetOut.Write(GameVelX);
procedure MH_SEND_ItemSpawn(Quiet: Boolean; IID: Word; ID: Integer = NET_EVERYONE);
var
it: PItem;
+ tt: Byte;
begin
it := g_Items_ByIdx(IID);
NetOut.Write(Byte(NET_MSG_ISPAWN));
NetOut.Write(IID);
NetOut.Write(Byte(Quiet));
- NetOut.Write(it.ItemType);
+ tt := it.ItemType;
+ if it.dropped then tt := tt or $80;
+ NetOut.Write(tt);
NetOut.Write(Byte(it.Fall));
NetOut.Write(Byte(it.Respawnable));
NetOut.Write(it.Obj.X);
if Mode = NET_CHAT_PLAYER then
begin
g_Console_Add(Txt, True);
- e_WriteLog('[Chat] ' + b_Text_Unformat(Txt), MSG_NOTIFY);
- g_Sound_PlayEx('SOUND_GAME_RADIO');
+ e_WriteLog('[Chat] ' + b_Text_Unformat(Txt), TMsgType.Notify);
+ g_Game_ChatSound(b_Text_Unformat(Txt));
end else
if (Mode = NET_CHAT_TEAM) and (gPlayer1 <> nil) then
begin
g_Console_Add(b_Text_Format('\r[Team] ') + Txt, True);
if gPlayer1.Team = TEAM_BLUE then
g_Console_Add(b_Text_Format('\b[Team] ') + Txt, True);
- e_WriteLog('[Team Chat] ' + b_Text_Unformat(Txt), MSG_NOTIFY);
- g_Sound_PlayEx('SOUND_GAME_RADIO');
+ e_WriteLog('[Team Chat] ' + b_Text_Unformat(Txt), TMsgType.Notify);
+ g_Game_ChatSound(b_Text_Unformat(Txt));
end;
end else
g_Console_Add(Txt, True);
end;
g_Console_Add(Format(_lc[I_PLAYER_JOIN], [PName]), True);
- e_WriteLog('NET: Player ' + PName + ' [' + IntToStr(PID) + '] added.', MSG_NOTIFY);
+ e_WriteLog('NET: Player ' + PName + ' [' + IntToStr(PID) + '] added.', TMsgType.Notify);
Result := PID;
end;
if Pl = nil then Exit;
g_Console_Add(Format(_lc[I_PLAYER_LEAVE], [Pl.Name]), True);
- e_WriteLog('NET: Player ' + Pl.Name + ' [' + IntToStr(PID) + '] removed.', MSG_NOTIFY);
+ e_WriteLog('NET: Player ' + Pl.Name + ' [' + IntToStr(PID) + '] removed.', TMsgType.Notify);
g_Player_Remove(PID);
VX := M.ReadLongInt();
VY := M.ReadLongInt();
- g_Items_Create(X, Y, T, Fall, False, False, ID);
+ g_Items_Create(X, Y, T and $7F, Fall, False, False, ID);
+ if ((T and $80) <> 0) then g_Items_SetDrop(ID);
it := g_Items_ByIdx(ID);
it.Obj.Vel.X := VX;
TP := g_Map_PanelByGUID(PGUID);
if (TP <> nil) then
begin
- if Loop = 0 then
- begin
- // switch texture
- TP.SetTexture(Tex, Loop);
- TP.SetFrame(Fr, Cnt);
- end
- else
- begin
- // looped or non-looped animation
- TP.NextTexture(Loop);
- end;
+ // switch texture
+ TP.SetTexture(Tex, Loop);
+ TP.SetFrame(Fr, Cnt);
end;
end;
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;
// new strafe mechanics
if (strafeDir = 0) then strafeDir := P1MoveButton; // start strafing
// now set direction according to strafe (reversed)
- if (strafeDir = 2) then gPlayer1.SetDirection(D_LEFT)
- else if (strafeDir = 1) then gPlayer1.SetDirection(D_RIGHT);
+ if (strafeDir = 2) then gPlayer1.SetDirection(TDirection.D_LEFT)
+ else if (strafeDir = 1) then gPlayer1.SetDirection(TDirection.D_RIGHT);
end
else
begin
- if (P1MoveButton = 2) and isKeyPressed(KeyLeft, KeyLeft2) then gPlayer1.SetDirection(D_LEFT)
- else if (P1MoveButton = 1) and isKeyPressed(KeyRight, KeyRight2) then gPlayer1.SetDirection(D_RIGHT)
+ if (P1MoveButton = 2) and isKeyPressed(KeyLeft, KeyLeft2) then gPlayer1.SetDirection(TDirection.D_LEFT)
+ else if (P1MoveButton = 1) and isKeyPressed(KeyRight, KeyRight2) then gPlayer1.SetDirection(TDirection.D_RIGHT)
else if P1MoveButton <> 0 then gPlayer1.SetDirection(TDirection(P1MoveButton-1));
end;
FileStream : TStream;
fname: string;
begin
- e_WriteLog(Format('NETWORK: looking for file "%s"', [FileName]), MSG_NOTIFY);
+ e_WriteLog(Format('NETWORK: looking for file "%s"', [FileName]), TMsgType.Notify);
fname := findDiskWad(FileName);
if length(fname) = 0 then
begin
- e_WriteLog(Format('NETWORK: file "%s" not found!', [FileName]), MSG_FATALERROR);
+ e_WriteLog(Format('NETWORK: file "%s" not found!', [FileName]), TMsgType.Fatal);
SetLength(Result, 0);
exit;
end;
- e_WriteLog(Format('NETWORK: found file "%s"', [fname]), MSG_NOTIFY);
+ e_WriteLog(Format('NETWORK: found file "%s"', [fname]), TMsgType.Notify);
Result := nil;
FileStream := openDiskFileRO(fname);
try
mapDataMsg: TMapDataMsg;
begin
e_WriteLog('NET: Received map request from ' +
- DecodeIPV4(C.Peer.address.host), MSG_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), MSG_NOTIFY);
+ ' from ' + DecodeIPV4(C^.Peer.address.host), TMsgType.Notify);
if not IsValidFilePath(FileName) then
begin
- e_WriteLog('Invalid filename: ' + FileName, MSG_WARNING);
+ e_WriteLog('Invalid filename: ' + FileName, TMsgType.Warning);
exit;
end;
- peer := NetClients[C.ID].Peer;
+ peer := NetClients[C^.ID].Peer;
if gExternalResources.IndexOf(FileName) > -1 then
begin