Merge branch 'master' of https://codefirst.iut.uca.fr/git/leap-hit-team/leap-hit-server
continuous-integration/drone/push Build is passing Details

master
Noan07 2 years ago
commit 44be783055

@ -49,7 +49,7 @@ public class PongServer
if (data.Informations.Action == Shared.DTO.Action.Join) if (data.Informations.Action == Shared.DTO.Action.Join)
{ {
var choisenRoom = rooms.FirstOrDefault(room => room.Key == data.Informations.IdRoom); var choisenRoom = rooms.FirstOrDefault(room => room.Key == data.Informations.IdRoom);
if(choisenRoom.Value != default && choisenRoom.Value.Availaible) if(choisenRoom.Value != default)
{ {
Join(data, remoteEndPoint, serverSocket, choisenRoom.Value); Join(data, remoteEndPoint, serverSocket, choisenRoom.Value);
} }

@ -9,6 +9,7 @@ using System.Threading.Tasks;
using Shared.DTO; using Shared.DTO;
using System.ComponentModel; using System.ComponentModel;
using System.Text.Json; using System.Text.Json;
using static System.Formats.Asn1.AsnWriter;
namespace Server namespace Server
{ {
@ -20,7 +21,7 @@ namespace Server
Id = id; Id = id;
Availaible = availaible; Availaible = availaible;
} }
Tuple<int, int> ScoreImp = new(0, 0);
public bool Availaible { get; set; } public bool Availaible { get; set; }
public event PropertyChangedEventHandler? PropertyChanged; public event PropertyChangedEventHandler? PropertyChanged;
@ -57,23 +58,39 @@ namespace Server
public void ReceiveMessages(UdpClient clientSocket1, UdpClient clientSocket2, IPEndPoint endpoint2, Semaphore semaphore) public void ReceiveMessages(UdpClient clientSocket1, UdpClient clientSocket2, IPEndPoint endpoint2, Semaphore semaphore,bool isHost)
{ {
IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
Thread secondsCount = new Thread(new ThreadStart(CountSeconds)); Thread secondsCount = new Thread(new ThreadStart(CountSeconds));
secondsCount.Start(); secondsCount.Start();
//while (secondsCount.ThreadState==ThreadState.Running ) //while (secondsCount.ThreadState==ThreadState.Running )
while (true) while (ScoreImp.Item1<6 && ScoreImp.Item2 < 6)
{ {
byte[] receivedData = clientSocket1.Receive(ref remoteEndPoint); byte[] receivedData = clientSocket1.Receive(ref remoteEndPoint);
if (isHost) {
string fileJson = Encoding.UTF8.GetString(receivedData);
try
{
ObjectTransfert<Tuple<GameEntities, Tuple<int, int>>> data = JsonSerializer.Deserialize<ObjectTransfert<Tuple<GameEntities, Tuple<int, int>>>>(fileJson);
ScoreImp = data.Data.Item2 != null ? data.Data.Item2 : ScoreImp;
}
catch (Exception ex) { }
Console.WriteLine("score 1 : " + ScoreImp.Item1 + " " + ScoreImp.Item2);
}
semaphore.WaitOne(); semaphore.WaitOne();
clientSocket2.Send(receivedData, receivedData.Length, endpoint2); clientSocket2.Send(receivedData, receivedData.Length, endpoint2);
semaphore.Release(); semaphore.Release();
} }
Availaible = true; Availaible = true;
Console.WriteLine("Game Finished Am i host " + isHost);
} }
static void CountSeconds() static void CountSeconds()
@ -110,12 +127,12 @@ namespace Server
Semaphore semaphore = new Semaphore(2, 2); Semaphore semaphore = new Semaphore(2, 2);
Thread receiveThread1 = new Thread(() => ReceiveMessages(playerHost.Value, playerJoin.Value, remoteEndPointJoin, semaphore)); Thread receiveThread1 = new Thread(() => ReceiveMessages(playerHost.Value, playerJoin.Value, remoteEndPointJoin, semaphore,true));
Thread receiveThread2 = new Thread(() => Thread receiveThread2 = new Thread(() =>
{ {
ReceiveMessages(playerJoin.Value, playerHost.Value, remoteEndPointHost, semaphore); ReceiveMessages(playerJoin.Value, playerHost.Value, remoteEndPointHost, semaphore,false);
}); });
receiveThread1.Start(); receiveThread1.Start();
receiveThread2.Start(); receiveThread2.Start();

@ -15,6 +15,7 @@ namespace Shared.DTO
SendPlayer, SendPlayer,
RecivePlayer, RecivePlayer,
SendEntities SendEntities,
SendScore
} }
} }

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shared.DTO
{
public class GameEntities
{
public Tuple<float, float> Ball { get; set; }
public float Paddle { get; set; }
public GameEntities(Tuple<float, float> ball, float paddle)
{
Ball = ball;
Paddle = paddle;
}
}
}
Loading…
Cancel
Save