diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas
index 4c67d12504ef9f21e14efae0f5afffa3d7840049..fb32fa2b4f40361aa7b52809167cdb2c83c3487a 100644 (file)
--- a/src/game/g_netmsg.pas
+++ b/src/game/g_netmsg.pas
implementation
uses
- Math, ENet, e_input, e_graphics, e_log,
- g_textures, g_gfx, g_sound, g_console, g_basic, g_options, g_main,
+ Math, ENet, e_input, e_log, g_base, g_basic, r_animations, r_gfx,
+ g_textures, g_gfx, g_sound, g_console, g_options,
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;
begin
g_Console_Add(_lc[I_NET_MSG] + _lc[I_NET_MSG_HOST_REJECT] +
_lc[I_NET_DISC_PROTOCOL]);
- enet_peer_disconnect(C^.Peer, NET_DISC_PROTOCOL);
+ g_Net_Host_Kick(C^.ID, NET_DISC_PROTOCOL);
end;
procedure MH_RECV_Chat(C: pTNetClient; var M: TMsg);
begin
g_Console_Add(_lc[I_NET_MSG] + _lc[I_NET_MSG_HOST_REJECT] +
_lc[I_NET_DISC_VERSION]);
- enet_peer_disconnect(C^.Peer, NET_DISC_VERSION);
+ g_Net_Host_Kick(C^.ID, NET_DISC_VERSION);
Exit;
end;
begin
g_Console_Add(_lc[I_NET_MSG] + _lc[I_NET_MSG_HOST_REJECT] +
_lc[I_NET_DISC_BAN]);
- enet_peer_disconnect(C^.Peer, NET_DISC_BAN);
+ g_Net_Host_Kick(C^.ID, NET_DISC_BAN);
end
else
begin
g_Console_Add(_lc[I_NET_MSG] + _lc[I_NET_MSG_HOST_REJECT] +
_lc[I_NET_DISC_BAN]);
- enet_peer_disconnect(C^.Peer, NET_DISC_TEMPBAN);
+ g_Net_Host_Kick(C^.ID, NET_DISC_TEMPBAN);
end;
Exit;
end;
begin
g_Console_Add(_lc[I_NET_MSG] + _lc[I_NET_MSG_HOST_REJECT] +
_lc[I_NET_DISC_PASSWORD]);
- enet_peer_disconnect(C^.Peer, NET_DISC_PASSWORD);
+ g_Net_Host_Kick(C^.ID, NET_DISC_PASSWORD);
Exit;
end;
SetWeaponPrefs(TmpPrefArray);
SwitchToEmpty := SwitchEmpty;
SkipFist := SkipF;
+ if (g_Force_Model_Get() <> 0) then
+ SetModel(g_Forced_Model_GetName());
Reset(True);
end;
Pl.Name := TmpName;
end;
- if TmpModel <> Pl.Model.Name then
+ if (g_Force_Model_Get() <> 0) then
+ TmpModel := g_Forced_Model_GetName();
+ if TmpModel <> Pl.Model.GetName() then
Pl.SetModel(TmpModel);
if (TmpWeapSwitch <> Pl.WeapSwitchMode) then
NetOut.Write(g_ExtractFileName(gMapInfo.Map));
NetOut.Write(gWADHash);
NetOut.Write(gGameSettings.GameMode);
- NetOut.Write(gGameSettings.GoalLimit);
+ NetOut.Write(gGameSettings.ScoreLimit);
NetOut.Write(gGameSettings.TimeLimit);
NetOut.Write(gGameSettings.MaxLives);
NetOut.Write(gGameSettings.Options);
NetOut.Write(Byte(NET_MSG_SCORE));
if gGameSettings.GameMode in [GM_TDM, GM_CTF] then
begin
- NetOut.Write(gTeamStat[TEAM_RED].Goals);
- NetOut.Write(gTeamStat[TEAM_BLUE].Goals);
+ NetOut.Write(gTeamStat[TEAM_RED].Score);
+ NetOut.Write(gTeamStat[TEAM_BLUE].Score);
end
else
if gGameSettings.GameMode = GM_COOP then
begin
NetOut.Write(Byte(NET_MSG_GSET));
NetOut.Write(gGameSettings.GameMode);
- NetOut.Write(gGameSettings.GoalLimit);
+ NetOut.Write(gGameSettings.ScoreLimit);
NetOut.Write(gGameSettings.TimeLimit);
NetOut.Write(gGameSettings.MaxLives);
NetOut.Write(gGameSettings.Options);
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);
Kind: Byte;
X, Y: Integer;
Ang: SmallInt;
- Anim: TAnimation;
- ID: LongWord;
begin
if not gGameOn then Exit;
Kind := M.ReadByte();
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;
+ r_GFX_OnceAnim(R_GFX_TELEPORT_FAST, X, Y);
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;
+ r_GFX_OnceAnim(R_GFX_EXPLODE_ROCKET, X - 64, Y - 64);
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;
+ r_GFX_OnceAnim(R_GFX_EXPLODE_BFG, X - 64, Y - 64);
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;
+ r_GFX_OnceAnim(R_GFX_BFG_HIT, X - 32, Y - 32);
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;
+ r_GFX_OnceAnim(R_GFX_FIRE, X, Y);
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;
+ r_GFX_OnceAnim(R_GFX_ITEM_RESPAWN, X, Y);
if Ang = 1 then
g_Sound_PlayExAt('SOUND_ITEM_RESPAWNITEM', X, Y);
end;
begin
if gGameSettings.GameMode in [GM_TDM, GM_CTF] then
begin
- gTeamStat[TEAM_RED].Goals := M.ReadSmallInt();
- gTeamStat[TEAM_BLUE].Goals := M.ReadSmallInt();
+ gTeamStat[TEAM_RED].Score := M.ReadSmallInt();
+ gTeamStat[TEAM_BLUE].Score := M.ReadSmallInt();
end
else
if gGameSettings.GameMode = GM_COOP then
procedure MC_RECV_GameSettings(var M: TMsg);
begin
gGameSettings.GameMode := M.ReadByte();
- gGameSettings.GoalLimit := M.ReadWord();
+ gGameSettings.ScoreLimit := M.ReadWord();
gGameSettings.TimeLimit := M.ReadWord();
gGameSettings.MaxLives := M.ReadByte();
gGameSettings.Options := M.ReadLongWord();
if (PID <> NetPlrUID1) and (PID <> NetPlrUID2) then
begin
if (Pl <> nil) then Exit;
+ if (g_Force_Model_Get() <> 0) then
+ Model := g_Forced_Model_GetName();
DID := g_Player_Create(Model, Color, T, False);
with g_Player_Get(DID) do
begin
var
TmpName: string;
TmpModel: string;
+ CheckModel: string;
TmpColor: TRGB;
TmpTeam: Byte;
Pl: TPlayer;
Pl.Name := TmpName;
end;
- if TmpModel <> Pl.Model.Name then
+ if (g_Force_Model_Get() <> 0) then
+ TmpModel := g_Forced_Model_GetName();
+ if TmpModel <> Pl.Model.GetName() then
Pl.SetModel(TmpModel);
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;
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;
+ r_GFX_OnceAnim(R_GFX_ITEM_RESPAWN, X+(it.Obj.Rect.Width div 2)-16, Y+(it.Obj.Rect.Height div 2)-16);
end;
end;