You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
176 lines
5.0 KiB
176 lines
5.0 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using Xamarin.Forms;
|
|
using TheGameExtreme.model.@event;
|
|
using TheGameExtreme.viewmodel;
|
|
|
|
namespace TheGameExtreme.view
|
|
{
|
|
// Learn more about making custom code visible in the Xamarin.Forms previewer
|
|
// by visiting https://aka.ms/xamarinforms-previewer
|
|
[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();
|
|
List<string> playersNames;
|
|
|
|
|
|
public MainPage(List<string> playersNames)
|
|
{
|
|
this.playersNames = playersNames;
|
|
|
|
InitializeComponent();
|
|
NavigationPage.SetHasNavigationBar(this, false);
|
|
|
|
stacks.Add(checkbox0);
|
|
stacks.Add(checkbox1);
|
|
stacks.Add(checkbox2);
|
|
stacks.Add(checkbox3);
|
|
button.Text = "Retry";
|
|
button.Clicked += retry;
|
|
|
|
viewmodel = new Main(playersNames);
|
|
|
|
viewmodel.BindingChanged += OnBindingChanged;
|
|
|
|
//viewmodel.PlayerChanged += OnPlayerChanged;
|
|
|
|
Alert.SetBinding(Label.TextProperty, new Binding("Alert", source: viewmodel));
|
|
pseudo.SetBinding(Label.TextProperty, new Binding("Pseudo", source: viewmodel));
|
|
|
|
inflateHand();
|
|
}
|
|
|
|
//private void OnPlayerChanged(object sender, PlayerChangedEventArgs args)
|
|
//{
|
|
// inflateHand();
|
|
//}
|
|
|
|
private void inflateHand()
|
|
{
|
|
Hand.Children.Clear();
|
|
for (int i = 0; i < viewmodel.CurrentHand.Count; i++)
|
|
{
|
|
Button card = new Button();
|
|
card.Text = viewmodel.CurrentHand[i].Value.ToString();
|
|
card.Clicked += played;
|
|
Hand.Children.Add(card);
|
|
}
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
numStack += 1;
|
|
});
|
|
|
|
if (!hasFind)
|
|
{
|
|
viewmodel.Alert = "Aucune pile selectionné! Veuillez séléctionner une pile.";
|
|
return;
|
|
}
|
|
}
|
|
|
|
private void radioButton(object sender, EventArgs args)
|
|
{
|
|
if (isFirst)
|
|
{
|
|
isFirst = false;
|
|
|
|
stacks.ForEach(checkbox =>
|
|
{
|
|
if (!checkbox.Equals(sender))
|
|
{
|
|
checkbox.IsChecked = false;
|
|
}
|
|
});
|
|
|
|
isFirst = true;
|
|
}
|
|
}
|
|
|
|
private void retry(object sender, EventArgs args)
|
|
{
|
|
viewmodel = new Main(playersNames);
|
|
|
|
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";
|
|
|
|
botPanel.Children.Remove(button);
|
|
}
|
|
|
|
private void endTurn(object sender, EventArgs args)
|
|
{
|
|
viewmodel.Alert = "";
|
|
if (viewmodel.endTurn())
|
|
{
|
|
botPanel.Children.Add(button);
|
|
}
|
|
else
|
|
{
|
|
inflateHand();
|
|
}
|
|
}
|
|
|
|
private async void Back(object sender, EventArgs args)
|
|
{
|
|
await Navigation.PopToRootAsync();
|
|
}
|
|
}
|
|
}
|