using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using TheGameExtreme.model; using TheGameExtreme.model.@event; using TheGameExtreme.model.manager; namespace TheGameExtreme.viewmodel { public class Main : INotifyPropertyChanged { public event EventHandler BindingChanged; public event PropertyChangedEventHandler PropertyChanged; private string alert = ""; public String Alert { get { return alert; } set { alert = value; OnPropertyChanged("Alert"); } } protected virtual void OnPropertyChanged(string info) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(info)); } private GameManager gameManager; public List CurrentHand { get; set; } private ObservableCollection> ListOrderedStacks; public Main() { gameManager = new SoloGameManager(2, new List { "Clément", "Baptiste" }) ; // Donner le nom des joueurs gameManager.TopRangeChanged += OnTopRangeChanged; gameManager.PlayerChanged += OnPlayerChanged; CurrentHand = gameManager.CurrentHand; ListOrderedStacks = new ObservableCollection>(gameManager.ListOrderedStacks); } public Main() { } protected internal void OnPlayerChanged(object source, PlayerChangedEventArgs args) { CurrentHand = args.NewCurrentHand; } public void OnTopRangeChanged(object source, TopRangeChangedEventArgs args) { BindingChanged?.Invoke(this, args); } public void played(int numStack, int valueCard) { if (gameManager.isCanPlay()) { playOneCard(numStack, valueCard); } else { Alert = "Le joueur n'a plus de carte dans sa main!"; // Faire un toast } } private void playOneCard(int numStack, int valueCard) { try { gameManager.joue(valueCard, numStack); } catch(Exception e) { // Faire un toast Alert = e.Message; } } public void endTurn() { gameManager.endTurn(); } } }