Ajout du drag des cartes

master
cldupland 6 years ago
parent e30805be57
commit 6cbd244c9f

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

@ -33,17 +33,11 @@
<None Remove="AppRessources.config" />
<None Remove="view\MultiPlayerMode.xaml" />
<None Remove="Media\thegame.jpg" />
<None Remove="Media\Apple.png" />
<None Remove="Media\Engrenage.jpeg" />
<None Remove="Media\moon.jpg" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Media\thegame.jpg" />
<EmbeddedResource Include="Media\moon.jpg" />
<EmbeddedResource Include="Media\Apple.png">
<SubType></SubType>
<Generator></Generator>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="AppRessource.resx">

@ -78,13 +78,15 @@
<StackLayout
Grid.Row="0"
Grid.Column="2">
Grid.Column="2"
x:Name="gameOption">
<Button
Text="End Turn"
HorizontalOptions="End"
VerticalOptions="Start"
BackgroundColor="{DynamicResource SkyBlueColor}"
HeightRequest="35"/>
HeightRequest="35"
Clicked="EndTurn"/>
</StackLayout>
@ -144,8 +146,8 @@
</StackLayout>
</Grid>-->
<skia:SKCanvasView
x:Name="canvasView"
PaintSurface="OnCanvasViewPaintSurface"
@ -171,7 +173,6 @@
<!--<StackLayout>
<StackLayout
Orientation="Vertical">

