@ -15,11 +15,14 @@ namespace Qwirkle.Pages;
public partial class Gameboard : ContentPage
public partial class Gameboard : ContentPage
{
{
public ICommand OnDrop = > new Command < Cell > ( OnDropTile ) ;
public ICommand OnDrop = > new Command < Cell > ( OnDropTile ) ;
public ICommand OnDropB = > new Command ( OnDropBag ) ;
private Game game = ( ( App ) Application . Current ! ) . Game ;
private Game game = ( ( App ) Application . Current ! ) . Game ;
private Tile ? tiledrag ;
private Tile ? tiledrag ;
private List < Tile > tilesSwap = [ ] ;
public Color ColorBC1 { get ; set ; } = Colors . White ;
public Color ColorBC1 { get ; set ; } = Colors . White ;
public Color ColorBC2 { get ; set ; } = Colors . Transparent ;
public Color ColorBC2 { get ; set ; } = Colors . Transparent ;
public Color ColorBC3 { get ; set ; } = Colors . Transparent ;
public Color ColorBC3 { get ; set ; } = Colors . Transparent ;
@ -44,6 +47,11 @@ public partial class Gameboard : ContentPage
e . AcceptedOperation = DataPackageOperation . Copy ;
e . AcceptedOperation = DataPackageOperation . Copy ;
}
}
private void OnDragOverBag ( object sender , DragEventArgs e )
{
e . AcceptedOperation = DataPackageOperation . Copy ;
}
private void OnDropTile ( Cell cell )
private void OnDropTile ( Cell cell )
{
{
@ -71,14 +79,21 @@ public partial class Gameboard : ContentPage
{
{
game . NextPlayerNotified + = Game_NextPlayerNotified ;
game . NextPlayerNotified + = Game_NextPlayerNotified ;
if ( game . PlayerSwapping )
{
game . SwapTiles ( game . GetPlayingPlayer ( ) , tilesSwap ) ;
tilesSwap . Clear ( ) ;
game . PlayerSwapping = false ;
}
else
{
game . GetPlayerScore ( game . GetPlayingPlayer ( ) , game . CellsUsed , game . GetBoard ( ) ! ) ;
game . GetPlayerScore ( game . GetPlayingPlayer ( ) , game . CellsUsed , game . GetBoard ( ) ! ) ;
game . EmptyCellUsed ( ) ;
game . EmptyCellUsed ( ) ;
game . DrawTiles ( game . GetPlayingPlayer ( ) ) ;
game . DrawTiles ( game . GetPlayingPlayer ( ) ) ;
game . CheckGameOver ( game . GetPlayingPlayer ( ) ) ;
}
game . CheckGameOver ( game . GetPlayingPlayer ( ) ) ;
game . SetNextPlayer ( ) ;
game . SetNextPlayer ( ) ;
game . NextPlayerNotified - = Game_NextPlayerNotified ;
game . NextPlayerNotified - = Game_NextPlayerNotified ;
ChangeColorBC ( ) ;
ChangeColorBC ( ) ;
@ -89,6 +104,8 @@ public partial class Gameboard : ContentPage
if ( game . GetPlayingPlayerPosition ( ) = = 0 )
if ( game . GetPlayingPlayerPosition ( ) = = 0 )
{
{
ColorBC1 = Colors . White ;
ColorBC1 = Colors . White ;
ColorBC2 = Colors . Transparent ;
ColorBC3 = Colors . Transparent ;
ColorBC4 = Colors . Transparent ;
ColorBC4 = Colors . Transparent ;
OnPropertyChanged ( nameof ( ColorBC1 ) ) ;
OnPropertyChanged ( nameof ( ColorBC1 ) ) ;
OnPropertyChanged ( nameof ( ColorBC4 ) ) ;
OnPropertyChanged ( nameof ( ColorBC4 ) ) ;
@ -97,20 +114,26 @@ public partial class Gameboard : ContentPage
{
{
ColorBC2 = Colors . White ;
ColorBC2 = Colors . White ;
ColorBC1 = Colors . Transparent ;
ColorBC1 = Colors . Transparent ;
ColorBC3 = Colors . Transparent ;
ColorBC4 = Colors . Transparent ;
OnPropertyChanged ( nameof ( ColorBC1 ) ) ;
OnPropertyChanged ( nameof ( ColorBC1 ) ) ;
OnPropertyChanged ( nameof ( ColorBC2 ) ) ;
OnPropertyChanged ( nameof ( ColorBC2 ) ) ;
}
}
if ( game . GetPlayingPlayerPosition ( ) = = 2 )
if ( game . GetPlayingPlayerPosition ( ) = = 2 )
{
{
ColorBC3 = Colors . White ;
ColorBC3 = Colors . White ;
ColorBC1 = Colors . Transparent ;
ColorBC2 = Colors . Transparent ;
ColorBC2 = Colors . Transparent ;
ColorBC4 = Colors . Transparent ;
OnPropertyChanged ( nameof ( ColorBC3 ) ) ;
OnPropertyChanged ( nameof ( ColorBC3 ) ) ;
OnPropertyChanged ( nameof ( ColorBC2 ) ) ;
OnPropertyChanged ( nameof ( ColorBC2 ) ) ;
}
}
if ( game . GetPlayingPlayerPosition ( ) = = 3 )
if ( game . GetPlayingPlayerPosition ( ) = = 3 )
{
{
ColorBC4 = Colors . White ;
ColorBC4 = Colors . White ;
ColorBC1 = Colors . Transparent ;
ColorBC3 = Colors . Transparent ;
ColorBC3 = Colors . Transparent ;
ColorBC2 = Colors . Transparent ;
OnPropertyChanged ( nameof ( ColorBC4 ) ) ;
OnPropertyChanged ( nameof ( ColorBC4 ) ) ;
OnPropertyChanged ( nameof ( ColorBC3 ) ) ;
OnPropertyChanged ( nameof ( ColorBC3 ) ) ;
}
}
@ -121,8 +144,31 @@ public partial class Gameboard : ContentPage
DisplayAlert ( "Player switch !" , "It's your turn : " + args . Player . NameTag , "<3" ) ;
DisplayAlert ( "Player switch !" , "It's your turn : " + args . Player . NameTag , "<3" ) ;
}
}
private void On TileClickedP1( object? sender , EventArgs args )
private void On ButtonSwapClicked( object sender , EventArgs e )
{
{
game . PlaceTileNotified + = Game_PlaceTileNotified ;
game . SwapTilesNotified + = Game_SwapTilesNotified ;
if ( game . CellsUsed . Count = = 0 & & game . PlayerSwapping = = false )
{
DisplayAlert ( "Swap system" , "\r\nWelcome to the swap system! To use the system, take the tiles you wish to swap and place them in the bag (you will not see the tiles disappear). Then, click on the skip button. /!\\ Attention, during the swap phase, you cannot play /!\\" , "Copy !" ) ;
game . PlayerSwapping = true ;
}
game . SwapTilesNotified - = Game_SwapTilesNotified ;
game . PlaceTileNotified - = Game_PlaceTileNotified ;
}
private void Game_SwapTilesNotified ( object? sender , SwapTilesNotifiedEventArgs args )
{
DisplayAlert ( "Swap system" , args . Reason , "<3" ) ;
}
private void OnDropBag ( )
{
if ( game . PlayerSwapping )
{
tilesSwap . Add ( tiledrag ! ) ;
}
}
}
}
}