private void popupVerwijderen(object sender, ElapsedEventArgs e)
        {
            int          playerIndex = pPlayerGroup.aanZet;
            MemoryPlayer player      = pPlayerGroup.players[playerIndex];
            PlayerBord   playerBord  = playerBords[playerIndex];

            playerBord.popupScore = "";
        }
        public void UpdateScore(string popupScore)
        {
            int          playerIndex = pPlayerGroup.aanZet;
            MemoryPlayer player      = pPlayerGroup.players[playerIndex];
            PlayerBord   playerBord  = playerBords[playerIndex];

            playerBord.popupScore = popupScore;
            playerBord.score      = player.score;

            // start timer die KaartenTerugLeggen aanroept
            popupTimer.Enabled = true;
        }
        private void gameTimerUpdate(object sender, ElapsedEventArgs e)
        {
            int          playerIndex = pPlayerGroup.aanZet;
            MemoryPlayer player      = pPlayerGroup.players[playerIndex];
            PlayerBord   playerBord  = playerBords[playerIndex];

            // update individuele speelijd in het player bord van de speeler
            TimeSpan playerSpeeltijd = new TimeSpan(0, 0, player.speeltijd++);

            playerBord.speeltijd = string.Format("{0}:{1:00}", (int)playerSpeeltijd.TotalMinutes, playerSpeeltijd.Seconds);

            // update de game timer in het midden van het game interface
            switch (pGameStatus.timerMode)
            {
            // om en om spel
            case TimerMode.roundAbout:
                // update het de game timer display
                TimeSpan gameSpeeltijd = new TimeSpan(0, 0, pGameStatus.speeltijd);
                Application.Current.Dispatcher.Invoke(
                    () => gameTimer.Text = string.Format("{0}:{1:00}", (int)gameSpeeltijd.TotalMinutes, gameSpeeltijd.Seconds));
                break;

            // spelen om en om voor een bepaalde tijd (GameData.speeltijdTimerTurn in MemoryData)
            case TimerMode.timerTurn:
                // als de timer nul is, is de volgende speler aan zet
                if (!Convert.ToBoolean(pGameStatus.timeRemaining--))
                {
                    // selecteer de volgende speler
                    pPlayerGroup.NextPlayer();

                    // update het pijltje die de speler aan zet aangeeft
                    UpdateAanZet();

                    // reset de timer
                    pGameStatus.timeRemaining = GameData.speeltijdTimerTurn;
                }

                // update het de game timer display
                TimeSpan playerTijdOver = new TimeSpan(0, 0, pGameStatus.timeRemaining);
                Application.Current.Dispatcher.Invoke(
                    () => gameTimer.Text = string.Format("{0}:{1:00}", (int)playerTijdOver.TotalMinutes, playerTijdOver.Seconds));
                break;
            }

            // update de game speeltijd
            pGameStatus.speeltijd++;

            //    Application.Current.Dispatcher.Invoke(() =>
            //    {
            //        TimeSpan gameSpeeltijd = new TimeSpan(0, 0, pGameStatus.speeltijd++);
            //        gameTimer.Text = string.Format("{0}:{1:00}", (int)gameSpeeltijd.TotalMinutes, gameSpeeltijd.Seconds);
            //    });
        }
        public void Setup(MemoryLogic gameLogic)
        {
            pPlayerGroup = gameLogic.playerGroup;
            pGameStatus  = gameLogic.gameStatus;

            playerGrid.Create(2, 2);

            playerBords  = new List <PlayerBord>();
            bordControls = new List <UIElement>();

            // timer om de kaarten na een tijdje terug te leggen
            popupTimer           = new Timer();
            popupTimer.Interval  = 1000;    // tijd tot kaarten weer terug vallen in ms
            popupTimer.AutoReset = false;   // zorgt dat een timer een keer aftelt

            // registreer de callback functie KaartenTerugLeggen voor het event popupTimer Elapsed
            popupTimer.Elapsed += popupVerwijderen;

            // timer om de speeltijd bij te houden
            timerClock           = new Timer();
            timerClock.Interval  = 1000;
            timerClock.AutoReset = true;

            // registreer de callback functie gameTimerUpdate voor het event timerClock Elapsed
            timerClock.Elapsed += gameTimerUpdate;

            // zet de speeltijd timer aan
            timerClock.Enabled = true;

            int index = 0;

            foreach (MemoryPlayer player in pPlayerGroup.players)
            {
                PlayerBord playerBord = new PlayerBord(this)
                {
                    naam = player.naam, score = player.score
                };
                playerBords.Add(playerBord);

                bordControls.Add(playerBord.pControl);
                playerGrid.AddByIndex(playerBord.pControl, index++);

                if (index == pPlayerGroup.players.Count)
                {
                    playerBord.pControl.Loaded += playerBordsLoaded;
                }
            }
        }
        private void SetAanZetVisibility(int spelerIndex, Visibility visibility)
        {
            PlayerBord playerBord = playerBords[spelerIndex];

            playerBord.status.Visibility = visibility;
        }