using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using TheGameExtreme.model; using TheGameExtreme.model.manager; using Xamarin.Forms; using Xamarin.Forms.Xaml; using TheGameExtreme.model.@event; using TheGameExtreme.viewmodel; namespace TheGameExtreme { // 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 Main viewmodel; public MainPage() { InitializeComponent(); viewmodel = new Main(); viewmodel.BindingChanged += OnBindingChanged; Alert.SetBinding(Label.TextProperty, new Binding("Alert", source: viewmodel)); inflateHand(); //pile0.SetBinding(Label.TextProperty, new Binding("Stack0", source: viewmodel)); //pile1.SetBinding(Label.TextProperty, new Binding("Stack1", source: viewmodel)); //pile2.SetBinding(Label.TextProperty, new Binding("Stack2", source: viewmodel)); //pile3.SetBinding(Label.TextProperty, new Binding("Stack3", source: viewmodel)); //card1.SetBinding(Button.TextProperty, new Binding("ValueCard1", source: viewmodel)); //card2.SetBinding(Button.TextProperty, new Binding("ValueCard2", source: viewmodel)); //card3.SetBinding(Button.TextProperty, new Binding("ValueCard3", source: viewmodel)); //card4.SetBinding(Button.TextProperty, new Binding("ValueCard4", source: viewmodel)); //card5.SetBinding(Button.TextProperty, new Binding("ValueCard5", source: viewmodel)); //card6.SetBinding(Button.TextProperty, new Binding("ValueCard6", source: viewmodel)); //card7.SetBinding(Button.TextProperty, new Binding("ValueCard7", source: viewmodel)); } 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; if (checkbox0.IsChecked) { numStack = 0; } else if (checkbox1.IsChecked) { numStack = 1; } else if (checkbox2.IsChecked) { numStack = 2; } else if (checkbox3.IsChecked) { numStack = 3; } else { viewmodel.Alert = "Aucune pile selectionné! Veuillez séléctionner une pile."; return; } viewmodel.played(numStack, Convert.ToInt32((sender as Button).Text)); } private void endTurn(object sender, EventArgs args) { viewmodel.endTurn(); inflateHand(); } } }