@ -9,6 +9,7 @@ using System.IO;
using System.Reflection;
using SkiaSharp.Views.Forms;
using TouchTracking;
using Xamarin.Essentials;
namespace TheGameExtreme.view
{
@ -20,7 +21,7 @@ namespace TheGameExtreme.view
private bool isFirst = true;
private Main viewmodel;
private List<SKRect> stacks = new List<SKRect>();
Button button = new Button();
Button button;
List<string> playersNames;
@ -29,6 +30,7 @@ namespace TheGameExtreme.view
Dictionary<long, TouchManipulationBitmap> bitmapDictionary = new Dictionary<long, TouchManipulationBitmap>();
public MainPage(List<string> playersNames)
{
this.playersNames = playersNames;
@ -36,29 +38,26 @@ namespace TheGameExtreme.view
InitializeComponent();
NavigationPage.SetHasNavigationBar(this, false);
Assembly assembly = GetType().GetTypeInfo().Assembly;
//Assembly assembly = GetType().GetTypeInfo().Assembly;
string[] resourceIDs = assembly.GetManifestResourceNames();
////string[] resourceIDs = assembly.GetManifestResourceNames();
//string resourceID = "TheGameExtreme.Media.thegame.jpg";
SKPoint position = new SKPoint();
//SKPoint position = new SKPoint(100, (float)(DeviceDisplay.MainDisplayInfo.Height - 0.2 * DeviceDisplay.MainDisplayInfo.Height));
foreach (string resourceID in resourceIDs)
{
if (resourceID.EndsWith(".png") ||
resourceID.EndsWith(".jpg"))
{
using (Stream stream = assembly.GetManifestResourceStream(resourceID))
{
SKBitmap bitmap = SKBitmap.Decode(stream);
bitmapCollection.Add(new TouchManipulationBitmap(bitmap)
{
Matrix = SKMatrix.MakeTranslation(position.X, position.Y),
});
position.X += 100;
position.Y += 100;
}
}
}
//for (int i = 0; i < 8; i++)
//{
// using (Stream stream = assembly.GetManifestResourceStream(resourceID))
// {
// SKBitmap bitmap = SKBitmap.Decode(stream).Resize(new SKImageInfo(225, 225), SKFilterQuality.High);
// bitmapCollection.Add(new TouchManipulationBitmap(bitmap)
// {
// Matrix = SKMatrix.MakeTranslation(position.X, position.Y - bitmap.Height),
// });
// position.X += bitmap.Width + 50;
// }
//}
//stacks.Add(checkbox0);
@ -74,15 +73,26 @@ namespace TheGameExtreme.view
//viewmodel.PlayerChanged += OnPlayerChanged;
//Alert.SetBinding(Label.TextProperty, new Binding("Alert", source: viewmodel));
viewmodel.AlertChanged += OnAlertChanged;
pseudo.SetBinding(Label.TextProperty, new Binding("Pseudo", source: viewmodel));
inflateHand();
}
private void OnAlertChanged(object sender, EventArgs args)
{
if (viewmodel.Alert != null)
{
DisplayAlert("", viewmodel.Alert, "OK");
viewmodel.Alert = null;
}
}
void OnCanvasViewPaintSurface(object sender, SKPaintSurfaceEventArgs args) // Faire plusieurs canvas
public void OnCanvasViewPaintSurface(object sender, SKPaintSurfaceEventArgs args) // Faire plusieurs canvas
{
SKCanvas canvas = args.Surface.Canvas;
@ -94,7 +104,7 @@ namespace TheGameExtreme.view
}
}
void OnTouchEffectAction(object sender, TouchActionEventArgs args)
public void OnTouchEffectAction(object sender, TouchActionEventArgs args)
{
// Convert Xamarin.Forms point to pixels
TouchTrackingPoint pt = args.Location;
@ -146,7 +156,7 @@ namespace TheGameExtreme.view
}
}
void OnTouchModePickerSelectedIndexChanged(object sender, EventArgs args)
public void OnTouchModePickerSelectedIndexChanged(object sender, EventArgs args)
{
if (bitmap != null)
{
@ -163,10 +173,10 @@ namespace TheGameExtreme.view
private void OnPlayerChanged(object sender, PlayerChangedEventArgs args)
{
inflateHand();
}
//private void OnPlayerChanged(object sender, PlayerChangedEventArgs args)
//{
// inflateHand();
//}
private void inflateHand()
{
@ -179,58 +189,78 @@ namespace TheGameExtreme.view
// Hand.Children.Add(card);
//}
for(int i = 0; i < playersNames.Count; i++)
bitmapCollection.Clear();
Assembly assembly = GetType().GetTypeInfo().Assembly;
string resourceID = "TheGameExtreme.Media.thegame.jpg";
SKPoint position = new SKPoint(100, (float)(DeviceDisplay.MainDisplayInfo.Height - 0.2 * DeviceDisplay.MainDisplayInfo.Height));
for (int i = 0; i < viewmodel.CurrentHand.Count; i++)
{
using (Stream stream = assembly.GetManifestResourceStream(resourceID))
{
SKBitmap bitmap = SKBitmap.Decode(stream).Resize(new SKImageInfo(225, 225), SKFilterQuality.High);
bitmapCollection.Add(new TouchManipulationBitmap(bitmap)
{
Matrix = SKMatrix.MakeTranslation(position.X, position.Y - bitmap.Height),
});
position.X += bitmap.Width + 50;
}
}
}
/*
private void OnBindingChanged(object sender, TopRangeChangedEventArgs args)
{
switch (args.NumStackChanged)
{
case 0:
pile0.Text = args.NewTopRangeCard.Value.ToString();
break;
case 1:
pile1.Text = args.NewTopRangeCard.Value.ToString();
break;
case 2:
pile2.Text = args.NewTopRangeCard.Value.ToString();
break;
case 3:
pile3.Text = args.NewTopRangeCard.Value.ToString();
break;
}
for (int i = 0; i < Hand.Children.Count; i++)
{
Button b = Hand.Children[i] as Button;
if (String.Equals(b.Text,args.NewTopRangeCard.Value.ToString()))
{
Hand.Children.RemoveAt(i);
break;
}
}
//switch (args.NumStackChanged)
//{
// case 0:
// pile0.Text = args.NewTopRangeCard.Value.ToString();
// break;
// case 1:
// pile1.Text = args.NewTopRangeCard.Value.ToString();
// break;
// case 2:
// pile2.Text = args.NewTopRangeCard.Value.ToString();
// break;
// case 3:
// pile3.Text = args.NewTopRangeCard.Value.ToString();
// break;
//}
//for (int i = 0; i < Hand.Children.Count; i++)
//{
// Button b = Hand.Children[i] as Button;
// if (String.Equals(b.Text,args.NewTopRangeCard.Value.ToString()))
// {
// Hand.Children.RemoveAt(i);
// break;
// }
//}
}
private void played(object sender, EventArgs args)
{
viewmodel.Alert = "";
int numStack = 0;
bool hasFind = false;
stacks.ForEach(checkbox =>
{
if (checkbox.IsChecked)
{
hasFind = true;
if (viewmodel.played(numStack, Convert.ToInt32((sender as Button).Text)))
{
botPanel.Children.Add(button);
}
}
//if (checkbox.IsChecked)
//{
// hasFind = true;
// if (viewmodel.played(numStack, Convert.ToInt32((sender as Button).Text)))
// {
// botPanel.Children.Add(button);
// }
//}
numStack += 1;
});
@ -241,23 +271,23 @@ namespace TheGameExtreme.view
}
}
private void radioButton(object sender, EventArgs args)
{
if (isFirst)
{
isFirst = false;
//private void radioButton(object sender, EventArgs args)
//{
// if (isFirst)
// {
// isFirst = false;
stacks.ForEach(checkbox =>
{
if (!checkbox.Equals(sender))
{
checkbox.IsChecked = false;
}
});
// stacks.ForEach(checkbox =>
// {
// if (!checkbox.Equals(sender))
// {
// checkbox.IsChecked = false;
// }
// });
isFirst = true;
}
}
// isFirst = true;
// }
//}
private void retry(object sender, EventArgs args)
{
@ -265,36 +295,35 @@ namespace TheGameExtreme.view
viewmodel.BindingChanged += OnBindingChanged;
Alert.SetBinding(Label.TextProperty, new Binding("Alert", source: viewmodel));
pseudo.SetBinding(Label.TextProperty, new Binding("Pseudo", source: viewmodel));
inflateHand();
pile0.Text = "1";
pile1.Text = "1";
pile2.Text = "100";
pile3.Text = "100";
//pile0.Text = "1";
//pile1.Text = "1";
//pile2.Text = "100";
//pile3.Text = "100";
botPanel.Children.Remove(button);
gameOption.Children.Clear();
gameOption.Children.Add(button);
}
private void endTurn(object sender, EventArgs args)
private void EndTurn(object sender, EventArgs args)
{
viewmodel.Alert = "";
if (viewmodel.endTurn())
{
botPanel.Children.Add(button);
button = (Button)gameOption.Children[0];
gameOption.Children.Clear();
Button retryButton = new Button();
retryButton.Text = "Retry";
retryButton.Clicked += retry;
gameOption.Children.Add(retryButton);
}
else
{
inflateHand();
}
}*/
/*private async void Back(object sender, EventArgs args)
{
await Navigation.PopToRootAsync();
}*/
}
private async void PlayToHome(object sender, EventArgs args)
{

@ -16,7 +16,7 @@ namespace TheGameExtreme.view
TouchManager = new TouchManipulationManager
{
Mode = TouchManipulationMode.ScaleRotate
Mode = TouchManipulationMode.IsotropicScale
};
}

@ -15,6 +15,7 @@ namespace TheGameExtreme.viewmodel
//public event EventHandler<PlayerChangedEventArgs> PlayerChanged;
public event EventHandler<TopRangeChangedEventArgs> BindingChanged;
public event EventHandler<EventArgs> AlertChanged;
public event PropertyChangedEventHandler PropertyChanged;
private List<PlayerVM> players = new List<PlayerVM>();
private string alert = "";
@ -24,7 +25,7 @@ namespace TheGameExtreme.viewmodel
set
{
alert = value;
OnPropertyChanged("Alert");
OnAlertChanged();
}
}
private string pseudo = "Pseudo";
@ -41,6 +42,10 @@ namespace TheGameExtreme.viewmodel
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(info));
}
protected virtual void OnAlertChanged()
{
AlertChanged?.Invoke(this, new EventArgs());
}
private GameManager gameManager;
public List<Card> CurrentHand { get; set; }

Loading…
Cancel
Save