#include <wx/wx.h>

wxString about_str = wxString::FromAscii("");
wxString help_str = wxString::FromAscii("");

void CreateDocStrs()
{
	std::cout << "Prepping help documents... " << std::flush;
	about_str += wxString::FromAscii("<html>");
	about_str += wxString::FromAscii("  <head>");
	about_str += wxString::FromAscii("    <title>");
	about_str += wxString::FromAscii("      About");
	about_str += wxString::FromAscii("    </title>");
	about_str += wxString::FromAscii("  </head>");
	about_str += wxString::FromAscii("  <body>");
	about_str += wxString::FromAscii("    <p>");
	about_str += wxString::FromAscii("      Copyright (C) 2005 Dan Alcantara (dfalcantara@ucdavis.edu, http://wwwcsif.cs.ucdavis.edu/~alcantar, http://blokish.sourceforge.net)");
	about_str += wxString::FromAscii("      Based on the board game <i>Blokus</i> by Educational Insights, Inc.");
	about_str += wxString::FromAscii("    </p><p>");
	about_str += wxString::FromAscii("      This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.		");
	about_str += wxString::FromAscii("    </p><p>");
	about_str += wxString::FromAscii("      This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.					");
	about_str += wxString::FromAscii("    </p><p>");
	about_str += wxString::FromAscii("      You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA																							");
	about_str += wxString::FromAscii("    </p><p>");
	about_str += wxString::FromAscii("      Full license visible at http://www.opensource.org/licenses/gpl-license.php");
	about_str += wxString::FromAscii("    </p>");
	about_str += wxString::FromAscii("  </body>");
	about_str += wxString::FromAscii("</html>");

	help_str += wxString::FromAscii("<html>");
	help_str += wxString::FromAscii("  <head>");
	help_str += wxString::FromAscii("    <title>");
	help_str += wxString::FromAscii("      Blokus help");
	help_str += wxString::FromAscii("    </title>");
	help_str += wxString::FromAscii("  </head>");
	help_str += wxString::FromAscii("  <body>");
	help_str += wxString::FromAscii("    <h5>Objective</h5>");
	help_str += wxString::FromAscii("    Players must place as many of their pieces as possible on the board.  When no more pieces can be played, the winner is the player with the largest score.  Score is calculated as follows:");
	help_str += wxString::FromAscii("      <ul>");
	help_str += wxString::FromAscii("        <li> -1 for each square left unplayed. Pieces are composed of 1-5 squares.</li>");
	help_str += wxString::FromAscii("        <li> +15 for placing all pieces.</li>");
	help_str += wxString::FromAscii("        <li> +5 if all pieces are placed and the single square was the last piece played.</li>");
	help_str += wxString::FromAscii("      </ul>");
	help_str += wxString::FromAscii("");
	help_str += wxString::FromAscii("    <h5>Placing a piece</h5>");
	help_str += wxString::FromAscii("    A player's first piece must be played so that one of the piece's squares touches a board corner.  Afterwards, a player may place a piece only if it touches another piece of the same color at the corners: two pieces of the same color may not share an edge.");
	help_str += wxString::FromAscii("");
	help_str += wxString::FromAscii("    <h5>Interface</h5>");
	help_str += wxString::FromAscii("    The board is shown in the left half of the screen.  ");
	help_str += wxString::FromAscii("    <ul>");
	help_str += wxString::FromAscii("      <li>Dots on empty spaces show where the current player's pieces would fit.</li>");
	help_str += wxString::FromAscii("      <li>Dots on played pieces show their age.  Pieces with darker dots have been played more recently.</li>");
	help_str += wxString::FromAscii("    </ul>");
	help_str += wxString::FromAscii("    <p>");
	help_str += wxString::FromAscii("    If the game is not yet over, the upper right shows all players' unplayed pieces.  The furthest left box is for the first player, the furthest right is for the fourth player.  The bottom right is where the current player's unplayed pieces are drawn.  ");
	help_str += wxString::FromAscii("    </p>");
	help_str += wxString::FromAscii("    <p>");
	help_str += wxString::FromAscii("      Once the game is over, the right half of the window will display all unplayed pieces, categorized by their color.");
	help_str += wxString::FromAscii("    </p>");
	help_str += wxString::FromAscii("");
	help_str += wxString::FromAscii("    <h5>Controls</h5>");
	help_str += wxString::FromAscii("    <ul>");
	help_str += wxString::FromAscii("      <li><i>Select</i> a piece by left-clicking on one of the current player's unplayed pieces in the bottom right corner.  The selected piece hovers under the mouse pointer.</li>");
	help_str += wxString::FromAscii("      <li><i>Flip</i> pieces with the right mouse button.  If no pieces are selected, all pieces are flipped.  Otherwise, it flips only the selected piece.</li>");
	help_str += wxString::FromAscii("      <li><i>Rotate</i> pieces with the scroll wheel or the left and right arrow keys.  If no pieces are selected, all pieces are rotated.  Otherwise, it rotates only the selected piece.</li>");
	help_str += wxString::FromAscii("      <li><i>Place</i> the selected piece by clicking where on the board it should go.  If the piece can't be played there, the piece will be translucently drawn.</li>");
	help_str += wxString::FromAscii("    </ul>");
	help_str += wxString::FromAscii("");
	help_str += wxString::FromAscii("    <h5>Artificial intelligence</h5>");
	help_str += wxString::FromAscii("    The computer can control any player; turn this on in the Options &gt;&gt; Artificial intelligence menu.  From here, the rudimentary AI's settings can be changed.  These settings affect a possible move's rating as follows:");
	help_str += wxString::FromAscii("    <br>");
	help_str += wxString::FromAscii("      <table>");
	help_str += wxString::FromAscii("        <tr>");
	help_str += wxString::FromAscii("          <td rowspan='3' valign='top' width='100px'>");
	help_str += wxString::FromAscii("            rating =");
	help_str += wxString::FromAscii("          </td>");
	help_str += wxString::FromAscii("          <td>");
	help_str += wxString::FromAscii("            Piece size weight * Chosen piece's weight + ");
	help_str += wxString::FromAscii("          </td>");
	help_str += wxString::FromAscii("        </tr>");
	help_str += wxString::FromAscii("        <tr>");
	help_str += wxString::FromAscii("          <td>");
	help_str += wxString::FromAscii("            Spaces created weight * # of spaces where another of this player's pieces can be played after the chosen piece is placed +");
	help_str += wxString::FromAscii("          </td>");
	help_str += wxString::FromAscii("        </tr>");
	help_str += wxString::FromAscii("        <tr>");
	help_str += wxString::FromAscii("          <td>");
	help_str += wxString::FromAscii("            Enemy spaces weight * # of spaces where an enemy can be placed after the chosen piece is placed");
	help_str += wxString::FromAscii("          </td>");
	help_str += wxString::FromAscii("        </tr>");
	help_str += wxString::FromAscii("      </table>");
	help_str += wxString::FromAscii("");
	help_str += wxString::FromAscii("      The # of friendly/enemy pieces to check shows how many pieces will be checked when calculating the # of spaces usable by a player.  Generally, the weights can be changed without affecting the time AI takes to calculate its move.  The # of pieces checked will increase the amount of time the AI takes.  5 pieces is a good number for both of the # of pieces settings.");
	help_str += wxString::FromAscii("  </body>");
	help_str += wxString::FromAscii("</html>");
	std::cout << "done.\n" << std::flush;
}
