/// <summary>
        /// Constructor
        /// </summary>
        /// <param name="sessie1">simulatiespeler 1</param>
        /// <param name="sessie2">simulatiespeler 2</param>
        public BordViewModel(ISpelerSessie sessie1, ISpelerSessie sessie2)
        {
            _speler1 = new SpelerViewModel(sessie1);
            _speler2 = new SpelerViewModel(sessie2);

            CreateAflegStapels();
            CreateTrekStapel(sessie1);
        }
        public SpelerViewModel(ISpelerSessie sessie)
        {
            _sessie = sessie;
            _naam = sessie.Naam;
            this.Score = sessie.GetScore();

            this.Beurt = new BeurtViewModel();

            CreateHand();
            CreateExpedities();
        }
        private void CreateSessies()
        {
            BusinessFacade facade = BusinessFacade.GetInstance();

            //gekozen bot
            ISimulatieSpeler strategy1 = (ISimulatieSpeler)System.Activator.CreateInstance(_types[TegenstanderComboBox.SelectedIndex]);
            _sessie1 = facade.CreateSessie(strategy1.Naam, strategy1);
            //te ontwikkelen my bot
            ISimulatieSpeler strategy2 = new LostCitiesBot();
            _sessie2 = facade.CreateSessie(strategy2.Naam, strategy2);
        }
        public void VerwerkBeurt(ISpelerSessie sessie)
        {
            this.Beurt.Clear();

            if (!sessie.IsActievepeler())
            {
                _sessie = sessie;
                this.Score = sessie.GetScore();
                WijzigHand();
                WijzigExpedities();
                WijzigBeurt();
            }
        }
 /// <summary>
 /// Pas aflegstapels aan
 /// </summary>
 /// <param name="sessie1"></param>
 private void WijzigAflegStapels(ISpelerSessie sessie1)
 {
     //Om beurt te verwerken moet speler niet meer de actieve speler zijn
     if (!sessie1.IsActievepeler())
     {
         this.AflegstapelBlauw.VerwerkBeurt(sessie1);
         this.AflegstapelRood.VerwerkBeurt(sessie1);
         this.AflegstapelWit.VerwerkBeurt(sessie1);
         this.AflegstapelGroen.VerwerkBeurt(sessie1);
         this.AflegstapelGeel.VerwerkBeurt(sessie1);
     }
     else
     {
         this.AflegstapelBlauw.VerwerkBeurt(sessie1);
         this.AflegstapelRood.VerwerkBeurt(sessie1);
         this.AflegstapelWit.VerwerkBeurt(sessie1);
         this.AflegstapelGroen.VerwerkBeurt(sessie1);
         this.AflegstapelGeel.VerwerkBeurt(sessie1);
     }
 }
 /// <summary>
 /// Maak de trekstapel aan
 /// </summary>
 /// <param name="sessie"></param>
 private void CreateTrekStapel(ISpelerSessie sessie)
 {
     _trekStapel = new TrekStapelViewModel();
      WijzigTrekStapel(sessie);
 }
 /// <summary>
 /// Pas trekstapel aan
 /// </summary>
 /// <param name="sessie1"></param>
 public void WijzigTrekStapel(ISpelerSessie sessie1)
 {
     //Om beurt te verwerken moet speler niet meer de actieve speler zijn
     if (!sessie1.IsActievepeler())
     {
         this.TrekStapel.VerwerkBeurt(sessie1.GetAantalKaartenOpTrekstapel());
     }
     else
     {
         this.TrekStapel.VerwerkBeurt(sessie1.GetAantalKaartenOpTrekstapel());
     }
 }
        /// <summary>
        // Verwerk de beurt op het bord
        /// </summary>
        /// <param name="sessie1">simulatiespeler 1</param>
        /// <param name="sessie2">simulatiespeler 2</param>
        public void VerwerkBeurt(ISpelerSessie sessie1, ISpelerSessie sessie2)
        {
            ClearBeurt(_speler1);
            ClearBeurt(_speler2);

            //Om beurt te verwerken moet speler niet meer de actieve speler zijn
            if (!sessie1.IsActievepeler())
            {
                _speler1.VerwerkBeurt(sessie1);
            }
            else
            {
                _speler2.VerwerkBeurt(sessie2);
            }

            WijzigAflegStapels(sessie1);
            WijzigTrekStapel(sessie1);

            if (_trekStapel.AantalKaarten == 0)
            {

            }
        }
        /// <summary>
        /// Leg de eerste kaart in de hand aan op expeditie en pak een kaart
        /// </summary>
        /// <param name="sessie">spelersessie</param>
        /// <returns>De verwachte score van de expeditie</returns>
        private int GeefVerwachteScoreEersteBeurt(ISpelerSessie sessie)
        {
            IStapel stapel = sessie.GetHand();
            int verwachteScore = -20;
            if (stapel[0] is IExpeditieKaart) //er is een score
            {
                verwachteScore += ((IExpeditieKaart)stapel[0]).Waarde;
            }
            sessie.LegKaart(0, BordType.ExpeditieBord);
            sessie.PakVanTrekStapel();

            return verwachteScore;
        }
 /// <summary>
 /// Verwerk beurt in de Aflegstapel
 /// </summary>
 /// <param name="sessie">de sessie waarin de aflegstapels zijn opgenomen</param>
 public void VerwerkBeurt(ISpelerSessie sessie)
 {
     this.AantalKaarten = sessie.GetAantalKaartenOpAflegstapel(_kleur);
     if (this.AantalKaarten == 0)
     {
         this.BovensteKaart = null;
     }
     else
     {
         this.BovensteKaart = new KaartViewModel(sessie.GetAflegBord().GetAflegStapel(_kleur).GetBovensteKaart());
     }
 }
 public SpelerSessieEventTester(ISpelerSessie sessie1, ISpelerSessie sessie2)
 {
     sessie1.BeurtWissel+=new EventHandler(sessie1_BeurtWissel);
     sessie2.BeurtWissel+=new EventHandler(sessie2_BeurtWissel);
 }