diff --git a/TheGameExtreme/Preparateur.cs b/TheGameExtreme/Preparateur.cs new file mode 100644 index 0000000..283831f --- /dev/null +++ b/TheGameExtreme/Preparateur.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using TheGameExtreme.model; +using TheGameExtreme.model.gameActions.classic; + +namespace TheGameExtreme +{ + public class Parametreur + { + + public GameMode GameMode { get; set; } + public List players = new List(); + public int NbPlayer { get; set; } + + public Parametreur(GameMode gameMode) + { + GameMode = gameMode; + } + + public void Prepare() + { + NbPlayer = players.Count; + GameMode.load(NbPlayer, players); + } + + public void AddPlayer(Player player) + { + if (player != null) + { + players.Add(player); + } + } + } +} diff --git a/TheGameExtreme/TheGameExtreme.csproj b/TheGameExtreme/TheGameExtreme.csproj index ee43505..ecbb657 100644 --- a/TheGameExtreme/TheGameExtreme.csproj +++ b/TheGameExtreme/TheGameExtreme.csproj @@ -14,11 +14,7 @@ - - - - diff --git a/TheGameExtreme/model/Card/Card.cs b/TheGameExtreme/model/Card/Card.cs index d5931d0..cd06e34 100644 --- a/TheGameExtreme/model/Card/Card.cs +++ b/TheGameExtreme/model/Card/Card.cs @@ -3,23 +3,23 @@ using System.ComponentModel; namespace TheGameExtreme.model.card { - public abstract class Card : INotifyPropertyChanged + public abstract class Card // : INotifyPropertyChanged { - public event PropertyChangedEventHandler PropertyChanged; + //public event PropertyChangedEventHandler PropertyChanged; private int value; public int Value { get { return value; } set { this.value = value; - OnPropertyChange("Value"); + //OnPropertyChange("Value"); } } - private void OnPropertyChange(string v) - { - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(v)); - } + //private void OnPropertyChange(string v) + //{ + // PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(v)); + //} public Card(int value) diff --git a/TheGameExtreme/model/gameActions/classic/GameMode.cs b/TheGameExtreme/model/gameActions/classic/GameMode.cs index 0c10966..03596a9 100644 --- a/TheGameExtreme/model/gameActions/classic/GameMode.cs +++ b/TheGameExtreme/model/gameActions/classic/GameMode.cs @@ -123,7 +123,7 @@ namespace TheGameExtreme.model.gameActions.classic nbCardAtBeginOfTurn = currentHand.Count; CurrentCardPlayed.Clear(); - OnPlayerChanged(new PlayerChangedEventArgs(currentHand, player.Pseudo)); + OnPlayerChanged(null); return false; } else diff --git a/TheGameExtreme/model/manager/GameManager.cs b/TheGameExtreme/model/manager/GameManager.cs index 71ab396..bff823f 100644 --- a/TheGameExtreme/model/manager/GameManager.cs +++ b/TheGameExtreme/model/manager/GameManager.cs @@ -13,12 +13,8 @@ namespace TheGameExtreme.model.manager /* GameMaster implémente un mode de jeu (classe fille de gameMode qui connait les actions a effectué en fonction du mode de jeu */ - protected GameMode gameMode; - public readonly int nbPlayer; - protected List players = new List(); + protected Parametreur preparateur; public Piles ListOrderedStacks { get; set; } - //protected int nbCardAtBeginOfTurn; - protected int nbMaxCard; protected List CurrentCardPlayed = new List(); public String EndMessage { get; set; } protected int currentIndexPlayer; @@ -48,55 +44,50 @@ namespace TheGameExtreme.model.manager { TopRangeChanged?.Invoke(this, args); } - protected internal void OnPlayerChanged(PlayerChangedEventArgs args) + protected internal void OnPlayerChanged(object source, PlayerChangedEventArgs args) { currentIndexPlayer += 1; - if (currentIndexPlayer == players.Count) + if (currentIndexPlayer == preparateur.players.Count) { currentIndexPlayer = 0; } - CurrentHand = players[currentIndexPlayer].getCardList(); - PlayerChanged?.Invoke(this, args); + CurrentHand = preparateur.players[currentIndexPlayer].getCardList(); + PlayerChanged?.Invoke(this, new PlayerChangedEventArgs(CurrentHand, preparateur.players[currentIndexPlayer].Pseudo)); } #endregion - //protected bool win = true; - //public String EndMessage { get; set; } - - - - protected GameManager(List playersNames, GameMode gameMode) + protected GameManager(Parametreur parametreur) { - nbPlayer = playersNames.Count; - playersNames.ForEach(playerName => players.Add(new Player(playerName))); + this.preparateur = parametreur; + + parametreur.Prepare(); - this.gameMode = gameMode; - gameMode.load(nbPlayer, players); + parametreur.GameMode.TopRangeChanged += OnTopRangeChanged; - gameMode.TopRangeChanged += OnTopRangeChanged; + parametreur.GameMode.PlayerChanged += OnPlayerChanged; - CurrentHand = players[0].getCardList(); + CurrentHand = parametreur.players[0].getCardList(); } public void joue(int valueCard, int orderedStackSelected) { - gameMode.playCard(valueCard, currentHand, orderedStackSelected, players[currentIndexPlayer], CurrentCardPlayed); // Mettre le joueur actif - EndMessage = gameMode.Message; + preparateur.GameMode.playCard(valueCard, currentHand, orderedStackSelected, preparateur.players[currentIndexPlayer], CurrentCardPlayed); // Mettre le joueur actif + EndMessage = preparateur.GameMode.Message; } public bool endTurn() { - if(gameMode.endTurn(currentHand, CurrentCardPlayed, players[currentIndexPlayer])) + if(preparateur.GameMode.endTurn(currentHand, CurrentCardPlayed, preparateur.players[currentIndexPlayer])) { - EndMessage = gameMode.Message; + EndMessage = preparateur.GameMode.Message; if (isEndGame()) { - EndMessage = gameMode.Message; + EndMessage = preparateur.GameMode.Message; return true; } else @@ -112,7 +103,7 @@ namespace TheGameExtreme.model.manager private bool isEndGame() { - return gameMode.isEndGame(currentHand); + return preparateur.GameMode.isEndGame(currentHand); } diff --git a/TheGameExtreme/model/manager/MultiplayerGameManager.cs b/TheGameExtreme/model/manager/MultiplayerGameManager.cs index 46dbe13..90bd81c 100644 --- a/TheGameExtreme/model/manager/MultiplayerGameManager.cs +++ b/TheGameExtreme/model/manager/MultiplayerGameManager.cs @@ -6,7 +6,7 @@ namespace TheGameExtreme.model.manager { public abstract class MultiplayerGameManager : GameManager { - protected MultiplayerGameManager(List players, GameMode gameMode) : base(players, gameMode) + protected MultiplayerGameManager(Parametreur parametreur) : base(parametreur) { } } diff --git a/TheGameExtreme/model/manager/SoloGameManager.cs b/TheGameExtreme/model/manager/SoloGameManager.cs index 87f2bd6..d3e7204 100644 --- a/TheGameExtreme/model/manager/SoloGameManager.cs +++ b/TheGameExtreme/model/manager/SoloGameManager.cs @@ -7,8 +7,8 @@ namespace TheGameExtreme.model.manager public class SoloGameManager : GameManager { - public SoloGameManager(List players, GameMode gameMode) - : base(players, gameMode) + public SoloGameManager(Parametreur parametreur) + : base(parametreur) { } diff --git a/TheGameExtreme/model/manager/multiplayer/LocalGameManager.cs b/TheGameExtreme/model/manager/multiplayer/LocalGameManager.cs index 648b211..ac880d6 100644 --- a/TheGameExtreme/model/manager/multiplayer/LocalGameManager.cs +++ b/TheGameExtreme/model/manager/multiplayer/LocalGameManager.cs @@ -7,7 +7,7 @@ namespace TheGameExtreme.model.manager { public class LocalGameManager : MultiplayerGameManager { - public LocalGameManager(List players, GameMode gameMode) : base(players, gameMode) + public LocalGameManager(Parametreur parametreur) : base(parametreur) { } diff --git a/TheGameExtreme/model/manager/multiplayer/RemoteGameManager.cs b/TheGameExtreme/model/manager/multiplayer/RemoteGameManager.cs index d950c83..dd30116 100644 --- a/TheGameExtreme/model/manager/multiplayer/RemoteGameManager.cs +++ b/TheGameExtreme/model/manager/multiplayer/RemoteGameManager.cs @@ -7,7 +7,7 @@ namespace TheGameExtreme.model.manager.multiplayer { public class RemoteGameManager : MultiplayerGameManager { - public RemoteGameManager(List players, GameMode gameMode) : base(players, gameMode) + public RemoteGameManager(Parametreur parametreur) : base(parametreur) { } diff --git a/TheGameExtreme/model/rule/InfinitEffect.cs b/TheGameExtreme/model/rule/InfinitEffect.cs deleted file mode 100644 index c7a4896..0000000 --- a/TheGameExtreme/model/rule/InfinitEffect.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; -namespace TheGameExtreme.model.rule -{ - public class InfinitEffect : Rule - { - public InfinitEffect() - { - } - } -} diff --git a/TheGameExtreme/model/rule/RapidEffect.cs b/TheGameExtreme/model/rule/RapidEffect.cs deleted file mode 100644 index ddf2d0e..0000000 --- a/TheGameExtreme/model/rule/RapidEffect.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -namespace TheGameExtreme.model.rule -{ - public class RapidEffect : Rule - { - public RapidEffect() - { - } - - // Checker les cartes du haut de pile et celle joué. - - //protected bool effectLose() - //{ - // foreach (Stack orderedStack in ListOrderedStacks) - // { - // if (Equals(orderedStack.Peek().getName(), EndGameCard.CARD_ENDGAME)) - // { - // return true; - // } - // } - // return false; - //} - - - //foreach (Card cardPlayed in CurrentCardPlayed) - //{ - // if (Equals(cardPlayed.GetType(), ThreeCard.CARD_THREE)) - // { - // if ((nbCardAtBeginOfTurn - CurrentHand.Count) < 3) - // { - // return true; - // } - // } - //} - - - } -} diff --git a/TheGameExtreme/model/rule/Rule.cs b/TheGameExtreme/model/rule/Rule.cs deleted file mode 100644 index 09f55ad..0000000 --- a/TheGameExtreme/model/rule/Rule.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using TheGameExtreme.model.card; - -namespace TheGameExtreme.model.rule -{ - public abstract class Rule - { - - public bool Test() - { - throw new NotImplementedException(); - } - - } -} diff --git a/TheGameExtreme/model/rule/beforeEndTurnRules/BeforeEndTurnRule.cs b/TheGameExtreme/model/rule/beforeEndTurnRules/BeforeEndTurnRule.cs deleted file mode 100644 index fc4f267..0000000 --- a/TheGameExtreme/model/rule/beforeEndTurnRules/BeforeEndTurnRule.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using TheGameExtreme.model.card; - -namespace TheGameExtreme.model.rule.beforeEndTurnRules -{ - public abstract class BeforeEndTurnRule : Rule - { - - public abstract bool Test(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand); - - } -} diff --git a/TheGameExtreme/model/rule/beforeEndTurnRules/NbCardPlay.cs b/TheGameExtreme/model/rule/beforeEndTurnRules/NbCardPlay.cs deleted file mode 100644 index bc8faa4..0000000 --- a/TheGameExtreme/model/rule/beforeEndTurnRules/NbCardPlay.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using TheGameExtreme.model.card; - -namespace TheGameExtreme.model.rule.beforeEndTurnRules -{ - public class NbCardPlay : BeforeEndTurnRule - { - - override public bool Test(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand) - { - if (CurrentHand.Count == 0) - { - return true; - } - if ((nbCardAtBeginOfTurn - CurrentHand.Count) < 2) - { - return false; - } - return true; - } - - } -} diff --git a/TheGameExtreme/model/rule/endTurnRules/CompleteHand.cs b/TheGameExtreme/model/rule/endTurnRules/CompleteHand.cs deleted file mode 100644 index fef0c49..0000000 --- a/TheGameExtreme/model/rule/endTurnRules/CompleteHand.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using TheGameExtreme.model.card; - -namespace TheGameExtreme.model.rule.endTurnRules -{ - public class CompleteHand : EndTurnRule - { - - public static readonly String REGLE_COMPLETEHAND = "Complete Hand"; - - public override bool Test(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand) - { - // Si carte qui fait piocher que d'un, vérifier la bonne pioche (penser si elle vient d'être recouverte) - // Sinon - if (nbCardAtBeginOfTurn == CurrentCardPlayed.Count) - { - return true; - } - return false; - } - - } -} diff --git a/TheGameExtreme/model/rule/endTurnRules/EndGame.cs b/TheGameExtreme/model/rule/endTurnRules/EndGame.cs deleted file mode 100644 index 88e20f4..0000000 --- a/TheGameExtreme/model/rule/endTurnRules/EndGame.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System; -using System.Collections.Generic; -using TheGameExtreme.model.card; -using TheGameExtreme.model.card.rapidCard; - -namespace TheGameExtreme.model.rule.endTurnRules -{ - public class EndGame : EndTurnRule - { - - public static readonly String REGLE_ENDGAME = "End Game"; - - public List> ListOrderedStacks { get; set; } - - public EndGame(List> ListOrderedStacks) - { - this.ListOrderedStacks = ListOrderedStacks; - } - - public override bool Test(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand) - { - if (CurrentHand.Count != 0) - { - List playableCard = new List(); - tryToFindSoluce(playableCard, CurrentHand); - return testEndGame(playableCard); - } - return false; - } - - protected void tryToFindSoluce(List playableCard, List CurrentHand) - { - CurrentHand.ForEach(card => - { - if (card.Value > ListOrderedStacks[0].Peek().Value || card.Value > ListOrderedStacks[1].Peek().Value || card.Value < ListOrderedStacks[2].Peek().Value || card.Value < ListOrderedStacks[3].Peek().Value) - { - playableCard.Add(card); - } - }); - } - - protected bool testEndGame(List playableCard) - { - if (playableCard.Count == 2) - { - foreach (Card c in playableCard) - { - if (Equals(c.getName(), ThreeCard.CARD_THREE)) - { - return false; - } - } - } - else if (playableCard.Count < 2) - { - return false; - } - return true; - } - - } -} diff --git a/TheGameExtreme/model/rule/endTurnRules/EndTurnRule.cs b/TheGameExtreme/model/rule/endTurnRules/EndTurnRule.cs deleted file mode 100644 index d9670f7..0000000 --- a/TheGameExtreme/model/rule/endTurnRules/EndTurnRule.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using TheGameExtreme.model.card; - -namespace TheGameExtreme.model.rule.endTurnRules -{ - public abstract class EndTurnRule : Rule - { - - public abstract bool Test(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand); - - } -} diff --git a/TheGameExtreme/model/rule/endTurnRules/VoidDeck.cs b/TheGameExtreme/model/rule/endTurnRules/VoidDeck.cs deleted file mode 100644 index 397af2d..0000000 --- a/TheGameExtreme/model/rule/endTurnRules/VoidDeck.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using TheGameExtreme.model.card; - -namespace TheGameExtreme.model.rule.endTurnRules -{ - public class VoidDeck : EndTurnRule - { - - public static readonly String REGLE_VOIDDECK = "Void Deck"; - - public override bool Test(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand) - { - throw new NotImplementedException(); - } - } -} diff --git a/TheGameExtreme/model/rule/playRules/Ascendant.cs b/TheGameExtreme/model/rule/playRules/Ascendant.cs deleted file mode 100644 index 6069687..0000000 --- a/TheGameExtreme/model/rule/playRules/Ascendant.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; -using TheGameExtreme.model.card; - -namespace TheGameExtreme.model.rule.playRules -{ - public class Ascendant : PlayRule - { - - public static readonly String REGLE_ASCENDANT = "Ascendant"; - - override public bool Test(Card playedCard, Stack stack, bool bottomUp, List CurrentHand) - { - if (bottomUp && playedCard.Value > stack.Peek().Value) - { - return true; - } - return false; - } - - } -} diff --git a/TheGameExtreme/model/rule/playRules/Descendant.cs b/TheGameExtreme/model/rule/playRules/Descendant.cs deleted file mode 100644 index 4ebcfbc..0000000 --- a/TheGameExtreme/model/rule/playRules/Descendant.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using TheGameExtreme.model.card; - -namespace TheGameExtreme.model.rule.playRules -{ - public class Descendant : PlayRule - { - - public static readonly String REGLE_DESCENDANT = "Descendant"; - - override public bool Test(Card playedCard, Stack stack, bool bottomUp, List CurrentHand) - { - if (!bottomUp && playedCard.Value < stack.Peek().Value) - { - return true; - } - return false; - } - } -} \ No newline at end of file diff --git a/TheGameExtreme/model/rule/playRules/PasDeDix.cs b/TheGameExtreme/model/rule/playRules/PasDeDix.cs deleted file mode 100644 index 699a6fa..0000000 --- a/TheGameExtreme/model/rule/playRules/PasDeDix.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; -using TheGameExtreme.model.card; - -namespace TheGameExtreme.model.rule.playRules -{ - public class PasDeDix : PlayRule - { - - public static readonly String REGLE_PASDEDIX = "PasDeDix"; - - override public bool Test(Card playedCard, Stack stack, bool bottomUp, List CurrentHand) - { - if ((stack.Peek().Value + 10) == playedCard.Value || (stack.Peek().Value - 10) == playedCard.Value) - { - return true; - } - return false; - } - - } -} diff --git a/TheGameExtreme/model/rule/playRules/PlayRule.cs b/TheGameExtreme/model/rule/playRules/PlayRule.cs deleted file mode 100644 index 29289f2..0000000 --- a/TheGameExtreme/model/rule/playRules/PlayRule.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; -using System.Collections.Generic; -using TheGameExtreme.model.card; - -namespace TheGameExtreme.model.rule.playRules -{ - public abstract class PlayRule : Rule - { - public abstract bool Test(Card playedCard, Stack stack, bool bottomUp, List CurrentHand); - } -} diff --git a/TheGameExtreme/model/rule/playRules/VoidHand.cs b/TheGameExtreme/model/rule/playRules/VoidHand.cs deleted file mode 100644 index 88a1cc2..0000000 --- a/TheGameExtreme/model/rule/playRules/VoidHand.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; -using TheGameExtreme.model.card; - -namespace TheGameExtreme.model.rule.playRules -{ - public class VoidHand : PlayRule - { - - public static readonly String REGLE_VOIDHAND = "Void Hand"; - - override public bool Test(Card playedCard, Stack stack, bool bottomUp, List CurrentHand) - { - if (CurrentHand.Count == 0) - { - return false; - } - return true; - } - - } -} diff --git a/TheGameExtreme/view/MainPage.xaml.cs b/TheGameExtreme/view/MainPage.xaml.cs index 0468ab0..54cee72 100644 --- a/TheGameExtreme/view/MainPage.xaml.cs +++ b/TheGameExtreme/view/MainPage.xaml.cs @@ -33,12 +33,19 @@ namespace TheGameExtreme.view 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(); @@ -145,6 +152,7 @@ namespace TheGameExtreme.view private void endTurn(object sender, EventArgs args) { + viewmodel.Alert = ""; if (viewmodel.endTurn()) { botPanel.Children.Add(button); diff --git a/TheGameExtreme/viewmodel/CardVM.cs b/TheGameExtreme/viewmodel/CardVM.cs new file mode 100644 index 0000000..9416d8b --- /dev/null +++ b/TheGameExtreme/viewmodel/CardVM.cs @@ -0,0 +1,33 @@ +using System; +using System.ComponentModel; +using TheGameExtreme.model.card; + +namespace TheGameExtreme.viewmodel +{ + public class CardVM : INotifyPropertyChanged + { + + public event PropertyChangedEventHandler PropertyChanged; + public Card View { get; set; } + private int value; + public int Value { + get { return value; } + set + { + this.value = value; + OnPropertyChanged("Value"); + } + } + protected virtual void OnPropertyChanged(string info) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(info)); + } + + public CardVM(Card view) + { + View = view; + + Value = view.Value; + } + } +} diff --git a/TheGameExtreme/viewmodel/Main.cs b/TheGameExtreme/viewmodel/Main.cs index 0793d25..10a7c02 100644 --- a/TheGameExtreme/viewmodel/Main.cs +++ b/TheGameExtreme/viewmodel/Main.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; +using TheGameExtreme.model; using TheGameExtreme.model.card; using TheGameExtreme.model.@event; using TheGameExtreme.model.gameActions.classic; @@ -12,8 +13,10 @@ namespace TheGameExtreme.viewmodel public class Main : INotifyPropertyChanged { + //public event EventHandler PlayerChanged; public event EventHandler BindingChanged; public event PropertyChangedEventHandler PropertyChanged; + private List players = new List(); private string alert = ""; public String Alert { @@ -46,14 +49,20 @@ namespace TheGameExtreme.viewmodel public Main() { - gameManager = new SoloGameManager(new List { "Clément", "Baptiste" }, new GameMode()) ; // Donner le nom des joueurs + List playersNames = new List { "Clément", "Baptiste" }; + playersNames.ForEach(name => players.Add(new PlayerVM(new Player(name)))); + Parametreur parametreur = new Parametreur(new GameMode()); + players.ForEach(player => parametreur.AddPlayer(player.View)); + gameManager = new SoloGameManager(parametreur) ; // Donner le nom des joueurs - gameManager.TopRangeChanged += OnTopRangeChanged; + gameManager.TopRangeChanged += OnBindingChanged; gameManager.PlayerChanged += OnPlayerChanged; CurrentHand = gameManager.CurrentHand; + Pseudo = players[0].Pseudo; + //ListOrderedStacks = new ObservableCollection>(gameManager.ListOrderedStacks); } @@ -61,9 +70,10 @@ namespace TheGameExtreme.viewmodel { CurrentHand = args.NewCurrentHand; Pseudo = args.Pseudo; + //PlayerChanged?.Invoke(this, args); } - public void OnTopRangeChanged(object source, TopRangeChangedEventArgs args) + public void OnBindingChanged(object source, TopRangeChangedEventArgs args) { BindingChanged?.Invoke(this, args); } diff --git a/TheGameExtreme/viewmodel/PlayerVM.cs b/TheGameExtreme/viewmodel/PlayerVM.cs new file mode 100644 index 0000000..09f494b --- /dev/null +++ b/TheGameExtreme/viewmodel/PlayerVM.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using TheGameExtreme.model; +using TheGameExtreme.model.card; +using TheGameExtreme.model.@event; + +namespace TheGameExtreme.viewmodel +{ + public class PlayerVM + { + + public Player View { get; set; } + public string Pseudo { get; set; } + private List cardList = new List(); + //public event EventHandler HandCardChanged; + + public PlayerVM(Player view) + { + View = view; + + Pseudo = view.Pseudo; + view.getCardList().ForEach(card => cardList.Add(new CardVM(card))); + + View.HandCardChanged += OnHandCardChanged; + } + + private void OnHandCardChanged(object sender, HandCardChangedEventArgs args) + { + if (args.NewCard == null) + { + cardList.RemoveAt(args.Position); + } + else + { + cardList.Insert(args.Position, new CardVM(args.NewCard)); + } + } + + public void pioche(CardVM card) + { + View.pioche(card.View); + } + + public List getCardList() + { + return cardList; + } + } +}