[FIX] fixed the broadcast for the chat messages.

This commit is contained in:
Dogukan
2020-10-21 22:40:36 +02:00
parent 0f01354b72
commit d5d6d59690
3 changed files with 25 additions and 8 deletions

View File

@@ -24,6 +24,7 @@ namespace Client
public Callback OnLobbyJoinSuccess; public Callback OnLobbyJoinSuccess;
public Callback OnLobbiesReceivedAndWaitingForHost; public Callback OnLobbiesReceivedAndWaitingForHost;
public OnLobbyCreated OnLobbyCreated; public OnLobbyCreated OnLobbyCreated;
private ClientData data = ClientData.Instance;
public Lobby[] Lobbies { get; set; } public Lobby[] Lobbies { get; set; }
public Client(string username) public Client(string username)
@@ -81,6 +82,7 @@ namespace Client
byte[] payload = new byte[message.Length - 5]; byte[] payload = new byte[message.Length - 5];
Array.Copy(message, 5, payload, 0, message.Length - 5); Array.Copy(message, 5, payload, 0, message.Length - 5);
Debug.WriteLine("[CLIENT] GOT STRING" + Encoding.ASCII.GetString(payload));
switch (id) switch (id)
{ {
case JSONConvert.LOGIN: case JSONConvert.LOGIN:
@@ -92,6 +94,11 @@ namespace Client
string textUsername = combo.Item1; string textUsername = combo.Item1;
string textMsg = combo.Item2; string textMsg = combo.Item2;
if(textUsername != data.User.Username)
{
ViewModels.ViewModelGame.HandleIncomingMsg(textUsername, textMsg);
}
//TODO display username and message in chat window //TODO display username and message in chat window
Debug.WriteLine("[CLIENT] INCOMING MESSAGE!"); Debug.WriteLine("[CLIENT] INCOMING MESSAGE!");
Debug.WriteLine("[CLIENT] User name: {0}\t User message: {1}", textUsername, textMsg); Debug.WriteLine("[CLIENT] User name: {0}\t User message: {1}", textUsername, textMsg);

View File

@@ -20,13 +20,13 @@ namespace Client.ViewModels
private Point currentPoint = new Point(); private Point currentPoint = new Point();
private Color color; private Color color;
public ObservableCollection<string> Messages { get; } = new ObservableCollection<string>(); public static ObservableCollection<string> Messages { get; } = new ObservableCollection<string>();
private dynamic _payload; private dynamic _payload;
private string _username; public string _username;
private string _message; public string _message;
public string Message public string Message
{ {
get get
@@ -120,7 +120,13 @@ namespace Client.ViewModels
data.Client.SendMessage(JSONConvert.GetMessageToSend(JSONConvert.MESSAGE, _payload)); data.Client.SendMessage(JSONConvert.GetMessageToSend(JSONConvert.MESSAGE, _payload));
} }
public static void HandleIncomingMsg(string username, string message)
{
Application.Current.Dispatcher.Invoke(delegate
{
Messages.Add($"{username}: {message}");
});
}
} }
} }

View File

@@ -122,11 +122,15 @@ namespace Server.Models
string textUsername = combo.Item1; string textUsername = combo.Item1;
string textMsg = combo.Item2; string textMsg = combo.Item2;
Debug.WriteLine("[SERVERCLIENT] User name: {0}\t User message: {1}", textUsername, textMsg); //Takes the data sent from the client, and then sets it in a data packet to be sent.
dynamic packet = new
{
username = textUsername,
message = textMsg
};
// todo handle sending to all except this user the username and message to display in chat //Sends the incomming message to be broadcast to all of the clients inside the current lobby.
serverCom.SendToLobby(ServerCommunication.INSTANCE.GetLobbyForUser(User),payload); serverCom.SendToLobby(serverCom.GetLobbyForUser(User), JSONConvert.GetMessageToSend(JSONConvert.MESSAGE, packet));
Debug.WriteLine("Payload has been sent!");
break; break;
case JSONConvert.LOBBY: case JSONConvert.LOBBY: