示例#1
0
 // remove
 internal void SetLocationForHunterAt(int v, LocationDetail location)
 {
     Hunters[v].CurrentLocation = location;
     Logger.WriteToDebugLog(Hunters[v].Name + " started in " + location.Name);
     Logger.WriteToGameLog(Hunters[v].Name + " started in " + location.Name);
 }
示例#2
0
 // remove
 public bool LocationIsInCatacombs(LocationDetail location)
 {
     return Dracula.Catacombs.Contains(location);
 }
示例#3
0
 internal void MoveHunterToLocationAtHunterIndex(int hunterIndex, LocationDetail locationToMoveTo, UserInterface ui)
 {
     foreach (int ind in Hunters[hunterIndex].HuntersInGroup)
     {
         Logger.WriteToDebugLog("Moved " + Hunters[ind].Name + " to " + locationToMoveTo.Name);
         Logger.WriteToGameLog(Hunters[ind].Name + " moved from " + Hunters[ind].CurrentLocation.Name + " to " + locationToMoveTo.Name);
         ui.TellUser(Hunters[ind].Name + " moved from " + Hunters[ind].CurrentLocation.Name + " to " + locationToMoveTo.Name);
         Hunters[ind].CurrentLocation = locationToMoveTo;
     }
 }
示例#4
0
 // remove
 internal int IndexOfHunterAtLocation(LocationDetail location)
 {
     for (int i = 0; i < 4; i++)
     {
         if (Hunters[i].CurrentLocation == location)
         {
             return i;
         }
     }
     return -1;
 }
示例#5
0
 public LocationDetail GetLocationFromName(string locationName)
 {
     for (int i = 0; i < 71; i++)
     {
         if ((Map[i].Name.ToLower().StartsWith(locationName.ToLower())) || (Map[i].Abbreviation.ToLower() == locationName.ToLower()))
         {
             string tempName = Map[i].Name;
             Map[i].Name = "";
             for (int j = i; j < 71; j++)
             {
                 if (Map[j].Name.ToLower().StartsWith(locationName.ToLower()))
                 {
                     LocationDetail multipleLocations = new LocationDetail();
                     multipleLocations.Name = "Multiple locations";
                     Map[i].Name = tempName;
                     return multipleLocations;
                 }
             }
             Map[i].Name = tempName;
             return Map[i];
         }
     }
     LocationDetail unknownLocation = new LocationDetail();
     unknownLocation.Name = "Unknown location";
     return unknownLocation;
 }
示例#6
0
 // done
 internal LocationDetail DecideWhichPortToGoToAfterStormySeas(GameState g, LocationDetail locationStormed)
 {
     Logger.WriteToDebugLog("Deciding which port to go to after having Stormy Seas played on current location");
     LocationDetail port;
     do
     {
         port = locationStormed.BySea[new Random().Next(0, locationStormed.BySea.Count())];
     } while (port.Type != LocationType.City && port.Type != LocationType.Town);
     Logger.WriteToDebugLog("Returning " + port.Name);
     return port;
 }
示例#7
0
 // done
 internal LocationDetail DecideMove(GameState g, Dracula dracula, out string powerName)
 {
     Logger.WriteToDebugLog("Starting to decide what move to make");
     LocationDetail goingTo;
     if (dracula.AdvanceMovePower != null || dracula.AdvanceMoveDestination != null)
     {
         powerName = dracula.AdvanceMovePower;
         goingTo = dracula.AdvanceMoveDestination;
         dracula.AdvanceMovePower = null;
         dracula.AdvanceMoveDestination = null;
     }
     int chosenActionIndex = new Random().Next(0, dracula.PossibleMoves.Count() + dracula.PossiblePowers.Count());
     if (chosenActionIndex > dracula.PossibleMoves.Count() - 1)
     {
         // choosing a power
         chosenActionIndex -= dracula.PossibleMoves.Count();
         powerName = dracula.PossiblePowers[chosenActionIndex].name;
         if (powerName == "Dark Call" || powerName == "Feed" || powerName == "Hide")
         {
             goingTo = new LocationDetail();
             goingTo.Name = "Nowhere";
         }
         else if (powerName == "Double Back")
         {
             goingTo = dracula.PossibleDoubleBackMoves[new Random().Next(0, dracula.PossibleDoubleBackMoves.Count())];
         }
         else if (powerName == "Wolf Form")
         {
             dracula.DeterminePossibleWolfFormLocations();
             goingTo = dracula.PossibleMoves[new Random().Next(0, dracula.PossibleMoves.Count())];
         }
         else
         {
             goingTo = new LocationDetail();
             goingTo.Name = "Unknown location";
         }
     }
     else
     {
         powerName = "no power";
         goingTo = dracula.PossibleMoves[chosenActionIndex];
     }
     Logger.WriteToDebugLog("Returning " + powerName + " and " + goingTo == null ? "null" : goingTo.Name);
     return goingTo;
 }
示例#8
0
 public void PlaceEncounterIfLegal(GameState g, LocationDetail location)
 {
     if (location.Type == LocationType.Castle)
     {
         Logger.WriteToDebugLog("Not placing an encounter here as this is Castle Dracula");
         return;
     }
     if (location.Type == LocationType.Sea)
     {
         Logger.WriteToDebugLog("Not placing an encounter here as it is a sea location");
         return;
     }
     Logger.WriteToDebugLog("Checking if Dracula used a power at this location");
     int locationIndex = LocationTrail.FindIndex(loc => loc == location);
     if (locationIndex > -1)
     {
         Logger.WriteToDebugLog("This location is in the trail, checking if a power was used here");
         if (LocationTrail[locationIndex].Name == "Dark Call")
         {
             Logger.WriteToDebugLog("Not placing an encounter here as Dracula used Dark Call");
             return;
         }
         if (LocationTrail[locationIndex].Name == "Feed")
         {
             Logger.WriteToDebugLog("Not placing an encounter here as Dracula used Feed");
             return;
         }
         for (int i = 0; i < Powers.Count(); i++)
         {
             if (Powers[i].name == "Double Back" && Powers[i].positionInTrail == locationIndex)
             {
                 Logger.WriteToDebugLog("Not placing an encounter here as Dracula used Double Back");
                 return;
             }
         }
         Logger.WriteToDebugLog("Checking if this location already has an encounter");
         if (LocationTrail[locationIndex].Encounters.Count() > 0)
         {
             Logger.WriteToDebugLog("THIS LOCATION ALREADY HAS AN ENCOUNTER. THIS SHOULD NOT BE POSSIBLE. INVESTIGATE.");
             return;
         }
     }
     else
     {
         Logger.WriteToDebugLog("This location isn't in the trail, not checking any further");
     }
     EncounterDetail chosenEncounter = logic.DecideWhichEncounterToPlace(g, this);
     Logger.WriteToDebugLog("Placing encounter " + chosenEncounter.name);
     Logger.WriteToGameLog("Dracula placed encounter " + chosenEncounter.name);
     location.Encounters.Add(chosenEncounter);
     EncounterHand.Remove(chosenEncounter);
 }
示例#9
0
 // done
 internal EncounterDetail DecideWhichCatacombsEncounterToDiscard(GameState g, LocationDetail goingTo, UserInterface ui)
 {
     Logger.WriteToDebugLog("Deciding which encounter to discard off a location previously in the catacombs");
     if (goingTo.Encounters.Count() > 1)
     {
         int random = new Random().Next(0, 2);
         ui.TellUser("Dracula discarded the encounter in slot " + random);
         Logger.WriteToDebugLog("Returning " + goingTo.Encounters[random]);
         return goingTo.Encounters[random];
     }
     else
     {
         Logger.WriteToDebugLog("Returning " + goingTo.Encounters.First().name);
         return goingTo.Encounters.First();
     }
 }
示例#10
0
 public void DoWolfFormMove(GameState g, LocationDetail destination, UserInterface ui)
 {
     // determine possible locations for wolf form (road only, up to two moves away)
     DeterminePossibleWolfFormLocations();
     // carry out move
     MoveByRoadOrSea(g, destination, ui);
     Logger.WriteToGameLog("Dracula used Wolf Form to move to " + CurrentLocation.Name);
 }
示例#11
0
        public void MoveByRoadOrSea(GameState g, LocationDetail goingTo, UserInterface ui)
        {
            Logger.WriteToDebugLog("Moving Dracula to a new location");
            Logger.WriteToDebugLog("Remembering that Dracula is moving from a location of type " + CurrentLocation.Type);
            LocationType previousLocationType = CurrentLocation.Type;
            if (PossibleMoves.Count() == 0)
            {
                Logger.WriteToDebugLog("SOMEHOW DRACULA IS TRYING TO MOVE WHEN HE HAS NO POSSIBLE MOVES");
            }
            try
            {
                Logger.WriteToDebugLog("Dracula is moving from " + CurrentLocation.Name + " to " + goingTo.Name);
                CurrentLocation = goingTo;
            }
            catch (ArgumentOutOfRangeException)
            {
                ui.TellUser("Dracula tried to do something illegal");
                Logger.WriteToDebugLog("DRACULA TRIED TO DO SOMETHING ILLEGAL");
            }

            Logger.WriteToDebugLog("Adding " + CurrentLocation.Name + " to the head of the trail");
            LocationTrail.Insert(0, CurrentLocation);
            MovePowersAlongTrail();
            CheckBloodLossAtSea(previousLocationType, g.NameOfHunterAlly());
            Logger.WriteToDebugLog("Checking if Dracula is in Castle Dracula");
            if (CurrentLocation.Type == LocationType.Castle)
            {
                Logger.WriteToDebugLog("Revealing Castle Dracula");
                CurrentLocation.IsRevealed = true;
                if (LocationWhereHideWasUsed != null)
                {
                    if (LocationWhereHideWasUsed.Type == LocationType.Castle)
                    {
                        Logger.WriteToDebugLog("Also revealing Hide as it was used at Castle Dracula");
                        RevealHide(ui);
                    }
                }
            }
        }
