private GameEntities loadGameEntities(XmlNode gameEntitiesNode, CombatBoard board)
        {
            GameEntities gameEntities = new GameEntities();

            XmlNodeList childNodes = gameEntitiesNode.ChildNodes;

            foreach (XmlNode childNode in childNodes)
            {
                switch (childNode.Name)
                {
                case "heroes":
                    break;

                case "enemies":
                    progress.updateProgress("Loading Enemies", "Loading Enemies", 40);
                    loadEnemies(childNode, gameEntities, board);
                    break;

                case "obstacles":
                    progress.updateProgress("Loading Obstacles", "Loading Obstacles", 50);
                    loadObstacles(childNode, gameEntities, board);
                    break;
                }
            }

            return(gameEntities);
        }
        private void loadObstacles(XmlNode obstaclesNode, GameEntities gameEntities, CombatBoard board)
        {
            XmlNodeList children = obstaclesNode.ChildNodes;

            foreach (XmlNode childNode in children)
            {
                Obstacle obstacle = obstacleFactory.createObstacleForCombat(board, childNode);
                if (obstacle != null)
                {
                    gameEntities.addObstacle(obstacle);
                }
            }
        }
        private void loadEnemies(XmlNode enemiesNode, GameEntities gameEntities, CombatBoard board)
        {
            XmlNodeList playerNodes = enemiesNode.ChildNodes;

            foreach (XmlNode playerNode in playerNodes)
            {
                if (playerNode.Name.Equals("player"))
                {
                    Player player = playerFactory.createPlayerForCombat(board, playerNode);
                    if (player != null)
                    {
                        gameEntities.addPlayer(player);
                    }
                }
            }
        }
        private CombatBoard loadBoard(XmlNode boardNode)
        {
            CombatBoard board = null;

            if (boardNode != null)
            {
                XmlNodeList boardChildren = boardNode.ChildNodes;
                foreach (XmlNode childNode in boardChildren)
                {
                    switch (childNode.Name)
                    {
                    case "dimensions":
                        int   size = 0, height = 0, width = 0, xoffset = 0, yoffset = 0, penWidth = 0;
                        bool  isPointy   = false;
                        Color boardColor = Color.White;

                        loadDimensions(childNode, ref size, ref height, ref width, ref xoffset, ref yoffset, ref penWidth, ref isPointy, ref boardColor);
                        board = new CombatBoard(this.lhg, size, width, height, xoffset, yoffset, penWidth, isPointy, boardColor);
                        break;

                    case "colors":
                        if (board != null)
                        {
                            Color backgroundColor = Color.Black, selectedPlayerColor = Color.Black, moveRadiusColor = Color.Black,
                                  moveSelectColor = Color.Black, attackRadiusColor = Color.Black;

                            loadColors(childNode, ref backgroundColor, ref selectedPlayerColor, ref moveRadiusColor, ref moveSelectColor, ref attackRadiusColor);
                            board.setHexColors(backgroundColor, selectedPlayerColor, moveRadiusColor, moveSelectColor, attackRadiusColor);
                        }
                        break;

                    case "gameEntities":
                        if (board != null)
                        {
                            GameEntities gameEntities = loadGameEntities(childNode, board);
                            board.MyGameEntities = gameEntities;
                        }
                        break;
                    }
                }
            }

            return(board);
        }