Skip to content

Commit

Permalink
Closing game implemented
Browse files Browse the repository at this point in the history
  • Loading branch information
NikolayIT committed Oct 9, 2015
1 parent 40abd0e commit 479643b
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 21 deletions.
26 changes: 13 additions & 13 deletions Source/UI/Santase.UI.WindowsUniversal/MainPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,19 @@
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" HorizontalAlignment="Center" Grid.Row="0" Grid.ColumnSpan="5" VerticalAlignment="Stretch" Orientation="Horizontal">
<local:CardControl x:Name="OtherPlayerCard1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="1,0,1,0"/>
<local:CardControl x:Name="OtherPlayerCard2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-40,0,1,0"/>
<local:CardControl x:Name="OtherPlayerCard3" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-40,0,1,0"/>
<local:CardControl x:Name="OtherPlayerCard4" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-40,0,1,0"/>
<local:CardControl x:Name="OtherPlayerCard5" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-40,0,1,0"/>
<local:CardControl x:Name="OtherPlayerCard6" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-40,0,1,0"/>
<local:CardControl x:Name="OtherPlayerCard2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-48,0,1,0"/>
<local:CardControl x:Name="OtherPlayerCard3" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-48,0,1,0"/>
<local:CardControl x:Name="OtherPlayerCard4" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-48,0,1,0"/>
<local:CardControl x:Name="OtherPlayerCard5" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-48,0,1,0"/>
<local:CardControl x:Name="OtherPlayerCard6" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-48,0,1,0"/>
</StackPanel>
<StackPanel Grid.Column="0" HorizontalAlignment="Center" Grid.Row="2" Grid.ColumnSpan="5" VerticalAlignment="Stretch" Orientation="Horizontal">
<local:CardControl x:Name="PlayerCard1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="1,0,1,0" Tapped="PlayerCardTapped" />
<local:CardControl x:Name="PlayerCard2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-40,0,1,0" Tapped="PlayerCardTapped" />
<local:CardControl x:Name="PlayerCard3" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-40,0,1,0" Tapped="PlayerCardTapped" />
<local:CardControl x:Name="PlayerCard4" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-40,0,1,0" Tapped="PlayerCardTapped" />
<local:CardControl x:Name="PlayerCard5" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-40,0,1,0" Tapped="PlayerCardTapped" />
<local:CardControl x:Name="PlayerCard6" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-40,0,1,0" Tapped="PlayerCardTapped" />
<local:CardControl x:Name="PlayerCard2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-48,0,1,0" Tapped="PlayerCardTapped" />
<local:CardControl x:Name="PlayerCard3" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-48,0,1,0" Tapped="PlayerCardTapped" />
<local:CardControl x:Name="PlayerCard4" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-48,0,1,0" Tapped="PlayerCardTapped" />
<local:CardControl x:Name="PlayerCard5" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-48,0,1,0" Tapped="PlayerCardTapped" />
<local:CardControl x:Name="PlayerCard6" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-48,0,1,0" Tapped="PlayerCardTapped" />
</StackPanel>
<StackPanel Grid.Column="4" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Center">
<local:CardControl x:Name="OldOtherPlayerCard" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0,1,0,1" />
Expand All @@ -46,14 +46,14 @@
<CompositeTransform Rotation="90" TranslateX="60" />
</local:CardControl.RenderTransform>
</local:CardControl>
<local:CardControl Grid.Row="1" Grid.Column="0" x:Name="DeckCards" Opacity="0.7" HorizontalAlignment="Left" VerticalAlignment="Center" />
<local:CardControl Grid.Row="1" Grid.Column="0" x:Name="DeckCards" Opacity="0.7" HorizontalAlignment="Left" VerticalAlignment="Center" Tapped="DeckCardsOnTapped" />
<StackPanel Grid.Column="2" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Vertical">
<local:CardControl x:Name="OtherPlayerCard" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
<local:CardControl x:Name="PlayerCard" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
</StackPanel>
<TextBlock x:Name="CardsLeftInDeck" Grid.Row="1" Grid.Column="0" Opacity="0.9" HorizontalAlignment="Center" TextWrapping="Wrap" Text="12" VerticalAlignment="Center" FontWeight="ExtraBold" FontSize="48" Foreground="Black"/>
<TextBlock x:Name="OtherPlayerRoundPoints" Grid.Row="0" Grid.Column="4" HorizontalAlignment="Center" TextWrapping="Wrap" Text="0" VerticalAlignment="Center" FontSize="36" FontWeight="Bold" Foreground="Black"/>
<TextBlock x:Name="PlayerRoundPoints" Grid.Row="2" Grid.Column="4" HorizontalAlignment="Center" TextWrapping="Wrap" Text="0" VerticalAlignment="Center" FontSize="36" FontWeight="Bold" Foreground="Black"/>
<TextBlock x:Name="OtherPlayerRoundPoints" Grid.Row="0" Grid.Column="4" HorizontalAlignment="Center" TextWrapping="Wrap" Text="0" VerticalAlignment="Center" FontSize="32" FontWeight="Bold" Foreground="Black"/>
<TextBlock x:Name="PlayerRoundPoints" Grid.Row="2" Grid.Column="4" HorizontalAlignment="Center" TextWrapping="Wrap" Text="0" VerticalAlignment="Center" FontSize="32" FontWeight="Bold" Foreground="Black"/>
<TextBlock x:Name="OtherPlayerTotalPoints" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Center" TextWrapping="Wrap" Text="0" VerticalAlignment="Center" FontSize="36" FontWeight="ExtraBold" Foreground="Black"/>
<TextBlock x:Name="PlayerTotalPoints" Grid.Row="2" Grid.Column="0" HorizontalAlignment="Center" TextWrapping="Wrap" Text="0" VerticalAlignment="Center" FontSize="36" FontWeight="ExtraBold" Foreground="Black"/>
<Universal:AdMediatorControl Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="5" x:Name="AdMediator_2D55AF" HorizontalAlignment="Stretch" Id="AdMediator-Id-9EF27C9E-AEA0-4FC0-9307-462B7AA56267" VerticalAlignment="Stretch"/>
Expand Down
32 changes: 25 additions & 7 deletions Source/UI/Santase.UI.WindowsUniversal/MainPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ public MainPage()
this.uiPlayer.RedrawCurrentAndOtherPlayerTotalPoints +=
this.UiPlayerOnRedrawCurrentAndOtherPlayerTotalPoints;
this.uiPlayer.RedrawPlayedCards += this.UiPlayerOnRedrawPlayedCards;
this.uiPlayer.GameClosed += this.UiPlayerOnGameClosed;
this.uiPlayer.GameEnded += this.UiPlayerOnGameEnded;

