/// <summary>
        /// Prepares the battle game setup instance.
        /// </summary>
        /// <param name="filePathForSetUp">The file path for set up.</param>
        /// <param name="arrayOfDataLines">The array of data lines.</param>
        /// <param name="battleShipGameSetup">The battle ship game setup.</param>
        /// <exception cref="Game.ExceptionHandler.InvalidInputFileException">
        /// </exception>
        private static void PrepareBattleGameSetupInstance(string filePathForSetUp, string[] arrayOfDataLines, BattleGameSetup battleShipGameSetup)
        {
            if (arrayOfDataLines.Length > 4) // as per the problem statment
            {
                // 1. Setup BattleField Measurements
                // Assumption: 5 E ==  5<space>E
                setupBattleField(filePathForSetUp, arrayOfDataLines[0], battleShipGameSetup);

                // 2. instantiate battle field
                battleShipGameSetup.BattleField = new int[(int)battleShipGameSetup.GameCoordinates.Y, (int)battleShipGameSetup.GameCoordinates.X];


                // 3. no of battleships each player has
                // Assumption: 2 == 2
                battleShipGameSetup.BattleshipsPerUser = Convert.ToInt32(arrayOfDataLines[1]);


                // 4. prepare Ship Fleet for PLayers
                var player1 = new Model.BattlePlayer()
                {
                    ID = 1
                };
                var player2 = new Model.BattlePlayer()
                {
                    ID = 2
                };
                int i;

                // start with '2' index  till a Non-ShipType is found or( EndOfFile-2) lines achieved
                for (i = 2; i < arrayOfDataLines.Length - 2; i++)
                {
                    var battleShipDetailsAry = arrayOfDataLines[i].Split(' ');

                    // Assumption: Q 1 1 A1 B2  == Q<space>1<space>1<space>A1<space>B2   [11] means [Width Height]
                    // Assumption: P 2 1 D4 C3  == P<space>2<space>1<space>D4<space>C3

                    BattleshipType shipType;
                    Enum.TryParse(battleShipDetailsAry[0], true, out shipType);

                    if (shipType == BattleshipType.NONE)
                    {
                        return;
                    }

                    // Width=X, Height = Y
                    var shipDimensions = new Point(Convert.ToInt32(battleShipDetailsAry[1]), Convert.ToInt32(battleShipDetailsAry[2]));

                    player1.ShipFleet.AddRange(prepareShipsForPlayer(shipType, shipDimensions, battleShipDetailsAry[3]));
                    player2.ShipFleet.AddRange(prepareShipsForPlayer(shipType, shipDimensions, battleShipDetailsAry[4]));
                }

                if ((player1.ShipFleet.Count > battleShipGameSetup.BattleshipsPerUser) ||
                    (player2.ShipFleet.Count > battleShipGameSetup.BattleshipsPerUser))
                {
                    throw new InvalidInputFileException(filePathForSetUp, " More ships found per user than specified");
                }
                else
                {
                    battleShipGameSetup.Players.Add(player1);
                    battleShipGameSetup.Players.Add(player2);

                    // 5. Missile Target sequence for PLayer One
                    getMissileFiringSequenceForPlayer(arrayOfDataLines[i], player1);

                    //6. Missile Target sequence for PLayer Two
                    getMissileFiringSequenceForPlayer(arrayOfDataLines[i + 1], player2);
                }
            }

            else
            {
                throw new InvalidInputFileException(filePathForSetUp, " Invalid Lines");
            }
        }
        /// <summary>
        /// Setups the battle field.
        /// </summary>
        /// <param name="filePathForSetUp">The file path for set up.</param>
        /// <param name="battleFieldDimensionData">battleFieldDimensionData</param>
        /// <param name="battleShipGameSetup">The battle ship game setup.</param>
        /// <exception cref="Game.ExceptionHandler.InvalidInputFileException">invalid dimensions of battle area</exception>
        private static void setupBattleField(string filePathForSetUp, string battleFieldDimensionData, BattleGameSetup battleShipGameSetup)
        {
            var gameDimension = battleFieldDimensionData.Split(' '); // width and Height separated by Space

            if (gameDimension == null || gameDimension.Length != 2)
            {
                throw new InvalidInputFileException(filePathForSetUp, " invalid dimensions of battle area");
            }

            battleShipGameSetup.GameCoordinates = GameCoordinate.ConvertToGameCoordinate(gameDimension[0], gameDimension[1]);
        }