<?xml version="1.0" encoding="utf-8"?>
    <!--The version of the XML schema specified in the version and xmlns attributes should match the one for which the version of Prebuild.exe used was compiled for.  In this example it is the version 1.6 schema, you can find the XSD schema file at the url specified in the xmlns attribute. -->
    <Prebuild version="1.6" xmlns="http://dnpb.sourceforge.net/schemas/prebuild-1.6.xsd">
	<Solution name="RealmForge"> <!--The title and file name for the solution, combine, workspace, or project group (depending on what development tool you are using)-->
                       <!--Configurations found as children of Solution are used as templates for the configurations found in the project, this allows you to avoid writing the same options in each project (and maintaining each of these).  You can provide defaults and then override them in the configurations defined for each project. All options are optional.-->
		<Configuration name="Debug">
			<Options>
				<!-- simple logically expressions can be evaluated, if, else, elseif, and endif are valid statements.  Note that it is not neccisary to define POSIX or WIN32 -->
				<?if OS = "Win32" ?>
					<CompilerDefines>DEBUG;TRACE;WIN32</CompilerDefines>
				<?else ?>
					<CompilerDefines>DEBUG;TRACE;POSIX</CompilerDefines>
				<?endif ?>
				<OptimizeCode>false</OptimizeCode>
				<CheckUnderflowOverflow>false</CheckUnderflowOverflow>
				<AllowUnsafe>false</AllowUnsafe>
				<WarningLevel>4</WarningLevel>   
				<!--The filter for the number of warnings or errors shown and the tolerance level as to what is an error. This is value from 0 to 4 where 4 is the most strict (least tolerent).-->

				<WarningsAsErrors>false</WarningsAsErrors>
				<SuppressWarnings>1591;219;1573;1572;168</SuppressWarnings> 
 				<!-- A semicolon ';'  delimited list of the warnings that are filtered and not shown in the output window during compiling a project.  Only include the number portion of the warning codes that are shown in output during compilation (eg CS1591, should be entered as 1591)-->

				<OutputPath>..\bin</OutputPath>
				<DebugInformation>true</DebugInformation>
				<RegisterComInterop>false</RegisterComInterop>
				<IncrementalBuild>true</IncrementalBuild>
				<BaseAddress>285212672</BaseAddress>
				<FileAlignment>4096</FileAlignment>
				<NoStdLib>false</NoStdLib>
				<XmlDocFile>Docs.xml</XmlDocFile>
			</Options>
		</Configuration>
		<Configuration name="Release"> <!-- You can define multple configurations that projects can have, but there is no way to define which one is selected by default as this is a part of the user preferences for a project, not the solution or project files -->
			<Options>
				<CompilerDefines>TRACE</CompilerDefines>
				<OptimizeCode>true</OptimizeCode>
				<CheckUnderflowOverflow>false</CheckUnderflowOverflow>
				<AllowUnsafe>false</AllowUnsafe>
				<WarningLevel>4</WarningLevel>
				<WarningsAsErrors>false</WarningsAsErrors>
				<SuppressWarnings>1591;219;1573;1572;168</SuppressWarnings>
				<OutputPath>..\bin</OutputPath>
				<DebugInformation>false</DebugInformation>
				<RegisterComInterop>false</RegisterComInterop>
				<IncrementalBuild>true</IncrementalBuild>
				<BaseAddress>285212672</BaseAddress>
				<FileAlignment>4096</FileAlignment>
				<NoStdLib>false</NoStdLib>
				<XmlDocFile>Docs.xml</XmlDocFile>				
			</Options>
		</Configuration>

		<!-- One of the projects that is included in the Solution -->
		<Project name="RealmForge.Utility" path="Utility" type="Library" assemblyName="RealmForge.Utility" rootNamespace="RealmForge">
			<Configuration name="Debug">
				<Options>
					<OutputPath>..\bin\lib\Utility</OutputPath>
					<XmlDocFile>RealmForge.Utility.xml</XmlDocFile>
				</Options>
			</Configuration>
			<Configuration name="Release">
				<Options>
					<OutputPath>..\bin\lib\Utility</OutputPath>
					<XmlDocFile>RealmForge.Utility.xml</XmlDocFile>
				</Options>
			</Configuration>
			<ReferencePath>../bin</ReferencePath>
			<Reference name="System"/>
			<Reference name="System.Data"/> 
			<Reference name="System.Drawing"/>
			<Reference name="System.Xml"/>
			<Reference name="System.Runtime.Serialization.Formatters.Soap"/>
			<Reference name="ICSharpCode.SharpZipLib"/>
			<Files>
				<Match pattern="*.cs" recurse="true"/>
			</Files>
		</Project>

		<!-- Another projects that is included in the Solution -->
		<Project name="DemoGame" path="DemoGame" type="WinExe" icon="..\bin\RealmForge.ico" assemblyName="DemoGame" rootNamespace="RealmForge">
				<!-- icon is used to define the location of the .ico file that is embeeded in the assembly when the project is compiled.  This is relative to the project path -->
				<!--type defines the type of project, valid types are Library (.dll), WinExe (.exe), and Exe (.exe).  WinExe is not windows specific, it just defines that it is a GUI application and that no Console or Command window will show when it is started-->

			<Configuration name="Debug">
				<Options>
					<OutputPath>..\bin</OutputPath>
					<XmlDocFile>DemoGame.xml</XmlDocFile>
				</Options>
			</Configuration>
			<Configuration name="Release">
				<Options>
					<OutputPath>..\bin</OutputPath>
					<XmlDocFile>DemoGame.xml</XmlDocFile>		
				</Options>
			</Configuration>
			<ReferencePath>../bin</ReferencePath>
			<Reference name="System"/> <!-- Assemblies that are located in the GAC (installed, global) can be referenced-->
			<Reference name="ode"/>  <!-- Assemblies that are located in the output directory to which the file is built can be referenced -->
			<Reference name="RealmForge.Utility"/> <!-- When you reference the name of another project, then that project (and it's output) will be referenced instead of looking for a pre-built assembly-->
			<Files>
				<!-- path defaults to . or the directory that prebuild.exe resides in -->
				<Match path="." pattern="*.cs" recurse="true"/>
				<Match pattern="*.bmp" recurse="true" buildAction="EmbeddedResource"/>
				<Match pattern="[^a]*\.(png|jpg)" useRegex="true" buildAction="EmbeddedResource"/>
				
				<!-- Uses a regex or regular expression to find all files that end with .png or .jpg but dont have the letter 'a' in their name and add them to the project as EmbeddedResource's.  Because recurse enabled (default is false), only the values in the files in that are directly in the project directory (not child directories) are checked.-->
				<!--EmbeddedResource, Content, and Compile are valid buildAction's-->
			</Files>
		</Project>
		
	</Solution>
</Prebuild>
