public void PlaceStart(IGameState state, IStartActions actions)
{
if (!silent)
Console.WriteLine(id + ": Place starts");
if (!firstStartPlaced)
{
firstStartPlaced = true;
actions.BuildSettlement(start1);
if (!silent)
Console.WriteLine(id + ": First settlement built succesfully");
actions.BuildRoad(new Edge(start1.FirstTile, start1.SecondTile));
if (!silent)
Console.WriteLine(id + ": First road built succesfully");
}
else
{
try
{
actions.BuildSettlement(start1);
if (!silent)
Console.WriteLine(id + ": Controller allowed a building on top of another");
}
catch (IllegalBuildPositionException e)
{
if (!silent)
Console.WriteLine(id + ": Controller threw exception as expected: " + e.Message);
}
try
{
actions.BuildSettlement(tooClose);
if (!silent)
Console.WriteLine(id + ": Controller allowed a building too close");
}
catch (IllegalBuildPositionException e)
{
if (!silent)
Console.WriteLine(id + ": Controller threw exception as expected: " + e.Message);
}
actions.BuildSettlement(start2);
Console.WriteLine(id + ": Second settlement built succesfully");
try
{
actions.BuildRoad(farRoad);
if (!silent)
Console.WriteLine(id + ": Controller allowed a building disconnected road");
}
catch (IllegalBuildPositionException e)
{
if (!silent)
Console.WriteLine(id + ": Controller threw exception as expected: " + e.Message);
}
actions.BuildRoad(new Edge(start2.FirstTile,start2.SecondTile));
if (!silent)
Console.WriteLine(id + ": Second road built succesfully");
}
}