From 28cda89dc7870dfa36631775be69117ec751923a Mon Sep 17 00:00:00 2001 From: nico-dev Date: Sat, 10 Feb 2024 16:33:23 +0100 Subject: [PATCH] :construction: v1 --- .../Helpers/VisibilityManager.cs | 74 ++++++++++++++----- PenaltyMaster3000/View/MainView.xaml | 4 +- PenaltyMaster3000/ViewModel/MainVM.cs | 52 ++++++------- 3 files changed, 80 insertions(+), 50 deletions(-) diff --git a/PenaltyMaster3000/Helpers/VisibilityManager.cs b/PenaltyMaster3000/Helpers/VisibilityManager.cs index 95db796..892f90f 100644 --- a/PenaltyMaster3000/Helpers/VisibilityManager.cs +++ b/PenaltyMaster3000/Helpers/VisibilityManager.cs @@ -125,27 +125,23 @@ namespace PenaltyMaster3000.Helpers } /// - /// Sets the visibility of the elements for the start of the game. + /// Checks if two elements on the same position are visible. /// - public void GameStartedVisibility() + /// + public bool GetResult() { - // Starter attributes visible - StarterBall = Visibility.Visible; - StarterGoal = Visibility.Visible; + return AreElementsVisible(BallTopRightVisibility, GoalTopRightVisibility) || + AreElementsVisible(BallTopMiddleVisibility, GoalTopMiddleVisibility) || + AreElementsVisible(BallTopLeftVisibility, GoalTopLeftVisibility) || + AreElementsVisible(BallDownRightVisibility, GoalDownRightVisibility) || + AreElementsVisible(BallDownMiddleVisibility, GoalDownMiddleVisibility) || + AreElementsVisible(BallDownLeftVisibility, GoalDownLeftVisibility); + } - // Rest should be hidden - BallTopRightVisibility = Visibility.Hidden; - GoalTopRightVisibility = Visibility.Hidden; - BallTopMiddleVisibility = Visibility.Hidden; - GoalTopMiddleVisibility = Visibility.Hidden; - BallTopLeftVisibility = Visibility.Hidden; - GoalTopLeftVisibility = Visibility.Hidden; - BallDownRightVisibility = Visibility.Hidden; - GoalDownRightVisibility = Visibility.Hidden; - BallDownMiddleVisibility = Visibility.Hidden; - GoalDownMiddleVisibility = Visibility.Hidden; - BallDownLeftVisibility = Visibility.Hidden; - GoalDownLeftVisibility = Visibility.Hidden; + // Méthode utilitaire pour vérifier si deux éléments sont visibles + private bool AreElementsVisible(Visibility element1, Visibility element2) + { + return element1 == Visibility.Visible && element2 == Visibility.Visible; } /// @@ -153,11 +149,17 @@ namespace PenaltyMaster3000.Helpers /// /// /// - public void SetResult(string shotPosition, string defensePosition) + public async Task SetResult(string shotPosition, string defensePosition) { updateBall(shotPosition); + + // Delay to add some drama to the game + await Task.Delay(500); + updateKeeper(defensePosition); + + await Task.Delay(3000); } /// @@ -166,6 +168,11 @@ namespace PenaltyMaster3000.Helpers /// private void updateBall(string shotPosition) { + if(StarterBall == Visibility.Visible) + { + StarterBall = Visibility.Hidden; + } + switch (shotPosition) { case "HandUpRight": @@ -194,6 +201,11 @@ namespace PenaltyMaster3000.Helpers /// private void updateKeeper(string defensePosition) { + if(StarterGoal == Visibility.Visible) + { + StarterGoal = Visibility.Hidden; + } + switch (defensePosition) { case "HandUpRight": @@ -215,5 +227,29 @@ namespace PenaltyMaster3000.Helpers default: return; } } + + /// + /// Sets the visibility of the elements for the start of the game. + /// + public void GameStartedVisibility() + { + // Starter attributes visible + StarterBall = Visibility.Visible; + StarterGoal = Visibility.Visible; + + // Rest should be hidden + BallTopRightVisibility = Visibility.Hidden; + GoalTopRightVisibility = Visibility.Hidden; + BallTopMiddleVisibility = Visibility.Hidden; + GoalTopMiddleVisibility = Visibility.Hidden; + BallTopLeftVisibility = Visibility.Hidden; + GoalTopLeftVisibility = Visibility.Hidden; + BallDownRightVisibility = Visibility.Hidden; + GoalDownRightVisibility = Visibility.Hidden; + BallDownMiddleVisibility = Visibility.Hidden; + GoalDownMiddleVisibility = Visibility.Hidden; + BallDownLeftVisibility = Visibility.Hidden; + GoalDownLeftVisibility = Visibility.Hidden; + } } } diff --git a/PenaltyMaster3000/View/MainView.xaml b/PenaltyMaster3000/View/MainView.xaml index f06a9dc..a6d4659 100644 --- a/PenaltyMaster3000/View/MainView.xaml +++ b/PenaltyMaster3000/View/MainView.xaml @@ -75,7 +75,7 @@ Grid.Column="0" Visibility="{Binding VsMgr.BallDownRightVisibility}"/> - + Visibility="{Binding VsMgr.StarterBall}"/> diff --git a/PenaltyMaster3000/ViewModel/MainVM.cs b/PenaltyMaster3000/ViewModel/MainVM.cs index fc88967..b975da1 100644 --- a/PenaltyMaster3000/ViewModel/MainVM.cs +++ b/PenaltyMaster3000/ViewModel/MainVM.cs @@ -114,8 +114,8 @@ namespace PenaltyMaster3000.ViewModel } // --- - - private BitmapImage CurrentImageSource + + public BitmapImage CurrentImageSource { get { @@ -242,10 +242,7 @@ namespace PenaltyMaster3000.ViewModel // Read a gesture for 5 seconds // Save the shot on the ShotHolder attribute - ShotHolder = await ReadAGesture(5); - - // Hide starter ball - VsMgr.StarterBall = Visibility.Hidden; + ShotHolder = await ReadAGesture(2); // IsShootCompleted = false; // Call the save method @@ -257,7 +254,7 @@ namespace PenaltyMaster3000.ViewModel await DisplayActionText("GoalKeeper's turn. Get ready !", 3); await DisplayActionText("Choose an angle to defend.", 5); - DefenseHolder = await ReadAGesture(5); + DefenseHolder = await ReadAGesture(2); // Arrêter le timer du déplacement automatique du Goal goalTimer.Stop(); @@ -267,16 +264,15 @@ namespace PenaltyMaster3000.ViewModel Result(); } - private void Result() + private async void Result() { - VsMgr.SetResult(ShotHolder, DefenseHolder); + // Update the view with shot and defense. + await VsMgr.SetResult(ShotHolder, DefenseHolder); + + // get the result (goal or not goal). + bool isBallAndGoalVisible = VsMgr.GetResult(); - bool isBallAndGoalVisible = AreElementsVisible(VsMgr.BallTopRightVisibility, VsMgr.GoalTopRightVisibility) || - AreElementsVisible(VsMgr.BallTopMiddleVisibility, VsMgr.GoalTopMiddleVisibility) || - AreElementsVisible(VsMgr.BallTopLeftVisibility, VsMgr.GoalTopLeftVisibility) || - AreElementsVisible(VsMgr.BallDownRightVisibility, VsMgr.GoalDownRightVisibility) || - AreElementsVisible(VsMgr.BallDownMiddleVisibility, VsMgr.GoalDownMiddleVisibility) || - AreElementsVisible(VsMgr.BallDownLeftVisibility, VsMgr.GoalDownLeftVisibility); + // Update the score // Vérifiez si toutes les paires d'éléments Ball et Goal sont visibles if (!isPlayer1Goalkeeper && !isBallAndGoalVisible) @@ -329,17 +325,6 @@ namespace PenaltyMaster3000.ViewModel IsResultCompleted = false; } - // Méthode utilitaire pour vérifier si deux éléments sont visibles - private bool AreElementsVisible(Visibility element1, Visibility element2) - { - return element1 == Visibility.Visible && element2 == Visibility.Visible; - } - - private void StartupVisibility() - { - VsMgr.GameStartedVisibility(); - } - private void GameEnded() { if(player1Score > player2Score) @@ -353,6 +338,14 @@ namespace PenaltyMaster3000.ViewModel FinalResultVisibility = Visibility.Visible; } + /// + /// Sets the starting visibility for the game. + /// + private void StartupVisibility() + { + VsMgr.GameStartedVisibility(); + } + // new stuff /// @@ -400,7 +393,7 @@ namespace PenaltyMaster3000.ViewModel // load all GestureManager.AddGestures(this.GestureFactory); - // subscirbe to the OnGestureRecognized event + /*// subscirbe to the OnGestureRecognized event foreach (var gesture in GestureManager.KnownGestures) { gesture.GestureRecognized += (sender, args) => @@ -423,9 +416,10 @@ namespace PenaltyMaster3000.ViewModel foreach (var gesture in GestureManager.KnownGestures) { gesture.GestureRecognized = null; - } + }*/ - return gestureRead; + // return gestureRead; + return "HandUpRight"; } } }