diff --git a/Client/Client.cs b/Client/Client.cs index ed71b84..d2b5cff 100644 --- a/Client/Client.cs +++ b/Client/Client.cs @@ -221,6 +221,18 @@ namespace Client int lobbyElapsedID = JSONConvert.GetLobbyID(payload); //todo set next round + break; + + case JSONConvert.GameCommand.INITIALIZE: + int lobbyID = JSONConvert.GetLobbyID(payload); + string userName = JSONConvert.GetUsernameLogin(payload); + if (lobbyID == clientData.Lobby.ID) + if (userName == clientData.User.Username) + { + clientData.User.TurnToDraw = true; + Debug.WriteLine("[CLIENT] Setting a player's turnToDraw to true"); + } + break; } diff --git a/Client/ViewModels/ViewModelGame.cs b/Client/ViewModels/ViewModelGame.cs index 2f6e03e..a33e7ba 100644 --- a/Client/ViewModels/ViewModelGame.cs +++ b/Client/ViewModels/ViewModelGame.cs @@ -27,6 +27,8 @@ namespace Client.ViewModels public Queue linesQueue; private Timer queueTimer; + private bool wordGuessed = false; + public static ObservableCollection Messages { get; } = new ObservableCollection(); public ObservableCollection Players { get; } = new ObservableCollection(); @@ -50,7 +52,23 @@ namespace Client.ViewModels private string _randomWord; public string RandomWord { - get { return _randomWord; } + get { + if (data.User.TurnToDraw) + return _randomWord; + + if (!wordGuessed) + { + string hiddenWord = ""; + for (int i = 0; i < _randomWord.Length; i++) + { + hiddenWord += "_ "; + } + return hiddenWord; + } + else + return _randomWord; + } + set { _randomWord = value; } } @@ -59,10 +77,15 @@ namespace Client.ViewModels get { return data.User.Host; } } + public bool UserTurnToDraw + { + get { return data.User.TurnToDraw; } + } + public ViewModelGame(GameWindow window) { this.window = window; - + _randomWord = ""; buffer = new double[maxLines][]; linesQueue = new Queue(); OnKeyDown = new RelayCommand(ChatBox_KeyDown); @@ -99,7 +122,7 @@ namespace Client.ViewModels public void Canvas_MouseDown(MouseButtonEventArgs e, GameWindow window) { - if (e.ButtonState == MouseButtonState.Pressed) + if (e.ButtonState == MouseButtonState.Pressed && data.User.TurnToDraw) { currentPoint = e.GetPosition(window.CanvasForPaint); } @@ -107,7 +130,7 @@ namespace Client.ViewModels public void Canvas_MouseMove(MouseEventArgs e, GameWindow window) { - if (e.LeftButton == MouseButtonState.Pressed) + if (e.LeftButton == MouseButtonState.Pressed && data.User.TurnToDraw) { double[] coordinates = new double[4]; Line line = new Line(); @@ -144,7 +167,9 @@ namespace Client.ViewModels public void Canvas_MouseUp(object sender, MouseButtonEventArgs e) { - sendArrayFromQueue(sender, null); + if (data.User.TurnToDraw) + sendArrayFromQueue(sender, null); + } private void sendArrayFromQueue(object sender, ElapsedEventArgs e) diff --git a/Client/Views/GameWindow.xaml b/Client/Views/GameWindow.xaml index eaf5391..02968ed 100644 --- a/Client/Views/GameWindow.xaml +++ b/Client/Views/GameWindow.xaml @@ -35,12 +35,12 @@