first push
continuous-integration/drone/push Build is passing Details

lastBranch
Rami KHEDAIR 2 years ago
parent 94d79627be
commit 9ed29c5f21

@ -62,17 +62,16 @@ public class PongServer
Console.WriteLine("Connection " + choisenRoom.Key);
if (choisenRoom.Value != default )
{
Thread join = new Thread(() => Join(data, remoteEndPoint, serverSocket, choisenRoom.Value));
join.Start();
Join(data, remoteEndPoint, serverSocket, choisenRoom.Value);
}
else
{
Thread host = new Thread(() => Host(data, remoteEndPoint, serverSocket, true));
host.Start();
Host(data, remoteEndPoint, serverSocket, true);
}
}
Console.WriteLine("");
}
@ -80,11 +79,22 @@ public class PongServer
private void Host(ObjectTransfert<Player> data, IPEndPoint remoteEndPoint, UdpClient serverSocket, bool availaible)
{
var choisenRoom = rooms.FirstOrDefault(room => room.Value.Free);
var chosenPort = nextPort;
if (choisenRoom.Value != default)
{
chosenPort= choisenRoom.Value.Port;
choisenRoom.Value.playerHost.Value.Close();
choisenRoom.Value.playerJoin.Value.Close();
rooms.Remove(choisenRoom.Key);
choisenRoom = default;
}
Room room = new Room(data.Data.playerId, availaible);
// Assign a unique port to the client
IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, nextPort);
IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, chosenPort);
UdpClient clientSocket = new UdpClient(clientEndPoint);
room.playerHost = new KeyValuePair<Player,UdpClient>(data.Data,clientSocket);
@ -95,8 +105,12 @@ public class PongServer
Console.WriteLine("New connection Host From " + remoteEndPoint.ToString());
room.Port = nextPort;
nextPort++;
room.Port = chosenPort;
if(chosenPort==nextPort)
{
nextPort++;
}
Tuple<int, bool> dataToSend = new Tuple<int, bool>(room.Port, true);
@ -107,7 +121,7 @@ public class PongServer
serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint);
rooms[data.Data.playerId] = room;
room.PropertyChanged += room.OnReadyChanged;
Console.WriteLine("FIN HOST...............");

@ -24,6 +24,8 @@ namespace Server
Tuple<int, int> ScoreImp = new(0, 0);
public bool Availaible { get; set; }
public bool Free { get; set; }=false;
public event PropertyChangedEventHandler? PropertyChanged;
public string Id { get; set; }
@ -86,7 +88,13 @@ namespace Server
clientSocket2.Send(receivedData, receivedData.Length, endpoint2);
semaphore.Release();
}
Availaible = true;
Free = true;
/* playerHost = default;
playerJoin = default;
gameRunning = true;
ScoreImp = new(0, 0);*/
Console.WriteLine("Game Finished Am i host " + isHost);
}
@ -102,10 +110,10 @@ namespace Server
gameRunning = false;
}
public void OnReadyChanged(object sender, PropertyChangedEventArgs e)
async public void OnReadyChanged(object sender, PropertyChangedEventArgs e)
{
/*Thread principal = new Thread(() =>
{*/
await Task.Run(() =>
{
Room room = sender as Room;
int maxPlayer = room.nbPlayer;
@ -141,8 +149,8 @@ namespace Server
receiveThread2.Join();
}
/*});
principal.Start();*/
});
}

Loading…
Cancel
Save