示例#12
0
        public void DoDoubleBackMove(GameState g, LocationDetail goingTo, UserInterface ui)
        {
            Logger.WriteToDebugLog("Remembering that Dracula is moving from a location of type " + CurrentLocation.Type);
            LocationType previousLocationType = CurrentLocation.Type;

            bool doublingBackToCatacombs = false;

            int doubleBackIndex = LocationTrail.FindIndex(location => location == goingTo);
            if (doubleBackIndex > -1)
            {
                Logger.WriteToDebugLog("Doubling back to a location in the trail");
                if (doubleBackIndex > 0)
                {
                    if (LocationTrail[doubleBackIndex - 1].Name == "Hide")
                    {
                        Logger.WriteToDebugLog("Dracula Doubled Back to " + goingTo + " and Hide is the next card in the trail");
                        ui.TellUser("Dracula Doubled Back to a location where he previously used Hide (position " + (doubleBackIndex - 1) + ")");
                        RevealHide(doubleBackIndex - 1, ui);
                    }
                    else if (doubleBackIndex > 1)
                    {
                        if (LocationTrail[doubleBackIndex - 1].Type == LocationType.Power && LocationTrail[doubleBackIndex - 2].Name == "Hide")
                        {
                            Logger.WriteToDebugLog("Dracula Doubled Back to " + goingTo + " and Hide is the next card in the trail, after " + LocationTrail[doubleBackIndex - 1].Name);
                            ui.TellUser("Dracula Doubled Back to a location where he previously used Hide (position " + (doubleBackIndex - 1) + ")");
                            RevealHide(doubleBackIndex - 2, ui);
                        }
                        else if (doubleBackIndex > 2)
                        {
                            if (LocationTrail[doubleBackIndex - 1].Type == LocationType.Power && LocationTrail[doubleBackIndex - 2].Type == LocationType.Power && LocationTrail[doubleBackIndex - 3].Name == "Hide")
                            {
                                Logger.WriteToDebugLog("Dracula Doubled Back to " + goingTo + " and Hide is the next card in the trail, after " + LocationTrail[doubleBackIndex - 1].Name + " and " + LocationTrail[doubleBackIndex - 2].Name);
                                ui.TellUser("Dracula Doubled Back to a location where he previously used Hide (position " + (doubleBackIndex - 1) + ")");
                                RevealHide(doubleBackIndex - 3, ui);
                            }
                        }
                    }
                }
                else
                {
                    Logger.WriteToDebugLog("TRIED TO DOUBLE BACK TO A LOCATION WHEN THERE ARE NONE IN THE LIST");
                }

            }
            else
            {
                Logger.WriteToDebugLog("Doubling back to a location in the Catacombs");
                doublingBackToCatacombs = true;
            }

            int doubleBackLocation = LocationTrail.FindIndex(loc => loc == goingTo);
            // move location to the front of the trail
            Logger.WriteToDebugLog("Temporarily holding " + goingTo.Name);
            if (doublingBackToCatacombs)
            {
                Logger.WriteToDebugLog("Removing " + goingTo.Name + " from the Catacombs");
                Catacombs[Array.IndexOf(Catacombs, goingTo)] = null;
                EncounterDetail encounterToDiscard = logic.DecideWhichCatacombsEncounterToDiscard(g, goingTo, ui);
                goingTo.Encounters.Remove(encounterToDiscard);
                g.AddEncounterToEncounterPool(encounterToDiscard);
            }
            else
            {
                Logger.WriteToDebugLog("Removing " + goingTo.Name + " from the trail");
                LocationTrail.Remove(goingTo);
            }
            Logger.WriteToDebugLog("Putting " + goingTo.Name + " back at the head of the trail");
            LocationTrail.Insert(0, goingTo);
            Logger.WriteToDebugLog("Dracula's current location is now " + CurrentLocation.Name);
            CurrentLocation = LocationTrail[0];

            Logger.WriteToGameLog("Dracula Doubled Back to " + CurrentLocation.Name + " from " + (doublingBackToCatacombs ? " the Catacombs" : " his trail"));

            // move the power cards that are in the trail
            for (int i = 0; i < Powers.Count(); i++)
            {
                if (Powers[i].positionInTrail == doubleBackLocation)
                {
                    Logger.WriteToDebugLog("Moving Double Back power position to the head of the trail");
                    Powers[i].positionInTrail = 0;
                }
                else if (Powers[i].positionInTrail < doubleBackLocation)
                {
                    Logger.WriteToDebugLog("Moving power " + Powers[i].name + " position further along the trail");
                    Powers[i].positionInTrail++;
                }
            }
            CheckBloodLossAtSea(previousLocationType, g.NameOfHunterAlly());
        }