IPlayer smartPlayer = new SmartPlayer();
Expand All @@ -58,12 +59,6 @@ public MainPage()
Task.Run(() => this.game.Start());
}

private void UiPlayerOnGameEnded(object sender, bool amIWinner)
{
// TODO: Inform player for the game result
Task.Run(() => this.game.Start());
}

private void PlayerCardTapped(object sender, TappedRoutedEventArgs eventArgs)
{
this.uiPlayer.Action(PlayerAction.PlayCard((sender as CardControl)?.Card));
Expand Down Expand Up @@ -118,7 +113,7 @@ private void UiPlayerOnRedrawPlayerPlayedCard(object sender, Card card)
//// this.PlayerCard.SetCard(card);
//// }
});
Task.Delay(2000);
//// Task.Delay(2000);
}

private void UiPlayerOnRedrawOtherPlayerPlayedCard(object sender, Card card)
Expand Down Expand Up @@ -216,9 +211,32 @@ private void UiPlayerOnRedrawNumberOfCardsLeftInDeck(object sender, int cardsLef
});
}

private void UiPlayerOnGameClosed(object sender, EventArgs eventArgs)
{
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
this.Dispatcher.RunAsync(
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
CoreDispatcherPriority.Normal,
() =>
{
this.TrumpCard.SetCard(null);
});
}

private void UiPlayerOnGameEnded(object sender, bool amIWinner)
{
// TODO: Inform player for the game result
Task.Run(() => this.game.Start());
}

private void TrumpCardOnTapped(object sender, TappedRoutedEventArgs e)
{
this.uiPlayer.Action(PlayerAction.ChangeTrump());
}

private void DeckCardsOnTapped(object sender, TappedRoutedEventArgs e)
{
this.uiPlayer.Action(PlayerAction.CloseGame());
}
}
}
14 changes: 13 additions & 1 deletion Source/UI/Santase.UI.WindowsUniversal/UiPlayer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ public class UiPlayer : BasePlayer

public event EventHandler<Tuple<Card, Card>> RedrawPlayedCards;

public event EventHandler GameClosed;

public event EventHandler<bool> GameEnded;

public override string Name => "UI Player";
Expand Down Expand Up @@ -69,6 +71,7 @@ public override PlayerAction GetTurn(PlayerTurnContext context)
break;
case PlayerActionType.CloseGame:
action = this.CloseGame();
this.GameClosed?.Invoke(this, EventArgs.Empty);
break;
default:
throw new ArgumentOutOfRangeException(nameof(this.userAction.Type));
Expand Down Expand Up @@ -119,7 +122,16 @@ private void UpdateContextInfo(PlayerTurnContext context)
context.IsFirstPlayerTurn ? context.FirstPlayerRoundPoints : context.SecondPlayerRoundPoints,
context.IsFirstPlayerTurn ? context.SecondPlayerRoundPoints : context.FirstPlayerRoundPoints);
this.RedrawCurrentAndOtherPlayerRoundPoints?.Invoke(this, roundPointsInfo);
this.RedrawTrumpCard?.Invoke(this, context.TrumpCard);
if (context.State.ShouldObserveRules && context.CardsLeftInDeck > 0)
{
// Game closed
this.GameClosed?.Invoke(this, EventArgs.Empty);
}
else
{
this.RedrawTrumpCard?.Invoke(this, context.TrumpCard);
}

this.RedrawNumberOfCardsLeftInDeck?.Invoke(this, context.CardsLeftInDeck);
this.RedrawOtherPlayerPlayedCard?.Invoke(this, context.FirstPlayedCard);
}
Expand Down

0 comments on commit 479643b

Please sign in to comment.