/// <summary>Checks if the game is over and changes the gameStatus and tilestatus accordingly</summary>
 public static void checkGameOver()
 {
     if (onePairRemaining())
     {
         gameStatus = gameStatusType.Finished;
         bulkChangeTileStatus(tileStatusType.Found);
     } // if one pair is remaining
 }     //checkGameOver()
        /// <summary>
        /// Setup a new game; this initialises the board using the gamesettings previous setup by
        /// the settings dialogbox
        /// </summary>
        /// <returns></returns>
        public static bool setupNewGame()
        {
            tileStatusType tileStartStatus = tileStatusType.Unknown;

            switch (gameSettings.gameMode)
            {
            case gameModeType.Normal:
                tileStartStatus = tileStatusType.Closed;
                gameStatus      = gameStatusType.Started;
                break;

            case gameModeType.NormalFlash:
                tileStartStatus = tileStatusType.Flash;
                gameStatus      = gameStatusType.Flashing;
                break;

            case gameModeType.SinglePlayer:
                tileStartStatus = tileStatusType.Closed;
                gameStatus      = gameStatusType.Started;
                resetSinglePlayerTimer();
                break;

            case gameModeType.SinglePlayerFlash:
                tileStartStatus = tileStatusType.Flash;
                gameStatus      = gameStatusType.Flashing;
                resetSinglePlayerTimer();
                break;
            }

            bulkChangeTileStatus(tileStartStatus);

            imagePrefix = "themes\\theme-" + theme + "-";

            // setup one list of images for the number of tiles.
            List <String> tempTiles = new List <String>();

            for (int i = 0; i < numberOfImages; i++)
            {
                String img = imagePrefix + String.Format("{0:00}", i + 1) + ".png";
                tempTiles.Add(img);
                tempTiles.Add(img);
            }
            Random rnd = new Random();

            int q = 0;

            while (tempTiles.Count != 0)
            {
                int    p   = rnd.Next(tempTiles.Count);
                String img = tempTiles[p];
                tempTiles.RemoveAt(p);

                tileImages[q++] = img;
            }
            return(true);
        }//setupNewGame()
        /// <summary>Constructor for this class</summary>
        static gameSettings()
        {
            highscoreNames  = new List <KeyValuePair <string, int> >();
            themesFound     = new List <String>();
            themeImageFiles = new List <KeyValuePair <string, string> >();

            gameStatus = gameStatusType.Initial;

            gameMode = gameModeType.Normal;

            openedImages = new int[2];
            cleanupOpenedImages();

            determineThemeFilesOnDisk();
            theme = themesFound.First();
            setSize(4, 4);

            enoughImageFilesForTheme();

            _currentPlayerNumber = 1;
        }// constructor gameSettings