/// <summary>
	/// Draws a small field, showing the attacks made and the locations of the player's ships
	/// </summary>
	/// <param name="grid">the grid to show</param>
	/// <param name="thePlayer">the player to show the ships of</param>
	public static void DrawSmallField(ISeaGrid grid, Player thePlayer)
	{
		const int SMALL_FIELD_LEFT = 39;
		const int SMALL_FIELD_TOP = 373;
		const int SMALL_FIELD_WIDTH = 166;
		const int SMALL_FIELD_HEIGHT = 166;
		const int SMALL_FIELD_CELL_WIDTH = 13;
		const int SMALL_FIELD_CELL_HEIGHT = 13;
		const int SMALL_FIELD_CELL_GAP = 4;

		DrawCustomField(grid, thePlayer, true, true, SMALL_FIELD_LEFT, SMALL_FIELD_TOP, SMALL_FIELD_WIDTH, SMALL_FIELD_HEIGHT, SMALL_FIELD_CELL_WIDTH, SMALL_FIELD_CELL_HEIGHT,
		SMALL_FIELD_CELL_GAP);
	}
	/// <summary>
	/// Draws a large field using the grid and the indicated player's ships.
	/// </summary>
	/// <param name="grid">the grid to draw</param>
	/// <param name="thePlayer">the players ships to show</param>
	/// <param name="showShips">indicates if the ships should be shown</param>
	public static void DrawField(ISeaGrid grid, Player thePlayer, bool showShips)
	{
		DrawCustomField(grid, thePlayer, false, showShips, FIELD_LEFT, FIELD_TOP, FIELD_WIDTH, FIELD_HEIGHT, CELL_WIDTH, CELL_HEIGHT,
		CELL_GAP);
	}
	/// <summary>
	/// Draws the player's grid and ships.
	/// </summary>
	/// <param name="grid">the grid to show</param>
	/// <param name="thePlayer">the player to show the ships of</param>
	/// <param name="small">true if the small grid is shown</param>
	/// <param name="showShips">true if ships are to be shown</param>
	/// <param name="left">the left side of the grid</param>
	/// <param name="top">the top of the grid</param>
	/// <param name="width">the width of the grid</param>
	/// <param name="height">the height of the grid</param>
	/// <param name="cellWidth">the width of each cell</param>
	/// <param name="cellHeight">the height of each cell</param>
	/// <param name="cellGap">the gap between the cells</param>
	private static void DrawCustomField(ISeaGrid grid, Player thePlayer, bool small, bool showShips, int left, int top, int width, int height, int cellWidth, int cellHeight,
	int cellGap)
	{
		//SwinGame.FillRectangle(Color.Blue, left, top, width, height)

		int rowTop = 0;
		int colLeft = 0;

		//Draw the grid
		for (int row = 0; row <= 9; row++) {
			rowTop = top + (cellGap + cellHeight) * row;

			for (int col = 0; col <= 9; col++) {
				colLeft = left + (cellGap + cellWidth) * col;

				Color fillColor = default(Color);
				bool draw = false;

				draw = true;

				switch (grid[row, col]) {
					// case TileView.Ship:
					// 	draw = false;
					// 	break;
					//If small Then fillColor = _SMALL_SHIP Else fillColor = _LARGE_SHIP
					case TileView.Miss:
						if (small)
							fillColor = SMALL_MISS;
						else
							fillColor = LARGE_MISS;
						break;
					case TileView.Hit:
						if (small)
							fillColor = SMALL_HIT;
						else
							fillColor = LARGE_HIT;
						break;
					case TileView.Sea:
					case TileView.Ship:
						if (small)
							fillColor = SMALL_SEA;
						else
							draw = false;
						break;
				}

				if (draw) {
					SwinGame.FillRectangle(fillColor, colLeft, rowTop, cellWidth, cellHeight);
					if (!small) {
						SwinGame.DrawRectangle(OUTLINE_COLOR, colLeft, rowTop, cellWidth, cellHeight);
					}
				}
			}
		}

		if (!showShips) {
			return;
		}

		int shipHeight = 0;
		int shipWidth = 0;
		string shipName = null;

		//Draw the ships
		foreach (Ship s in thePlayer) {
			if (s == null || !s.IsDeployed)
				continue;
			rowTop = top + (cellGap + cellHeight) * s.Row + SHIP_GAP;
			colLeft = left + (cellGap + cellWidth) * s.Column + SHIP_GAP;

			if (s.Direction == Direction.LeftRight) {
				shipName = "ShipLR" + s.Size;
				shipHeight = cellHeight - (SHIP_GAP * 2);
				shipWidth = (cellWidth + cellGap) * s.Size - (SHIP_GAP * 2) - cellGap;
			} else {
				//Up down
				shipName = "ShipUD" + s.Size;
				shipHeight = (cellHeight + cellGap) * s.Size - (SHIP_GAP * 2) - cellGap;
				shipWidth = cellWidth - (SHIP_GAP * 2);
			}

			if (!small) {
				SwinGame.DrawBitmap(GameImage(shipName), colLeft, rowTop);
			} else {
				SwinGame.FillRectangle(SHIP_FILL_COLOR, colLeft, rowTop, shipWidth, shipHeight);
				SwinGame.DrawRectangle(SHIP_OUTLINE_COLOR, colLeft, rowTop, shipWidth, shipHeight);
			}
		}
	}
    /// <summary>
    /// Draws the player's grid and ships.
    /// </summary>
    /// <param name="grid">the grid to show</param>
    /// <param name="thePlayer">the player to show the ships of</param>
    /// <param name="small">true if the small grid is shown</param>
    /// <param name="showShips">true if ships are to be shown</param>
    /// <param name="left">the left side of the grid</param>
    /// <param name="top">the top of the grid</param>
    /// <param name="width">the width of the grid</param>
    /// <param name="height">the height of the grid</param>
    /// <param name="cellWidth">the width of each cell</param>
    /// <param name="cellHeight">the height of each cell</param>
    /// <param name="cellGap">the gap between the cells</param>
    private static void DrawCustomField(ISeaGrid grid, Player thePlayer, bool small, bool showShips, int left, int top, int width, int height, int cellWidth, int cellHeight,
                                        int cellGap)
    {
        int rowTop  = 0;
        int colLeft = 0;

        //Draw the grid
        for (int row = 0; row <= 9; row++)
        {
            rowTop = top + (cellGap + cellHeight) * row;

            for (int col = 0; col <= 9; col++)
            {
                colLeft = left + (cellGap + cellWidth) * col;

                Color fillColor = default(Color);
                bool  draw      = false;

                draw = true;

                switch (grid[row, col])
                {
                //case TileView.Ship:
                //	draw = false;
                //	break;
                //If small Then fillColor = _SMALL_SHIP Else fillColor = _LARGE_SHIP
                case TileView.Miss:
                    if (small)
                    {
                        fillColor = SMALL_MISS;
                    }
                    else
                    {
                        fillColor = LARGE_MISS;
                    }
                    break;

                case TileView.Hit:
                    if (small)
                    {
                        fillColor = SMALL_HIT;
                    }
                    else
                    {
                        fillColor = LARGE_HIT;
                    }
                    break;

                case TileView.Sea:
                case TileView.Ship:
                    if (small)
                    {
                        fillColor = SMALL_SEA;
                    }
                    else
                    {
                        draw = false;
                    }
                    break;
                }

                if (draw)
                {
                    SwinGame.FillRectangle(fillColor, colLeft, rowTop, cellWidth, cellHeight);
                    if (!small)
                    {
                        SwinGame.DrawRectangle(OUTLINE_COLOR, colLeft, rowTop, cellWidth, cellHeight);
                    }
                }
            }
        }

        if (!showShips)
        {
            return;
        }

        int    shipHeight = 0;
        int    shipWidth  = 0;
        string shipName   = null;

        //Draw the ships
        foreach (Ship s in thePlayer)
        {
            if (s == null || !s.IsDeployed)
            {
                continue;
            }
            rowTop  = top + (cellGap + cellHeight) * s.Row + SHIP_GAP;
            colLeft = left + (cellGap + cellWidth) * s.Column + SHIP_GAP;

            if (s.Direction == Direction.LeftRight)
            {
                shipName   = "ShipLR" + s.Size;
                shipHeight = cellHeight - (SHIP_GAP * 2);
                shipWidth  = (cellWidth + cellGap) * s.Size - (SHIP_GAP * 2) - cellGap;
            }
            else
            {
                //Up down
                shipName   = "ShipUD" + s.Size;
                shipHeight = (cellHeight + cellGap) * s.Size - (SHIP_GAP * 2) - cellGap;
                shipWidth  = cellWidth - (SHIP_GAP * 2);
            }

            if (!small)
            {
                SwinGame.DrawBitmap(GameResources.GameImage(shipName), colLeft, rowTop);
            }
            else
            {
                SwinGame.FillRectangle(SHIP_FILL_COLOR, colLeft, rowTop, shipWidth, shipHeight);
                SwinGame.DrawRectangle(SHIP_OUTLINE_COLOR, colLeft, rowTop, shipWidth, shipHeight);
            }
        }
    }
 /// <summary>
 /// Draws a large field using the grid and the indicated player's ships.
 /// <param name="grid">the grid to draw</param>
 /// <param name="thePlayer">the players ships to show</param>
 /// <param name="showShips">indicates if the ships should be shown</param>
 /// </summary>
 public static void DrawField(ISeaGrid grid, Player thePlayer, bool showShips)
 {
     DrawCustomField(grid, thePlayer, false, showShips, FIELD_LEFT, FIELD_TOP, FIELD_WIDTH, FIELD_HEIGHT, CELL_WIDTH, CELL_HEIGHT, CELL_GAP);
 }
        // Draws the player's grid and ships.
        private static void DrawCustomField(ISeaGrid grid, Player thePlayer, bool small, bool showShips, int left, int top, int width, int height, int cellWidth, int cellHeight, int cellGap)
        {
            // SwinGame.FillRectangle(Color.Blue, left, top, width, height)
            int rowTop;
            int colLeft;

            // Draw the grid
            for (int row = 0; (row <= 9); row++)
            {
                rowTop = (top
                          + ((cellGap + cellHeight)
                             * row));
                for (int col = 0; (col <= 9); col++)
                {
                    colLeft = (left
                               + ((cellGap + cellWidth)
                                  * col));
                    Color fillColor = SMALL_MISS;
                    bool  draw;
                    draw = true;
                    switch (grid[row, col])
                    {
                    //case TileView.Ship:
                    //    draw = false;
                    //    break;
                    case TileView.Miss:
                        if (small)
                        {
                            fillColor = SMALL_MISS;
                        }
                        else
                        {
                            fillColor = LARGE_MISS;
                        }

                        break;

                    case TileView.Hit:
                        if (small)
                        {
                            fillColor = SMALL_HIT;
                        }
                        else
                        {
                            fillColor = LARGE_HIT;
                        }

                        break;

                    case TileView.Sea:
                    case TileView.Ship:
                        if (small)
                        {
                            fillColor = SMALL_SEA;
                        }
                        else
                        {
                            draw = false;
                        }

                        break;
                    }
                    if (draw)
                    {
                        SwinGame.FillRectangle(fillColor, colLeft, rowTop, cellWidth, cellHeight);
                        if (!small)
                        {
                            SwinGame.DrawRectangle(OUTLINE_COLOR, colLeft, rowTop, cellWidth, cellHeight);
                        }
                    }
                }
            }

            if (!showShips)
            {
                return;
            }

            int    shipHeight;
            int    shipWidth;
            string shipName;

            // Draw the ships
            foreach (Ship s in thePlayer)
            {
                if (((s == null) || !s.IsDeployed))
                {
                    // TODO: Continue For... Warning!!! not translated
                    continue;
                }

                rowTop = (top
                          + (((cellGap + cellHeight)
                              * s.Row)
                             + SHIP_GAP));
                colLeft = (left
                           + (((cellGap + cellWidth)
                               * s.Column)
                              + SHIP_GAP));

                if ((s.Direction == Direction.LeftRight))
                {
                    shipName   = ("ShipLR" + s.Size);
                    shipHeight = (cellHeight
                                  - (SHIP_GAP * 2));
                    shipWidth = (((cellWidth + cellGap)
                                  * s.Size)
                                 - ((SHIP_GAP * 2)
                                    - cellGap));
                }
                else
                {
                    // Up down
                    shipName   = ("ShipUD" + s.Size);
                    shipHeight = (((cellHeight + cellGap)
                                   * s.Size)
                                  - ((SHIP_GAP * 2)
                                     - cellGap));
                    shipWidth = (cellWidth
                                 - (SHIP_GAP * 2));
                }

                if (!small)
                {
                    SwinGame.DrawBitmap(GameResources.GameImage(shipName), colLeft, rowTop);
                }
                else
                {
                    SwinGame.FillRectangle(SHIP_FILL_COLOR, colLeft, rowTop, shipWidth, shipHeight);
                    SwinGame.DrawRectangle(SHIP_OUTLINE_COLOR, colLeft, rowTop, shipWidth, shipHeight);
                }
            }
        }