Beispiel #1
0
 private GameBoard(
     IEnumerable <Mine> mines,
     IEnumerable <Location> locations,
     LocationsDeck locationDeck,
     IEnumerable <Corporation> corporations,
     CorporationsDeck corporationsDeck,
     SalesDeck salesDeck,
     IEnumerable <Route> routes)
 {
     Mines            = mines;
     Locations        = locations;
     LocationsDeck    = locationDeck;
     Corporations     = corporations;
     CorporationsDeck = corporationsDeck;
     SalesDeck        = salesDeck;
     Routes           = routes;
     SellOffPile      = new SellOffPile();
 }
Beispiel #2
0
        public static GameBoard Create(Random random)
        {
            var duluthMine   = new Mine <Resource.Iron>("North Star Iron Mine", random);
            var knoxvillMine = new Mine <Resource.Zinc>("Smokey Appalachian Zinc Mine", random);
            var tusconMine   = new Mine <Resource.Copper>("Great Canyon State Copper Mine", random);
            var renoMine     = new Mine <Resource.Silver>("Five Card Silver Mine", random);

            var mines = new Mine[]
            {
                duluthMine,
                knoxvillMine,
                tusconMine,
                renoMine,
            };

            var locations = new Location[]
            {
                new Location(Reno, renoMine),
                new Location(Knoxville, knoxvillMine),
                new Location(Tuscon, tusconMine),
                new Location(Duluth, duluthMine),
                new Location(Denver, new EmptyLocation()),
                new Location(LosAngeles, new EmptyLocation()),
                new Location(Detroit, new EmptyLocation()),
                new Location(Houston, new EmptyLocation()),
                new Location(Seattle, new EmptyLocation()),
                new Location(Jacksonville, new EmptyLocation()),
                new Location(Boston, new EmptyLocation()),
                new Location(Indianapolis, new EmptyLocation()),
                new Location(NewOrleans, new EmptyLocation()),
                new Location(SaltLakeCity, new EmptyLocation()),
                new Location(Billings, new EmptyLocation()),
                new Location(KansasCity, new EmptyLocation()),
            };

            var ll = locations.ToDictionary((l) => l.Name);

            var routes = new Route[]
            {
                new Route(ShippingMethods.Ship, ll[Seattle], ll[LosAngeles]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[Seattle], ll[Reno]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[Seattle], ll[SaltLakeCity]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[Seattle], ll[Billings]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[Reno], ll[SaltLakeCity]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[Reno], ll[LosAngeles]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[LosAngeles], ll[SaltLakeCity]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[LosAngeles], ll[Tuscon]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[SaltLakeCity], ll[Billings]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[SaltLakeCity], ll[Tuscon]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[SaltLakeCity], ll[Denver]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[Tuscon], ll[Denver]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[Billings], ll[Denver]),
                new Route(ShippingMethods.Train, ll[Tuscon], ll[Houston]),
                new Route(ShippingMethods.Train, ll[Billings], ll[Duluth]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[Denver], ll[KansasCity]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[Duluth], ll[KansasCity]),
                new Route(ShippingMethods.Ship, ll[Duluth], ll[Detroit]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[Duluth], ll[Indianapolis]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[KansasCity], ll[Indianapolis]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[KansasCity], ll[NewOrleans]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[KansasCity], ll[Houston]),
                new Route(ShippingMethods.Truck, ll[Houston], ll[NewOrleans]),
                new Route(ShippingMethods.Ship, ll[NewOrleans], ll[Jacksonville]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[NewOrleans], ll[Knoxville]),
                new Route(ShippingMethods.Truck | ShippingMethods.Train, ll[Jacksonville], ll[Knoxville]),
                new Route(ShippingMethods.Truck, ll[Indianapolis], ll[Knoxville]),
                new Route(ShippingMethods.Train, ll[Boston], ll[Indianapolis]),
                new Route(ShippingMethods.Ship, ll[Detroit], ll[Boston]),
                new Route(ShippingMethods.Ship, ll[Jacksonville], ll[Boston]),
                new Route(ShippingMethods.Truck, ll[Detroit], ll[Indianapolis]),
            };

            foreach (var route in routes)
            {
                route.BindLocationRoutes();
            }

            var locationDeck = new LocationsDeck(locations, random);

            var corporations = new[]
            {
                new Corporation("LuDare"),
                new Corporation("SparkTech Industries"),
                new Corporation("Adico"),
            };

            var corporationsDeck = new CorporationsDeck(corporations, random);

            var salesDeck = new SalesDeck(random);

            return(new GameBoard(mines,
                                 locations,
                                 locationDeck,
                                 corporations,
                                 corporationsDeck,
                                 salesDeck,
                                 routes));
        }