示例#13
0
 public void AddDummyPowerCardToTrail(string powerName)
 {
     // add the power card to the location trail by using a dummy "location"
     LocationDetail powerCard = new LocationDetail();
     powerCard.Name = powerName;
     powerCard.Abbreviation = powerName.Substring(0, 3).ToUpper();
     if (powerCard.Name != "Hide")
     {
         Logger.WriteToDebugLog("Power card is not Hide, so it is added to the trail revealed");
         powerCard.IsRevealed = true;
         powerCard.Type = LocationType.Power;
     }
     Logger.WriteToDebugLog("Adding the power card " + powerCard.Name + " to the head of trail");
     LocationTrail.Insert(0, powerCard);
     MovePowersAlongTrail();
 }
示例#14
0
 internal void OrderEncounters(Hunter hunter, LocationDetail location)
 {
     logic.DecideOrderOfEncountersAtLocation(hunter, location);
 }
示例#15
0
 internal LocationDetail DecideWhichPortToGoToAfterStormySeas(GameState g, LocationDetail locationStormed)
 {
     return logic.DecideWhichPortToGoToAfterStormySeas(g, locationStormed);
 }
示例#16
0
文件: Map.cs 项目: UncleGus/dracula
        private LocationDetail[] CreateNetwork()
        {
            LocationDetail[] tempMap = new LocationDetail[72];
            LocationDetail nowhere = new LocationDetail();
            LocationDetail galway = new LocationDetail();
            LocationDetail dublin = new LocationDetail();
            LocationDetail liverpool = new LocationDetail();
            LocationDetail edinburgh = new LocationDetail();
            LocationDetail manchester = new LocationDetail();
            LocationDetail swansea = new LocationDetail();
            LocationDetail plymouth = new LocationDetail();
            LocationDetail nantes = new LocationDetail();
            LocationDetail lehavre = new LocationDetail();
            LocationDetail london = new LocationDetail();
            LocationDetail paris = new LocationDetail();
            LocationDetail brussels = new LocationDetail();
            LocationDetail amsterdam = new LocationDetail();
            LocationDetail strasbourg = new LocationDetail();
            LocationDetail cologne = new LocationDetail();
            LocationDetail hamburg = new LocationDetail();
            LocationDetail frankfurt = new LocationDetail();
            LocationDetail nuremburg = new LocationDetail();
            LocationDetail leipzig = new LocationDetail();
            LocationDetail berlin = new LocationDetail();
            LocationDetail prague = new LocationDetail();
            LocationDetail castledracula = new LocationDetail();
            LocationDetail santander = new LocationDetail();
            LocationDetail saragossa = new LocationDetail();
            LocationDetail bordeaux = new LocationDetail();
            LocationDetail toulouse = new LocationDetail();
            LocationDetail barcelona = new LocationDetail();
            LocationDetail clermontferrand = new LocationDetail();
            LocationDetail marseilles = new LocationDetail();
            LocationDetail geneva = new LocationDetail();
            LocationDetail genoa = new LocationDetail();
            LocationDetail milan = new LocationDetail();
            LocationDetail zurich = new LocationDetail();
            LocationDetail florence = new LocationDetail();
            LocationDetail venice = new LocationDetail();
            LocationDetail munich = new LocationDetail();
            LocationDetail zagreb = new LocationDetail();
            LocationDetail vienna = new LocationDetail();
            LocationDetail stjosephandstmary = new LocationDetail();
            LocationDetail sarajevo = new LocationDetail();
            LocationDetail szeged = new LocationDetail();
            LocationDetail budapest = new LocationDetail();
            LocationDetail belgrade = new LocationDetail();
            LocationDetail klausenburg = new LocationDetail();
            LocationDetail sofia = new LocationDetail();
            LocationDetail bucharest = new LocationDetail();
            LocationDetail galatz = new LocationDetail();
            LocationDetail varna = new LocationDetail();
            LocationDetail constanta = new LocationDetail();
            LocationDetail lisbon = new LocationDetail();
            LocationDetail cadiz = new LocationDetail();
            LocationDetail madrid = new LocationDetail();
            LocationDetail granada = new LocationDetail();
            LocationDetail alicante = new LocationDetail();
            LocationDetail cagliari = new LocationDetail();
            LocationDetail rome = new LocationDetail();
            LocationDetail naples = new LocationDetail();
            LocationDetail bari = new LocationDetail();
            LocationDetail valona = new LocationDetail();
            LocationDetail salonica = new LocationDetail();
            LocationDetail athens = new LocationDetail();
            LocationDetail atlanticocean = new LocationDetail();
            LocationDetail irishsea = new LocationDetail();
            LocationDetail englishchannel = new LocationDetail();
            LocationDetail northsea = new LocationDetail();
            LocationDetail bayofbiscay = new LocationDetail();
            LocationDetail mediterraneansea = new LocationDetail();
            LocationDetail tyrrheniansea = new LocationDetail();
            LocationDetail adriaticsea = new LocationDetail();
            LocationDetail ioniansea = new LocationDetail();
            LocationDetail blacksea = new LocationDetail();

            nowhere.Name = "Nowhere";
            nowhere.Abbreviation = "NOW";
            tempMap[(int)Location.Nowhere] = nowhere;

            galway.Name = "Galway";
            galway.Abbreviation = "GAW";
            galway.Type = LocationType.Town;
            galway.IsEastern = false;
            galway.ByRoad.Add(Location.Dublin);
            galway.BySea.Add(Location.AtlanticOcean);
            tempMap[(int)Location.Galway] = galway;

            dublin.Name = "Dublin";
            dublin.Abbreviation = "DUB";
            dublin.Type = LocationType.Town;
            dublin.IsEastern = false;
            dublin.ByRoad.Add(Location.Galway);
            dublin.BySea.Add(Location.IrishSea);
            tempMap[(int)Location.Dublin] = dublin;

            liverpool.Name = "Liverpool";
            liverpool.Abbreviation = "LIV";
            liverpool.Type = LocationType.City;
            liverpool.IsEastern = false;
            liverpool.ByRoad.Add(Location.Manchester);
            liverpool.ByRoad.Add(Location.Swansea);
            liverpool.ByTrain.Add(Location.Manchester);
            liverpool.BySea.Add(Location.IrishSea);
            tempMap[(int)Location.Liverpool] = liverpool;

            edinburgh.Name = "Edinburgh";
            edinburgh.Abbreviation = "EDI";
            edinburgh.Type = LocationType.City;
            edinburgh.IsEastern = false;
            edinburgh.ByRoad.Add(Location.Manchester);
            edinburgh.ByTrain.Add(Location.Manchester);
            edinburgh.BySea.Add(Location.NorthSea);
            tempMap[(int)Location.Edinburgh] = edinburgh;

            manchester.Name = "Manchester";
            manchester.Abbreviation = "MAN";
            manchester.Type = LocationType.City;
            manchester.IsEastern = false;
            manchester.ByRoad.Add(Location.Edinburgh);
            manchester.ByRoad.Add(Location.Liverpool);
            manchester.ByRoad.Add(Location.London);
            manchester.ByTrain.Add(Location.Edinburgh);
            manchester.ByTrain.Add(Location.Liverpool);
            manchester.ByTrain.Add(Location.London);
            tempMap[(int)Location.Manchester] = manchester;

            swansea.Name = "Swansea";
            swansea.Abbreviation = "SWA";
            swansea.Type = LocationType.Town;
            swansea.IsEastern = false;
            swansea.ByRoad.Add(Location.Liverpool);
            swansea.ByRoad.Add(Location.London);
            swansea.ByTrain.Add(Location.London);
            swansea.BySea.Add(Location.IrishSea);
            tempMap[(int)Location.Swansea] = swansea;

            plymouth.Name = "Plymouth";
            plymouth.Abbreviation = "PLY";
            plymouth.Type = LocationType.Town;
            plymouth.IsEastern = false;
            plymouth.ByRoad.Add(Location.London);
            plymouth.BySea.Add(Location.EnglishChannel);
            tempMap[(int)Location.Plymouth] = plymouth;

            nantes.Name = "Nantes";
            nantes.Abbreviation = "NAN";
            nantes.Type = LocationType.City;
            nantes.IsEastern = false;
            nantes.ByRoad.Add(Location.LeHavre);
            nantes.ByRoad.Add(Location.Paris);
            nantes.ByRoad.Add(Location.ClermontFerrand);
            nantes.ByRoad.Add(Location.Bordeaux);
            nantes.BySea.Add(Location.BayOfBiscay);
            tempMap[(int)Location.Nantes] = nantes;

            lehavre.Name = "Le Havre";
            lehavre.Abbreviation = "LEH";
            lehavre.Type = LocationType.Town;
            lehavre.IsEastern = false;
            lehavre.ByRoad.Add(Location.Nantes);
            lehavre.ByRoad.Add(Location.Paris);
            lehavre.ByRoad.Add(Location.Brussels);
            lehavre.ByTrain.Add(Location.Paris);
            lehavre.BySea.Add(Location.EnglishChannel);
            tempMap[(int)Location.LeHavre] = lehavre;

            london.Name = "London";
            london.Abbreviation = "LON";
            london.Type = LocationType.City;
            london.IsEastern = false;
            london.ByRoad.Add(Location.Manchester);
            london.ByRoad.Add(Location.Swansea);
            london.ByRoad.Add(Location.Plymouth);
            london.ByTrain.Add(Location.Manchester);
            london.ByTrain.Add(Location.Swansea);
            london.BySea.Add(Location.EnglishChannel);
            tempMap[(int)Location.London] = london;

            paris.Name = "Paris";
            paris.Abbreviation = "PAR";
            paris.Type = LocationType.City;
            paris.IsEastern = false;
            paris.ByRoad.Add(Location.Nantes);
            paris.ByRoad.Add(Location.LeHavre);
            paris.ByRoad.Add(Location.Brussels);
            paris.ByRoad.Add(Location.Strasbourg);
            paris.ByRoad.Add(Location.Geneva);
            paris.ByRoad.Add(Location.ClermontFerrand);
            paris.ByTrain.Add(Location.LeHavre);
            paris.ByTrain.Add(Location.Brussels);
            paris.ByTrain.Add(Location.Marseilles);
            paris.ByTrain.Add(Location.Bordeaux);
            tempMap[(int)Location.Paris] = paris;

            brussels.Name = "Brussels";
            brussels.Abbreviation = "BRU";
            brussels.Type = LocationType.City;
            brussels.IsEastern = false;
            brussels.ByRoad.Add(Location.LeHavre);
            brussels.ByRoad.Add(Location.Amsterdam);
            brussels.ByRoad.Add(Location.Cologne);
            brussels.ByRoad.Add(Location.Strasbourg);
            brussels.ByRoad.Add(Location.Paris);
            brussels.ByTrain.Add(Location.Cologne);
            brussels.ByTrain.Add(Location.Paris);
            tempMap[(int)Location.Brussels] = brussels;

            amsterdam.Name = "Amsterdam";
            amsterdam.Abbreviation = "AMS";
            amsterdam.Type = LocationType.City;
            amsterdam.IsEastern = false;
            amsterdam.ByRoad.Add(Location.Brussels);
            amsterdam.ByRoad.Add(Location.Cologne);
            amsterdam.BySea.Add(Location.NorthSea);
            tempMap[(int)Location.Amsterdam] = amsterdam;

            strasbourg.Name = "Strasbourg";
            strasbourg.Abbreviation = "STR";
            strasbourg.Type = LocationType.Town;
            strasbourg.IsEastern = false;
            strasbourg.ByRoad.Add(Location.Paris);
            strasbourg.ByRoad.Add(Location.Brussels);
            strasbourg.ByRoad.Add(Location.Cologne);
            strasbourg.ByRoad.Add(Location.Frankfurt);
            strasbourg.ByRoad.Add(Location.Nuremburg);
            strasbourg.ByRoad.Add(Location.Munich);
            strasbourg.ByRoad.Add(Location.Zurich);
            strasbourg.ByRoad.Add(Location.Geneva);
            strasbourg.ByTrain.Add(Location.Frankfurt);
            strasbourg.ByTrain.Add(Location.Zurich);
            tempMap[(int)Location.Strasbourg] = strasbourg;

            cologne.Name = "Cologne";
            cologne.Abbreviation = "COL";
            cologne.Type = LocationType.City;
            cologne.IsEastern = false;
            cologne.ByRoad.Add(Location.Brussels);
            cologne.ByRoad.Add(Location.Amsterdam);
            cologne.ByRoad.Add(Location.Hamburg);
            cologne.ByRoad.Add(Location.Leipzig);
            cologne.ByRoad.Add(Location.Frankfurt);
            cologne.ByRoad.Add(Location.Strasbourg);
            cologne.ByTrain.Add(Location.Brussels);
            cologne.ByTrain.Add(Location.Frankfurt);
            tempMap[(int)Location.Cologne] = cologne;

            hamburg.Name = "Hamburg";
            hamburg.Abbreviation = "HAM";
            hamburg.Type = LocationType.City;
            hamburg.IsEastern = false;
            hamburg.ByRoad.Add(Location.Cologne);
            hamburg.ByRoad.Add(Location.Berlin);
            hamburg.ByRoad.Add(Location.Leipzig);
            hamburg.ByTrain.Add(Location.Berlin);
            hamburg.BySea.Add(Location.NorthSea);
            tempMap[(int)Location.Hamburg] = hamburg;

            frankfurt.Name = "Frankfurt";
            frankfurt.Abbreviation = "FRA";
            frankfurt.Type = LocationType.Town;
            frankfurt.IsEastern = false;
            frankfurt.ByRoad.Add(Location.Strasbourg);
            frankfurt.ByRoad.Add(Location.Cologne);
            frankfurt.ByRoad.Add(Location.Leipzig);
            frankfurt.ByRoad.Add(Location.Nuremburg);
            frankfurt.ByTrain.Add(Location.Strasbourg);
            frankfurt.ByTrain.Add(Location.Cologne);
            frankfurt.ByTrain.Add(Location.Leipzig);
            tempMap[(int)Location.Frankfurt] = frankfurt;

            nuremburg.Name = "Nuremburg";
            nuremburg.Abbreviation = "NUR";
            nuremburg.Type = LocationType.Town;
            nuremburg.IsEastern = false;
            nuremburg.ByRoad.Add(Location.Strasbourg);
            nuremburg.ByRoad.Add(Location.Frankfurt);
            nuremburg.ByRoad.Add(Location.Leipzig);
            nuremburg.ByRoad.Add(Location.Prague);
            nuremburg.ByRoad.Add(Location.Munich);
            nuremburg.ByTrain.Add(Location.Leipzig);
            nuremburg.ByTrain.Add(Location.Munich);
            tempMap[(int)Location.Nuremburg] = nuremburg;

            leipzig.Name = "Leipzig";
            leipzig.Abbreviation = "LEI";
            leipzig.Type = LocationType.City;
            leipzig.IsEastern = false;
            leipzig.ByRoad.Add(Location.Cologne);
            leipzig.ByRoad.Add(Location.Hamburg);
            leipzig.ByRoad.Add(Location.Berlin);
            leipzig.ByRoad.Add(Location.Nuremburg);
            leipzig.ByRoad.Add(Location.Frankfurt);
            leipzig.ByTrain.Add(Location.Frankfurt);
            leipzig.ByTrain.Add(Location.Berlin);
            leipzig.ByTrain.Add(Location.Nuremburg);
            tempMap[(int)Location.Leipzig] = leipzig;

            berlin.Name = "Berlin";
            berlin.Abbreviation = "BER";
            berlin.Type = LocationType.City;
            berlin.IsEastern = false;
            berlin.ByRoad.Add(Location.Hamburg);
            berlin.ByRoad.Add(Location.Prague);
            berlin.ByRoad.Add(Location.Leipzig);
            berlin.ByTrain.Add(Location.Hamburg);
            berlin.ByTrain.Add(Location.Leipzig);
            berlin.ByTrain.Add(Location.Prague);
            tempMap[(int)Location.Berlin] = berlin;

            prague.Name = "Prague";
            prague.Abbreviation = "PRA";
            prague.Type = LocationType.City;
            prague.IsEastern = true;
            prague.ByRoad.Add(Location.Berlin);
            prague.ByRoad.Add(Location.Vienna);
            prague.ByRoad.Add(Location.Nuremburg);
            prague.ByTrain.Add(Location.Berlin);
            prague.ByTrain.Add(Location.Vienna);
            tempMap[(int)Location.Prague] = prague;

            castledracula.Name = "Castle Dracula";
            castledracula.Abbreviation = "CAS";
            castledracula.Type = LocationType.Castle;
            castledracula.IsEastern = true;
            castledracula.ByRoad.Add(Location.Klausenburg);
            castledracula.ByRoad.Add(Location.Galatz);
            tempMap[(int)Location.CastleDracula] = castledracula;

            santander.Name = "Santander";
            santander.Abbreviation = "SAN";
            santander.Type = LocationType.Town;
            santander.IsEastern = false;
            santander.ByRoad.Add(Location.Lisbon);
            santander.ByRoad.Add(Location.Madrid);
            santander.ByRoad.Add(Location.Saragossa);
            santander.ByTrain.Add(Location.Madrid);
            santander.BySea.Add(Location.BayOfBiscay);
            tempMap[(int)Location.Santander] = santander;

            saragossa.Name = "Saragossa";
            saragossa.Abbreviation = "SAG";
            saragossa.Type = LocationType.Town;
            saragossa.IsEastern = false;
            saragossa.ByRoad.Add(Location.Madrid);
            saragossa.ByRoad.Add(Location.Santander);
            saragossa.ByRoad.Add(Location.Bordeaux);
            saragossa.ByRoad.Add(Location.Toulouse);
            saragossa.ByRoad.Add(Location.Barcelona);
            saragossa.ByRoad.Add(Location.Alicante);
            saragossa.ByTrain.Add(Location.Madrid);
            saragossa.ByTrain.Add(Location.Bordeaux);
            saragossa.ByTrain.Add(Location.Barcelona);
            tempMap[(int)Location.Saragossa] = saragossa;

            bordeaux.Name = "Bordeaux";
            bordeaux.Abbreviation = "BOR";
            bordeaux.Type = LocationType.City;
            bordeaux.IsEastern = false;
            bordeaux.ByRoad.Add(Location.Saragossa);
            bordeaux.ByRoad.Add(Location.Nantes);
            bordeaux.ByRoad.Add(Location.ClermontFerrand);
            bordeaux.ByRoad.Add(Location.Toulouse);
            bordeaux.ByTrain.Add(Location.Paris);
            bordeaux.ByTrain.Add(Location.Saragossa);
            bordeaux.BySea.Add(Location.BayOfBiscay);
            tempMap[(int)Location.Bordeaux] = bordeaux;

            toulouse.Name = "Toulouse";
            toulouse.Abbreviation = "TOU";
            toulouse.Type = LocationType.Town;
            toulouse.IsEastern = false;
            toulouse.ByRoad.Add(Location.Saragossa);
            toulouse.ByRoad.Add(Location.Bordeaux);
            toulouse.ByRoad.Add(Location.ClermontFerrand);
            toulouse.ByRoad.Add(Location.Marseilles);
            toulouse.ByRoad.Add(Location.Barcelona);
            tempMap[(int)Location.Toulouse] = toulouse;

            barcelona.Name = "Barcelona";
            barcelona.Abbreviation = "BAC";
            barcelona.Type = LocationType.City;
            barcelona.IsEastern = false;
            barcelona.ByRoad.Add(Location.Saragossa);
            barcelona.ByRoad.Add(Location.Toulouse);
            barcelona.ByTrain.Add(Location.Saragossa);
            barcelona.ByTrain.Add(Location.Alicante);
            barcelona.BySea.Add(Location.MediterraneanSea);
            tempMap[(int)Location.Barcelona] = barcelona;

            clermontferrand.Name = "Clermont Ferrand";
            clermontferrand.Abbreviation = "CLE";
            clermontferrand.Type = LocationType.Town;
            clermontferrand.IsEastern = false;
            clermontferrand.ByRoad.Add(Location.Bordeaux);
            clermontferrand.ByRoad.Add(Location.Nantes);
            clermontferrand.ByRoad.Add(Location.Paris);
            clermontferrand.ByRoad.Add(Location.Geneva);
            clermontferrand.ByRoad.Add(Location.Marseilles);
            clermontferrand.ByRoad.Add(Location.Toulouse);
            tempMap[(int)Location.ClermontFerrand] = clermontferrand;

            marseilles.Name = "Marseilles";
            marseilles.Abbreviation = "MAR";
            marseilles.Type = LocationType.City;
            marseilles.IsEastern = false;
            marseilles.ByRoad.Add(Location.Toulouse);
            marseilles.ByRoad.Add(Location.ClermontFerrand);
            marseilles.ByRoad.Add(Location.Geneva);
            marseilles.ByRoad.Add(Location.Zurich);
            marseilles.ByRoad.Add(Location.Milan);
            marseilles.ByRoad.Add(Location.Genoa);
            marseilles.ByTrain.Add(Location.Paris);
            marseilles.BySea.Add(Location.MediterraneanSea);
            tempMap[(int)Location.Marseilles] = marseilles);

            geneva.Name = "Geneva";
            geneva.Abbreviation = "GEV";
            geneva.Type = LocationType.Town;
            geneva.IsEastern = false;
            geneva.ByRoad.Add(Location.Marseilles);
            geneva.ByRoad.Add(Location.ClermontFerrand);
            geneva.ByRoad.Add(Location.Paris);
            geneva.ByRoad.Add(Location.Strasbourg);
            geneva.ByRoad.Add(Location.Zurich);
            geneva.ByTrain.Add(Location.Milan);
            tempMap[(int)Location.Geneva] = geneva;

            genoa.Name = "Genoa";
            genoa.Abbreviation = "GEO";
            genoa.Type = LocationType.City;
            genoa.IsEastern = true;
            genoa.ByRoad.Add(Location.Marseilles);
            genoa.ByRoad.Add(Location.Milan);
            genoa.ByRoad.Add(Location.Venice);
            genoa.ByRoad.Add(Location.Florence);
            genoa.ByTrain.Add(Location.Milan);
            genoa.BySea.Add(Location.TyrrhenianSea);
            tempMap[(int)Location.Genoa = genoa;