X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_netmsg.pas;h=775a7ae0c06afeb392244540d9917605fb199097;hb=55f201758f237cac6c889e98572e6eda7c4067fc;hp=92084b1304662060019422a77096ad59f138a132;hpb=dffafd305d0df029f317cc92c1968ba0065c0cd8;p=d2df-sdl.git diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas index 92084b1..775a7ae 100644 --- a/src/game/g_netmsg.pas +++ b/src/game/g_netmsg.pas @@ -275,11 +275,21 @@ function IsValidFilePath(const S: String): Boolean; implementation -uses - Math, ENet, e_input, e_graphics, e_log, - g_textures, g_gfx, g_sound, g_console, g_basic, g_options, g_main, - g_game, g_player, g_map, g_panel, g_items, g_weapons, g_phys, g_gui, - g_language, g_monsters, g_netmaster, utils, wadreader, MAPDEF; + uses + {$IFDEF ENABLE_MENU} + g_gui, + {$ENDIF} + {$IFDEF ENABLE_GFX} + g_gfx, + {$ENDIF} + {$IFDEF ENABLE_SHELLS} + g_shells, + {$ENDIF} + Math, ENet, e_input, e_log, g_base, g_basic, + g_textures, g_sound, g_console, g_options, + g_game, g_player, g_map, g_panel, g_items, g_weapons, g_phys, + g_language, g_monsters, g_netmaster, utils, wadreader, MAPDEF + ; const NET_KEY_LEFT = 1; @@ -650,7 +660,7 @@ begin Pl.Name := TmpName; end; - if TmpModel <> Pl.Model.Name then + if TmpModel <> Pl.Model.GetName() then Pl.SetModel(TmpModel); MH_SEND_PlayerSettings(Pl.UID, TmpModel); @@ -1110,9 +1120,10 @@ begin if IsKeyPressed(KEY_UP) then kByte := kByte or NET_KEY_UP; if IsKeyPressed(KEY_DOWN) then kByte := kByte or NET_KEY_DOWN; if IsKeyPressed(KEY_JUMP) then kByte := kByte or NET_KEY_JUMP; - if JustTeleported then kByte := kByte or NET_KEY_FORCEDIR; end; + if JustTeleported then kByte := kByte or NET_KEY_FORCEDIR; + NetOut.Write(kByte); if Direction = TDirection.D_LEFT then NetOut.Write(Byte(0)) else NetOut.Write(Byte(1)); NetOut.Write(GameX); @@ -1241,7 +1252,7 @@ begin NetOut.Write(PID); NetOut.Write(Pl.Name); if Mdl = '' then - NetOut.Write(Pl.Model.Name) + NetOut.Write(Pl.Model.GetName()) else NetOut.Write(Mdl); NetOut.Write(Pl.FColor.R); @@ -1515,22 +1526,25 @@ begin if Mode <> NET_CHAT_SYSTEM then begin - if Mode = NET_CHAT_PLAYER then + if NetDeafLevel = 0 then begin - g_Console_Add(Txt, True); - 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 - if gPlayer1.Team = TEAM_RED then - 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), TMsgType.Notify); - g_Game_ChatSound(b_Text_Unformat(Txt)); + if Mode = NET_CHAT_PLAYER then + begin + g_Console_Add(Txt, True); + 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 + if gPlayer1.Team = TEAM_RED then + 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), TMsgType.Notify); + g_Game_ChatSound(b_Text_Unformat(Txt)); + end; end; - end else + end else if (NetDeafLevel < 2) then g_Console_Add(Txt, True); end; @@ -1539,8 +1553,6 @@ var Kind: Byte; X, Y: Integer; Ang: SmallInt; - Anim: TAnimation; - ID: LongWord; begin if not gGameOn then Exit; Kind := M.ReadByte(); @@ -1550,90 +1562,75 @@ begin case Kind of NET_GFX_SPARK: - g_GFX_Spark(X, Y, 2 + Random(2), Ang, 0, 0); - + begin + {$IFDEF ENABLE_GFX} + g_GFX_Spark(X, Y, 2 + Random(2), Ang, 0, 0); + {$ENDIF} + end; NET_GFX_TELE: begin - if g_Frames_Get(ID, 'FRAMES_TELEPORT') then - begin - Anim := TAnimation.Create(ID, False, 3); - g_GFX_OnceAnim(X, Y, Anim); - Anim.Free(); - end; + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_TELEPORT_FAST, X, Y); + {$ENDIF} if Ang = 1 then g_Sound_PlayExAt('SOUND_GAME_TELEPORT', X, Y); end; - NET_GFX_EXPLODE: begin - if g_Frames_Get(ID, 'FRAMES_EXPLODE_ROCKET') then - begin - Anim := TAnimation.Create(ID, False, 6); - Anim.Blending := False; - g_GFX_OnceAnim(X-64, Y-64, Anim); - Anim.Free(); - end; + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_EXPLODE_ROCKET, X - 64, Y - 64); + {$ENDIF} if Ang = 1 then g_Sound_PlayExAt('SOUND_WEAPON_EXPLODEROCKET', X, Y); end; - NET_GFX_BFGEXPL: begin - if g_Frames_Get(ID, 'FRAMES_EXPLODE_BFG') then - begin - Anim := TAnimation.Create(ID, False, 6); - Anim.Blending := False; - g_GFX_OnceAnim(X-64, Y-64, Anim); - Anim.Free(); - end; + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_EXPLODE_BFG, X - 64, Y - 64); + {$ENDIF} if Ang = 1 then g_Sound_PlayExAt('SOUND_WEAPON_EXPLODEBFG', X, Y); end; - NET_GFX_BFGHIT: begin - if g_Frames_Get(ID, 'FRAMES_BFGHIT') then - begin - Anim := TAnimation.Create(ID, False, 4); - g_GFX_OnceAnim(X-32, Y-32, Anim); - Anim.Free(); - end; + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_BFG_HIT, X - 32, Y - 32); + {$ENDIF} end; - NET_GFX_FIRE: begin - if g_Frames_Get(ID, 'FRAMES_FIRE') then - begin - Anim := TAnimation.Create(ID, False, 4); - g_GFX_OnceAnim(X, Y, Anim); - Anim.Free(); - end; + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_FIRE, X, Y); + {$ENDIF} if Ang = 1 then g_Sound_PlayExAt('SOUND_FIRE', X, Y); end; - NET_GFX_RESPAWN: begin - if g_Frames_Get(ID, 'FRAMES_ITEM_RESPAWN') then - begin - Anim := TAnimation.Create(ID, False, 4); - g_GFX_OnceAnim(X, Y, Anim); - Anim.Free(); - end; + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_ITEM_RESPAWN, X, Y); + {$ENDIF} if Ang = 1 then g_Sound_PlayExAt('SOUND_ITEM_RESPAWNITEM', X, Y); end; - NET_GFX_SHELL1: - g_Player_CreateShell(X, Y, 0, -2, SHELL_BULLET); - + begin + {$IFDEF ENABLE_SHELLS} + g_Shells_Create(X, Y, 0, -2, SHELL_BULLET); + {$ENDIF} + end; NET_GFX_SHELL2: - g_Player_CreateShell(X, Y, 0, -2, SHELL_SHELL); - + begin + {$IFDEF ENABLE_SHELLS} + g_Shells_Create(X, Y, 0, -2, SHELL_SHELL); + {$ENDIF} + end; NET_GFX_SHELL3: begin - g_Player_CreateShell(X, Y, 0, -2, SHELL_SHELL); - g_Player_CreateShell(X, Y, 0, -2, SHELL_SHELL); + {$IFDEF ENABLE_SHELLS} + g_Shells_Create(X, Y, 0, -2, SHELL_SHELL); + g_Shells_Create(X, Y, 0, -2, SHELL_SHELL); + {$ENDIF} end; end; end; @@ -1841,10 +1838,13 @@ begin NET_EV_CHANGE_TEAM: begin - if EvNum = TEAM_RED then - g_Console_Add(Format(_lc[I_PLAYER_CHTEAM_RED], [EvStr]), True); - if EvNum = TEAM_BLUE then - g_Console_Add(Format(_lc[I_PLAYER_CHTEAM_BLUE], [EvStr]), True); + if NetDeafLevel < 2 then + begin + if EvNum = TEAM_RED then + g_Console_Add(Format(_lc[I_PLAYER_CHTEAM_RED], [EvStr]), True); + if EvNum = TEAM_BLUE then + g_Console_Add(Format(_lc[I_PLAYER_CHTEAM_BLUE], [EvStr]), True); + end; end; NET_EV_PLAYER_KICK: @@ -1877,7 +1877,7 @@ begin g_Console_Add('*** ' + _lc[I_MESSAGE_LMS_SURVIVOR] + ' ***', True); NET_EV_BIGTEXT: - g_Game_Message(AnsiUpperCase(EvStr), Word(EvNum)); + if NetDeafLevel < 2 then g_Game_Message(AnsiUpperCase(EvStr), Word(EvNum)); NET_EV_SCORE: begin @@ -2221,7 +2221,8 @@ begin end; end; - g_Console_Add(Format(_lc[I_PLAYER_JOIN], [PName]), True); + if NetDeafLevel < 3 then + g_Console_Add(Format(_lc[I_PLAYER_JOIN], [PName]), True); e_WriteLog('NET: Player ' + PName + ' [' + IntToStr(PID) + '] added.', TMsgType.Notify); Result := PID; end; @@ -2264,7 +2265,7 @@ begin ReleaseKeys; - if (kByte = NET_KEY_CHAT) then + if LongBool(kByte and NET_KEY_CHAT) then PressKey(KEY_CHAT, 10000) else begin @@ -2275,15 +2276,16 @@ begin if LongBool(kByte and NET_KEY_JUMP) then PressKey(KEY_JUMP, 10000); end; - if ((Pl <> gPlayer1) and (Pl <> gPlayer2)) or LongBool(kByte and NET_KEY_FORCEDIR) then + JustTeleported := LongBool(kByte and NET_KEY_FORCEDIR); + + if ((Pl <> gPlayer1) and (Pl <> gPlayer2)) or JustTeleported then SetDirection(TDirection(Dir)); GameVelX := M.ReadLongInt(); GameVelY := M.ReadLongInt(); GameAccelX := M.ReadLongInt(); GameAccelY := M.ReadLongInt(); - GameX := TmpX; - GameY := TmpY; + SetLerp(TmpX, TmpY); if NetForcePlayerUpdate then Update(); end; end; @@ -2453,7 +2455,8 @@ begin Result := 0; if Pl = nil then Exit; - g_Console_Add(Format(_lc[I_PLAYER_LEAVE], [Pl.Name]), True); + if NetDeafLevel < 3 then + g_Console_Add(Format(_lc[I_PLAYER_LEAVE], [Pl.Name]), True); e_WriteLog('NET: Player ' + Pl.Name + ' [' + IntToStr(PID) + '] removed.', TMsgType.Notify); g_Player_Remove(PID); @@ -2518,11 +2521,12 @@ begin if Pl.Name <> TmpName then begin - g_Console_Add(Format(_lc[I_PLAYER_NAME], [Pl.Name, TmpName]), True); + if NetDeafLevel < 3 then + g_Console_Add(Format(_lc[I_PLAYER_NAME], [Pl.Name, TmpName]), True); Pl.Name := TmpName; end; - if TmpModel <> Pl.Model.Name then + if TmpModel <> Pl.Model.GetName() then Pl.SetModel(TmpModel); end; @@ -2531,11 +2535,9 @@ end; procedure MC_RECV_ItemSpawn(var M: TMsg); var ID: Word; - AID: DWord; X, Y, VX, VY: Integer; T: Byte; Quiet, Fall{, Resp}: Boolean; - Anim: TAnimation; it: PItem; begin if not gGameOn then Exit; @@ -2559,12 +2561,9 @@ begin if not Quiet then begin g_Sound_PlayExAt('SOUND_ITEM_RESPAWNITEM', X, Y); - if g_Frames_Get(AID, 'FRAMES_ITEM_RESPAWN') then - begin - Anim := TAnimation.Create(AID, False, 4); - g_GFX_OnceAnim(X+(it.Obj.Rect.Width div 2)-16, Y+(it.Obj.Rect.Height div 2)-16, Anim); - Anim.Free(); - end; + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_ITEM_RESPAWN, X+(it.Obj.Rect.Width div 2)-16, Y+(it.Obj.Rect.Height div 2)-16); + {$ENDIF} end; end; @@ -2912,18 +2911,19 @@ begin Str1 := M.ReadString(); Str2 := M.ReadString(); - case EvID of - NET_VE_STARTED: - g_Console_Add(Format(_lc[I_MESSAGE_VOTE_STARTED], [Str1, Str2, Int1]), True); - NET_VE_PASSED: - g_Console_Add(Format(_lc[I_MESSAGE_VOTE_PASSED], [Str1]), True); - NET_VE_FAILED: - g_Console_Add(_lc[I_MESSAGE_VOTE_FAILED], True); - NET_VE_VOTE: - g_Console_Add(Format(_lc[I_MESSAGE_VOTE_VOTE], [Str1, Int1, Int2]), True); - NET_VE_INPROGRESS: - g_Console_Add(Format(_lc[I_MESSAGE_VOTE_INPROGRESS], [Str1]), True); - end; + if NetDeafLevel < 2 then + case EvID of + NET_VE_STARTED: + g_Console_Add(Format(_lc[I_MESSAGE_VOTE_STARTED], [Str1, Str2, Int1]), True); + NET_VE_PASSED: + g_Console_Add(Format(_lc[I_MESSAGE_VOTE_PASSED], [Str1]), True); + NET_VE_FAILED: + g_Console_Add(_lc[I_MESSAGE_VOTE_FAILED], True); + NET_VE_VOTE: + g_Console_Add(Format(_lc[I_MESSAGE_VOTE_VOTE], [Str1, Int1, Int2]), True); + NET_VE_INPROGRESS: + g_Console_Add(Format(_lc[I_MESSAGE_VOTE_INPROGRESS], [Str1]), True); + end; end; // CLIENT SEND @@ -2969,7 +2969,11 @@ begin kByte := 0; Predict := NetPredictSelf; // and (not NetGotKeys); +{$IFDEF DISABLE_MENU} + if (not gConsoleShow) and (not gChatShow) then +{$ELSE} if (not gConsoleShow) and (not gChatShow) and (g_ActiveWindow = nil) then +{$ENDIF} begin strafeDir := P1MoveButton shr 4; P1MoveButton := P1MoveButton and $0F;