|
|
|
@ -4,6 +4,11 @@ using System.ComponentModel;
|
|
|
|
|
using Xamarin.Forms;
|
|
|
|
|
using TheGameExtreme.model.@event;
|
|
|
|
|
using TheGameExtreme.viewmodel;
|
|
|
|
|
using SkiaSharp;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
using SkiaSharp.Views.Forms;
|
|
|
|
|
using TouchTracking;
|
|
|
|
|
|
|
|
|
|
namespace TheGameExtreme.view
|
|
|
|
|
{
|
|
|
|
@ -12,13 +17,20 @@ namespace TheGameExtreme.view
|
|
|
|
|
[DesignTimeVisible(false)]
|
|
|
|
|
public partial class MainPage : ContentPage
|
|
|
|
|
{
|
|
|
|
|
private bool isFirst = true;
|
|
|
|
|
private Main viewmodel;
|
|
|
|
|
private List<CheckBox> stacks = new List<CheckBox>();
|
|
|
|
|
Button button = new Button();
|
|
|
|
|
//private bool isFirst = true;
|
|
|
|
|
//private Main viewmodel;
|
|
|
|
|
//private List<CheckBox> stacks = new List<CheckBox>();
|
|
|
|
|
//Button button = new Button();
|
|
|
|
|
List<string> playersNames;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SKBitmap bitmap;
|
|
|
|
|
SKMatrix matrix = SKMatrix.MakeIdentity();
|
|
|
|
|
// Touch information
|
|
|
|
|
long touchId = -1;
|
|
|
|
|
SKPoint previousPoint;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public MainPage(List<string> playersNames)
|
|
|
|
|
{
|
|
|
|
|
this.playersNames = playersNames;
|
|
|
|
@ -26,6 +38,17 @@ namespace TheGameExtreme.view
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
NavigationPage.SetHasNavigationBar(this, false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
string resourceID = "TheGameExtreme.Media.thegame.jpg";
|
|
|
|
|
Assembly assembly = GetType().GetTypeInfo().Assembly;
|
|
|
|
|
|
|
|
|
|
using (Stream stream = assembly.GetManifestResourceStream(resourceID))
|
|
|
|
|
{
|
|
|
|
|
bitmap = SKBitmap.Decode(stream);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*stacks.Add(checkbox0);
|
|
|
|
|
stacks.Add(checkbox1);
|
|
|
|
|
stacks.Add(checkbox2);
|
|
|
|
@ -45,6 +68,72 @@ namespace TheGameExtreme.view
|
|
|
|
|
inflateHand();*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void OnCanvasViewPaintSurface(object sender, SKPaintSurfaceEventArgs args)
|
|
|
|
|
{
|
|
|
|
|
SKImageInfo info = args.Info;
|
|
|
|
|
SKSurface surface = args.Surface;
|
|
|
|
|
SKCanvas canvas = surface.Canvas;
|
|
|
|
|
|
|
|
|
|
canvas.Clear();
|
|
|
|
|
|
|
|
|
|
// Display the bitmap
|
|
|
|
|
canvas.SetMatrix(matrix);
|
|
|
|
|
canvas.DrawBitmap(bitmap, new SKPoint());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void OnTouchEffectAction(object sender, TouchActionEventArgs args)
|
|
|
|
|
{
|
|
|
|
|
// Convert Xamarin.Forms point to pixels
|
|
|
|
|
TouchTrackingPoint pt = args.Location;
|
|
|
|
|
SKPoint point =
|
|
|
|
|
new SKPoint((float)(canvasView.CanvasSize.Width * pt.X / canvasView.Width),
|
|
|
|
|
(float)(canvasView.CanvasSize.Height * pt.Y / canvasView.Height));
|
|
|
|
|
|
|
|
|
|
switch (args.Type)
|
|
|
|
|
{
|
|
|
|
|
case TouchActionType.Pressed:
|
|
|
|
|
// Find transformed bitmap rectangle
|
|
|
|
|
SKRect rect = new SKRect(0, 0, bitmap.Width, bitmap.Height);
|
|
|
|
|
rect = matrix.MapRect(rect);
|
|
|
|
|
|
|
|
|
|
// Determine if the touch was within that rectangle
|
|
|
|
|
if (rect.Contains(point))
|
|
|
|
|
{
|
|
|
|
|
touchId = args.Id;
|
|
|
|
|
previousPoint = point;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case TouchActionType.Moved:
|
|
|
|
|
if (touchId == args.Id)
|
|
|
|
|
{
|
|
|
|
|
// Adjust the matrix for the new position
|
|
|
|
|
matrix.TransX += point.X - previousPoint.X;
|
|
|
|
|
matrix.TransY += point.Y - previousPoint.Y;
|
|
|
|
|
previousPoint = point;
|
|
|
|
|
canvasView.InvalidateSurface();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case TouchActionType.Released:
|
|
|
|
|
case TouchActionType.Cancelled:
|
|
|
|
|
touchId = -1;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//private void OnPlayerChanged(object sender, PlayerChangedEventArgs args)
|
|
|
|
|
//{
|
|
|
|
|
// inflateHand();
|
|
|
|
|