Skip to content
This repository was archived by the owner on Sep 15, 2024. It is now read-only.

Commit e1dc696

Browse files
PlayerPosition packet
1 parent 93101a3 commit e1dc696

7 files changed

Lines changed: 50 additions & 11 deletions

File tree

Scripts/Netcode/Client/ENetClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,10 @@ private async Task ENetThreadWorker(string ip, ushort port)
9191
while (Outgoing.TryRemove(OutgoingId, out ClientPacket clientPacket))
9292
{
9393
OutgoingId--;
94-
//Log("Sent packet: " + (ClientPacketOpcode)clientPacket.Opcode);
9594
byte channelID = 0; // The channel all networking traffic will be going through
9695
var packet = default(Packet);
9796
packet.Create(clientPacket.Data, clientPacket.PacketFlags);
97+
//Log("Sent packet: " + (ClientPacketOpcode)clientPacket.Opcode);
9898
peer.Send(channelID, ref packet);
9999
}
100100

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using Godot;
2+
using GodotModules.Netcode.Server;
3+
using System;
4+
5+
namespace GodotModules.Netcode
6+
{
7+
public class CPacketPlayerPosition : APacketClient
8+
{
9+
public Vector2 Position { get; set; }
10+
11+
public override void Write(PacketWriter writer)
12+
{
13+
writer.Write((float)Math.Round(Position.x, 1));
14+
writer.Write((float)Math.Round(Position.y, 1));
15+
}
16+
17+
public override void Read(PacketReader reader)
18+
{
19+
var pos = new Vector2();
20+
pos.x = reader.ReadFloat();
21+
pos.y = reader.ReadFloat();
22+
}
23+
24+
public override void Handle(ENet.Peer peer)
25+
{
26+
GameServer.Players[peer.ID].Position = Position;
27+
}
28+
}
29+
}

Scripts/Netcode/Common/_Opcodes.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ public enum ClientPacketOpcode
88
LobbyChatMessage,
99
LobbyReady,
1010
LobbyCountdownChange,
11-
LobbyGameStart
11+
LobbyGameStart,
12+
PlayerPosition
1213
}
1314

1415
// Sent to Game Client

Scripts/Netcode/Server/ENetServer.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,12 @@ public async Task ENetThreadWorker(ushort port, int maxClients)
123123

124124
//Log($"Received packet: {opcode}");
125125

126+
if (!HandlePacket.ContainsKey(opcode))
127+
{
128+
Utils.LogErr($"[Server]: Received malformed opcode: {opcode} (Ignoring)");
129+
break;
130+
}
131+
126132
var handlePacket = HandlePacket[opcode];
127133
handlePacket.Read(packetReader);
128134
handlePacket.Handle(netEvent.Peer);

Scripts/Netcode/Server/GameServer.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@ public GameServer()
2626

2727
public void EmitClientPositionsCallback(System.Object source, ElapsedEventArgs args)
2828
{
29-
var playerPositions = Players.ToDictionary(x => x.Key, x => x.Value.Position);
30-
31-
SendToAllPlayers(ServerPacketOpcode.PlayerPositions, new SPacketPlayerPositions {
32-
PlayerPositions = playerPositions
33-
}, PacketFlags.Reliable);
29+
foreach (var pair in Players)
30+
{
31+
Send(ServerPacketOpcode.PlayerPositions, new SPacketPlayerPositions {
32+
PlayerPositions = Players.Where(x => x.Key != pair.Key).ToDictionary(x => x.Key, x => x.Value.Position)
33+
}, Peers[pair.Key]);
34+
}
3435
}
3536

3637
protected override void Connect(Event netEvent)

Scripts/Scenes/Game/ClientPlayer.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class ClientPlayer : OtherPlayer
1616
private Label LabelPosition { get; set; }
1717

1818
private float Speed = 250f;
19-
private Timer EmitPosition { get; set; }
19+
private static Timer EmitPosition { get; set; }
2020

2121
public override void _Ready()
2222
{
@@ -35,7 +35,9 @@ public override void _Ready()
3535

3636
public async void EmitPositionCallback(System.Object source, ElapsedEventArgs args)
3737
{
38-
38+
await GameClient.Send(ClientPacketOpcode.PlayerPosition, new CPacketPlayerPosition {
39+
Position = Position
40+
});
3941
}
4042

4143
public override void _PhysicsProcess(float delta)

Scripts/Scenes/Main/NetworkManager.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ public override void _Process(float delta)
3737
var packetReader = (PacketReader)cmd.Data;
3838
var opcode = (ServerPacketOpcode)packetReader.ReadByte();
3939

40-
//Utils.Log($"[Client]: Received {opcode}");
40+
Utils.Log($"[Client]: Received {opcode}");
4141

4242
if (!ENetClient.HandlePacket.ContainsKey(opcode))
4343
{
44-
Utils.LogErr($"Received malformed opcode: {opcode} (Ignoring)");
44+
Utils.LogErr($"[Client]: Received malformed opcode: {opcode} (Ignoring)");
4545
break;
4646
}
4747

0 commit comments

Comments
 (0)