begin_project_view
nico-dev 1 year ago
parent c55e1ba3d1
commit 28cda89dc7

@ -125,27 +125,23 @@ namespace PenaltyMaster3000.Helpers
} }
/// <summary> /// <summary>
/// Sets the visibility of the elements for the start of the game. /// Checks if two elements on the same position are visible.
/// </summary> /// </summary>
public void GameStartedVisibility() /// <returns></returns>
public bool GetResult()
{ {
// Starter attributes visible return AreElementsVisible(BallTopRightVisibility, GoalTopRightVisibility) ||
StarterBall = Visibility.Visible; AreElementsVisible(BallTopMiddleVisibility, GoalTopMiddleVisibility) ||
StarterGoal = Visibility.Visible; AreElementsVisible(BallTopLeftVisibility, GoalTopLeftVisibility) ||
AreElementsVisible(BallDownRightVisibility, GoalDownRightVisibility) ||
AreElementsVisible(BallDownMiddleVisibility, GoalDownMiddleVisibility) ||
AreElementsVisible(BallDownLeftVisibility, GoalDownLeftVisibility);
}
// Rest should be hidden // Méthode utilitaire pour vérifier si deux éléments sont visibles
BallTopRightVisibility = Visibility.Hidden; private bool AreElementsVisible(Visibility element1, Visibility element2)
GoalTopRightVisibility = Visibility.Hidden; {
BallTopMiddleVisibility = Visibility.Hidden; return element1 == Visibility.Visible && element2 == Visibility.Visible;
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;
} }
/// <summary> /// <summary>
@ -153,11 +149,17 @@ namespace PenaltyMaster3000.Helpers
/// </summary> /// </summary>
/// <param name="shotPosition"></param> /// <param name="shotPosition"></param>
/// <param name="defensePosition"></param> /// <param name="defensePosition"></param>
public void SetResult(string shotPosition, string defensePosition) public async Task SetResult(string shotPosition, string defensePosition)
{ {
updateBall(shotPosition); updateBall(shotPosition);
// Delay to add some drama to the game
await Task.Delay(500);
updateKeeper(defensePosition); updateKeeper(defensePosition);
await Task.Delay(3000);
} }
/// <summary> /// <summary>
@ -166,6 +168,11 @@ namespace PenaltyMaster3000.Helpers
/// <param name="shotPosition"></param> /// <param name="shotPosition"></param>
private void updateBall(string shotPosition) private void updateBall(string shotPosition)
{ {
if(StarterBall == Visibility.Visible)
{
StarterBall = Visibility.Hidden;
}
switch (shotPosition) switch (shotPosition)
{ {
case "HandUpRight": case "HandUpRight":
@ -194,6 +201,11 @@ namespace PenaltyMaster3000.Helpers
/// <param name="defensePosition"></param> /// <param name="defensePosition"></param>
private void updateKeeper(string defensePosition) private void updateKeeper(string defensePosition)
{ {
if(StarterGoal == Visibility.Visible)
{
StarterGoal = Visibility.Hidden;
}
switch (defensePosition) switch (defensePosition)
{ {
case "HandUpRight": case "HandUpRight":
@ -215,5 +227,29 @@ namespace PenaltyMaster3000.Helpers
default: return; default: return;
} }
} }
/// <summary>
/// Sets the visibility of the elements for the start of the game.
/// </summary>
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;
}
} }
} }

@ -75,7 +75,7 @@
Grid.Column="0" Grid.Column="0"
Visibility="{Binding VsMgr.BallDownRightVisibility}"/> Visibility="{Binding VsMgr.BallDownRightVisibility}"/>
<Image Source="{Binding VsMgr.CurrentImageSource}" <Image Source="{Binding CurrentImageSource}"
Grid.Row="1" Grid.Row="1"
Grid.RowSpan="2" Grid.RowSpan="2"
Grid.Column="1" Grid.Column="1"
@ -111,7 +111,7 @@
Width="50" Width="50"
Height="50" Height="50"
VerticalAlignment="Bottom" VerticalAlignment="Bottom"
Visibility="{Binding VsMgr.Starterball}"/> Visibility="{Binding VsMgr.StarterBall}"/>
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>

@ -115,7 +115,7 @@ namespace PenaltyMaster3000.ViewModel
// --- // ---
private BitmapImage CurrentImageSource public BitmapImage CurrentImageSource
{ {
get get
{ {
@ -242,10 +242,7 @@ namespace PenaltyMaster3000.ViewModel
// Read a gesture for 5 seconds // Read a gesture for 5 seconds
// Save the shot on the ShotHolder attribute // Save the shot on the ShotHolder attribute
ShotHolder = await ReadAGesture(5); ShotHolder = await ReadAGesture(2);
// Hide starter ball
VsMgr.StarterBall = Visibility.Hidden;
// IsShootCompleted = false; // IsShootCompleted = false;
// Call the save method // Call the save method
@ -257,7 +254,7 @@ namespace PenaltyMaster3000.ViewModel
await DisplayActionText("GoalKeeper's turn. Get ready !", 3); await DisplayActionText("GoalKeeper's turn. Get ready !", 3);
await DisplayActionText("Choose an angle to defend.", 5); 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 // Arrêter le timer du déplacement automatique du Goal
goalTimer.Stop(); goalTimer.Stop();
@ -267,16 +264,15 @@ namespace PenaltyMaster3000.ViewModel
Result(); 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) || // Update the score
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);
// Vérifiez si toutes les paires d'éléments Ball et Goal sont visibles // Vérifiez si toutes les paires d'éléments Ball et Goal sont visibles
if (!isPlayer1Goalkeeper && !isBallAndGoalVisible) if (!isPlayer1Goalkeeper && !isBallAndGoalVisible)
@ -329,17 +325,6 @@ namespace PenaltyMaster3000.ViewModel
IsResultCompleted = false; 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() private void GameEnded()
{ {
if(player1Score > player2Score) if(player1Score > player2Score)
@ -353,6 +338,14 @@ namespace PenaltyMaster3000.ViewModel
FinalResultVisibility = Visibility.Visible; FinalResultVisibility = Visibility.Visible;
} }
/// <summary>
/// Sets the starting visibility for the game.
/// </summary>
private void StartupVisibility()
{
VsMgr.GameStartedVisibility();
}
// new stuff // new stuff
/// <summary> /// <summary>
@ -400,7 +393,7 @@ namespace PenaltyMaster3000.ViewModel
// load all // load all
GestureManager.AddGestures(this.GestureFactory); GestureManager.AddGestures(this.GestureFactory);
// subscirbe to the OnGestureRecognized event /*// subscirbe to the OnGestureRecognized event
foreach (var gesture in GestureManager.KnownGestures) foreach (var gesture in GestureManager.KnownGestures)
{ {
gesture.GestureRecognized += (sender, args) => gesture.GestureRecognized += (sender, args) =>
@ -423,9 +416,10 @@ namespace PenaltyMaster3000.ViewModel
foreach (var gesture in GestureManager.KnownGestures) foreach (var gesture in GestureManager.KnownGestures)
{ {
gesture.GestureRecognized = null; gesture.GestureRecognized = null;
} }*/
return gestureRead; // return gestureRead;
return "HandUpRight";
} }
} }
} }

Loading…
Cancel
Save