[CHANGED] Static function for handling to callbacks

This commit is contained in:
Dogukan
2020-10-23 12:32:11 +02:00
parent f5d55ef405
commit 8d4f72c09d
3 changed files with 13 additions and 8 deletions

View File

@@ -13,6 +13,8 @@ namespace Client
public delegate void LobbyCallback(int id); public delegate void LobbyCallback(int id);
public delegate void LobbyJoinCallback(bool isHost); public delegate void LobbyJoinCallback(bool isHost);
public delegate void RandomWord(string word); public delegate void RandomWord(string word);
public delegate void HandleIncomingMsg(string username, string msg);
internal delegate void HandleIncomingPlayer(Lobby lobby);
class Client : ObservableObject class Client : ObservableObject
{ {
private TcpClient tcpClient; private TcpClient tcpClient;
@@ -32,6 +34,8 @@ namespace Client
public LobbyCallback OnLobbyCreated; public LobbyCallback OnLobbyCreated;
public LobbyCallback OnLobbyLeave; public LobbyCallback OnLobbyLeave;
public RandomWord RandomWord; public RandomWord RandomWord;
public HandleIncomingMsg IncomingMsg;
public HandleIncomingPlayer IncomingPlayer;
private ClientData data = ClientData.Instance; private ClientData data = ClientData.Instance;
public Lobby[] Lobbies { get; set; } public Lobby[] Lobbies { get; set; }
@@ -124,7 +128,7 @@ namespace Client
if(textUsername != data.User.Username) if(textUsername != data.User.Username)
{ {
ViewModels.ViewModelGame.HandleIncomingMsg(textUsername, textMsg); IncomingMsg?.Invoke(textUsername, textMsg);
} }
//TODO display username and message in chat window //TODO display username and message in chat window
@@ -160,7 +164,7 @@ namespace Client
{ {
Debug.WriteLine("[CLIENT] lobby data: {0}", item.Users.Count); Debug.WriteLine("[CLIENT] lobby data: {0}", item.Users.Count);
if (item.ID == data.Lobby.ID) if (item.ID == data.Lobby.ID)
ViewModels.ViewModelGame.HandleIncomingPlayer(item); IncomingPlayer(item);
} }
}; };

View File

@@ -24,8 +24,8 @@ namespace Client.ViewModels
private Point currentPoint = new Point(); private Point currentPoint = new Point();
private Color color; private Color color;
public static ObservableCollection<string> Messages { get; } = new ObservableCollection<string>(); public ObservableCollection<string> Messages { get; } = new ObservableCollection<string>();
public static ObservableCollection<string> Players { get; } = new ObservableCollection<string>(); public ObservableCollection<string> Players { get; } = new ObservableCollection<string>();
private dynamic _payload; private dynamic _payload;
@@ -99,6 +99,8 @@ namespace Client.ViewModels
{ {
OnKeyDown = new RelayCommand(ChatBox_KeyDown); OnKeyDown = new RelayCommand(ChatBox_KeyDown);
data.Client.RandomWord = HandleRandomWord; data.Client.RandomWord = HandleRandomWord;
data.Client.IncomingMsg = HandleIncomingMsg;
data.Client.IncomingPlayer = HandleIncomingPlayer;
} }
private void ChatBox_KeyDown() private void ChatBox_KeyDown()
@@ -125,7 +127,7 @@ namespace Client.ViewModels
* MISC make this a callback * MISC make this a callback
* Handles the incoming chat message from another client. * Handles the incoming chat message from another client.
*/ */
public static void HandleIncomingMsg(string username, string message) public void HandleIncomingMsg(string username, string message)
{ {
Application.Current.Dispatcher.Invoke(delegate Application.Current.Dispatcher.Invoke(delegate
{ {
@@ -143,7 +145,6 @@ namespace Client.ViewModels
} }
/* /*
* MISC make this a callback
* Handles the random word that has been received from the server. * Handles the random word that has been received from the server.
*/ */
public void HandleRandomWord(string randomWord) public void HandleRandomWord(string randomWord)
@@ -152,7 +153,7 @@ namespace Client.ViewModels
Debug.WriteLine($"[CLIENT] The random word is: {_randomWord}"); Debug.WriteLine($"[CLIENT] The random word is: {_randomWord}");
} }
public static void HandleIncomingPlayer(Lobby lobby) public void HandleIncomingPlayer(Lobby lobby)
{ {
Application.Current.Dispatcher.Invoke(delegate Application.Current.Dispatcher.Invoke(delegate
{ {

View File

@@ -6,7 +6,7 @@ using System.Text;
namespace Client namespace Client
{ {
class Lobby : INotifyPropertyChanged internal class Lobby : INotifyPropertyChanged
{ {
public event PropertyChangedEventHandler PropertyChanged; public event PropertyChangedEventHandler PropertyChanged;