Esempio n. 1
0
    void UpdateCarriages()
    {
        float _REAL_CARRIAGE_LENGTH = TrainCarriage.CARRIAGE_LENGTH + TrainCarriage.CARRIAGE_SPACING;

        carriages[0].UpdateCarriage(currentPosition, parentLine.Get_PositionOnRail(currentPosition),
                                    parentLine.Get_RotationOnRail(currentPosition));
        for (int i = 1; i < totalCarriages; i++)
        {
            TrainCarriage _current                 = carriages[i];
            TrainCarriage _prev                    = carriages[i - 1];
            Vector3       _prev_POS                = _prev.transform.position;
            float         carriageRailPosition     = _prev.positionOnRail;
            Vector3       _current_POS             = parentLine.Get_PositionOnRail(carriageRailPosition);
            float         realDistanceFromPrevious = Vector3.Distance(_current_POS, _prev_POS);
            int           attempts                 = 1000;
            for (int j = 0; j < attempts; j++)
            {
                if (realDistanceFromPrevious < (_REAL_CARRIAGE_LENGTH))
                {
                    carriageRailPosition -= 0.0001f;
                    if (carriageRailPosition < 0)
                    {
                        carriageRailPosition += 1f;
                    }

                    _current_POS             = parentLine.Get_PositionOnRail(carriageRailPosition);
                    realDistanceFromPrevious = Vector3.Distance(_current_POS, _prev_POS);
                }
                else
                {
                    break;
                }
            }

            _current.UpdateCarriage(carriageRailPosition, _current_POS,
                                    parentLine.Get_RotationOnRail(carriageRailPosition));
        }
    }
 public void Initialize()
 {
     TrainCarriageWithMediumCarnivore = new TrainCarriage(new Animal(Size.Medium, EatingBehaviour.Carnivore));
 }
Esempio n. 3
0
        static void Main(string[] args)
        {
            InitEvent();


            TrainTypeConfig KtrainTypeConfig = new TrainTypeConfig("K", "快车");
            TrainTypeConfig ZtrainTypeConfig = new TrainTypeConfig("Z", "直达");
            TrainTypeConfig TtrainTypeConfig = new TrainTypeConfig("T", "特快");
            TrainTypeConfig DtrainTypeConfig = new TrainTypeConfig("D", "动车");
            TrainTypeConfig GtrainTypeConfig = new TrainTypeConfig("G", "高铁");
            TrainTypeConfig CtrainTypeConfig = new TrainTypeConfig("C", "城际");
            //testDbContext.Add(KtrainTypeConfig);
            //testDbContext.Add(ZtrainTypeConfig);
            //testDbContext.Add(TtrainTypeConfig);
            //testDbContext.Add(DtrainTypeConfig);
            //testDbContext.Add(GtrainTypeConfig);
            //testDbContext.Add(CtrainTypeConfig);

            CarriageTypeConfig hardSeatCarriageTypeConfig     = new CarriageTypeConfig("硬座", "硬座");
            CarriageTypeConfig softSeatCarriageTypeConfig     = new CarriageTypeConfig("软座", "软座");
            CarriageTypeConfig oneSeatCarriageTypeConfig      = new CarriageTypeConfig("一等座", "一等座");
            CarriageTypeConfig twoSeatCarriageTypeConfig      = new CarriageTypeConfig("二等座", "二等座");
            CarriageTypeConfig businessSeatCarriageTypeConfig = new CarriageTypeConfig("商务座", "商务座");
            CarriageTypeConfig hardSleepCarriageTypeConfig    = new CarriageTypeConfig("硬卧", "硬卧");
            CarriageTypeConfig softSleepCarriageTypeConfig    = new CarriageTypeConfig("软卧", "软卧");
            CarriageTypeConfig eatSleepCarriageTypeConfig     = new CarriageTypeConfig("餐车", "餐车");
            //testDbContext.Add(hardSeatCarriageTypeConfig);
            //testDbContext.Add(softSeatCarriageTypeConfig);
            //testDbContext.Add(oneSeatCarriageTypeConfig);
            //testDbContext.Add(twoSeatCarriageTypeConfig);
            //testDbContext.Add(businessSeatCarriageTypeConfig);
            //testDbContext.Add(hardSleepCarriageTypeConfig);
            //testDbContext.Add(softSleepCarriageTypeConfig);
            //testDbContext.Add(eatSleepCarriageTypeConfig);



            IList <SeatTypeConfig> seatTypeConfigs        = new List <SeatTypeConfig>();
            SeatTypeConfig         oneSeatTypeConfig      = new SeatTypeConfig("一等座", "一等座");
            SeatTypeConfig         twoSeatTypeConfig      = new SeatTypeConfig("二等座", "二等座");
            SeatTypeConfig         businessSeatTypeConfig = new SeatTypeConfig("商务座", "商务座");

            seatTypeConfigs.Add(oneSeatTypeConfig);
            seatTypeConfigs.Add(twoSeatTypeConfig);
            seatTypeConfigs.Add(businessSeatTypeConfig);
            //testDbContext.AddRange(seatTypeConfigs);


            IList <SeatTypeConfig> sleepSeatTypeConfigs    = new List <SeatTypeConfig>();
            SeatTypeConfig         hardSleepSeatTypeConfig = new SeatTypeConfig("硬卧", "硬卧");
            SeatTypeConfig         softSleepSeatTypeConfig = new SeatTypeConfig("软卧", "软卧");

            sleepSeatTypeConfigs.Add(hardSleepSeatTypeConfig);
            sleepSeatTypeConfigs.Add(softSleepSeatTypeConfig);
            //testDbContext.AddRange(sleepSeatTypeConfigs);


            LocationSeatTypeConfig toplocationSeatTypeConfig    = new LocationSeatTypeConfig(hardSleepSeatTypeConfig, "Top", "上铺");
            LocationSeatTypeConfig middlelocationSeatTypeConfig = new LocationSeatTypeConfig(hardSleepSeatTypeConfig, "Middle", "上铺");
            LocationSeatTypeConfig downlocationSeatTypeConfig   = new LocationSeatTypeConfig(hardSleepSeatTypeConfig, "Down", "上铺");
            LocationSeatTypeConfig alocationSeatTypeConfig      = new LocationSeatTypeConfig(oneSeatTypeConfig, "A", "A", true);
            LocationSeatTypeConfig blocationSeatTypeConfig      = new LocationSeatTypeConfig(oneSeatTypeConfig, "B", "B");
            LocationSeatTypeConfig clocationSeatTypeConfig      = new LocationSeatTypeConfig(oneSeatTypeConfig, "C", "C");
            LocationSeatTypeConfig dlocationSeatTypeConfig      = new LocationSeatTypeConfig(oneSeatTypeConfig, "D", "D");
            LocationSeatTypeConfig elocationSeatTypeConfig      = new LocationSeatTypeConfig(oneSeatTypeConfig, "E", "E");
            LocationSeatTypeConfig flocationSeatTypeConfig      = new LocationSeatTypeConfig(oneSeatTypeConfig, "F", "F", true);

            //testDbContext.AddRange(toplocationSeatTypeConfig);
            //testDbContext.AddRange(middlelocationSeatTypeConfig);
            //testDbContext.AddRange(downlocationSeatTypeConfig);
            //testDbContext.AddRange(alocationSeatTypeConfig);
            //testDbContext.AddRange(blocationSeatTypeConfig);
            //testDbContext.AddRange(clocationSeatTypeConfig);
            //testDbContext.AddRange(dlocationSeatTypeConfig);
            //testDbContext.AddRange(elocationSeatTypeConfig);
            //testDbContext.AddRange(flocationSeatTypeConfig);

            IList <LocationSeatTypeConfig> locationSeatTypeConfigs = new List <LocationSeatTypeConfig>();

            locationSeatTypeConfigs.Add(alocationSeatTypeConfig);
            locationSeatTypeConfigs.Add(flocationSeatTypeConfig);

            //初始化火车
            Train         train  = new Train("000001");
            IList <Train> trains = new List <Train>()
            {
                train
            };
            //testDbContext.AddRange(trains);

            //初始化车厢
            TrainCarriage         trainCarriage1 = new TrainCarriage(train, 1, "商务车厢", businessSeatCarriageTypeConfig);
            TrainCarriage         trainCarriage2 = new TrainCarriage(train, 2, "一等座车厢", oneSeatCarriageTypeConfig);
            TrainCarriage         trainCarriage3 = new TrainCarriage(train, 3, "一等座车厢", oneSeatCarriageTypeConfig);
            TrainCarriage         trainCarriage4 = new TrainCarriage(train, 4, "二等座车厢", twoSeatCarriageTypeConfig);
            TrainCarriage         trainCarriage5 = new TrainCarriage(train, 5, "二等座车厢", twoSeatCarriageTypeConfig);
            TrainCarriage         trainCarriage6 = new TrainCarriage(train, 6, "餐车", eatSleepCarriageTypeConfig);
            TrainCarriage         trainCarriage7 = new TrainCarriage(train, 7, "硬座车厢", hardSleepCarriageTypeConfig);
            TrainCarriage         trainCarriage8 = new TrainCarriage(train, 8, "软卧车厢", softSleepCarriageTypeConfig);
            IList <TrainCarriage> trainCarriages = new List <TrainCarriage>();

            trainCarriages.Add(trainCarriage1);
            trainCarriages.Add(trainCarriage2);
            trainCarriages.Add(trainCarriage3);
            trainCarriages.Add(trainCarriage4);
            trainCarriages.Add(trainCarriage5);
            trainCarriages.Add(trainCarriage6);
            trainCarriages.Add(trainCarriage7);
            trainCarriages.Add(trainCarriage8);
            //testDbContext.AddRange(trainCarriages);

            //商务座座位 1排2个
            IList <Seat> seatsbusiness = new List <Seat>();

            for (int i = 1; i <= 8; i++)
            {
                foreach (var item in locationSeatTypeConfigs)
                {
                    businessSeatTypeConfig.AddLocationSeatTypeConfig(item);
                    Seat seat = new Seat(trainCarriage1, i, $"{i}{item.Code}", businessSeatTypeConfig);
                    seatsbusiness.Add(seat);
                }
            }

            locationSeatTypeConfigs.Add(blocationSeatTypeConfig);
            locationSeatTypeConfigs.Add(elocationSeatTypeConfig);
            //一等座座位 1排4个
            IList <Seat> seats1 = new List <Seat>();

            for (int i = 1; i <= 12; i++)
            {
                foreach (var item in locationSeatTypeConfigs)
                {
                    oneSeatTypeConfig.AddLocationSeatTypeConfig(item);
                    Seat seat = new Seat(trainCarriage2, i, $"{i}{item.Code}", oneSeatTypeConfig);
                    seats1.Add(seat);

                    Seat seat1 = new Seat(trainCarriage3, i, $"{i}{item.Code}", oneSeatTypeConfig);
                    seatsbusiness.Add(seat1);
                }
            }

            //二等座座位 1排5个
            locationSeatTypeConfigs.Add(clocationSeatTypeConfig);
            IList <Seat> seats2 = new List <Seat>();

            for (int i = 1; i <= 12; i++)
            {
                foreach (var item in locationSeatTypeConfigs)
                {
                    twoSeatTypeConfig.AddLocationSeatTypeConfig(item);
                    Seat seat = new Seat(trainCarriage4, i, $"{i}{item.Code}", twoSeatTypeConfig);
                    seats2.Add(seat);

                    Seat seat1 = new Seat(trainCarriage5, i, $"{i}{item.Code}", twoSeatTypeConfig);
                    seats2.Add(seat);
                }
            }

            //软卧
            IList <LocationSeatTypeConfig> sleeplocationSeatTypeConfigs = new List <LocationSeatTypeConfig>();

            sleeplocationSeatTypeConfigs.Add(toplocationSeatTypeConfig);
            sleeplocationSeatTypeConfigs.Add(downlocationSeatTypeConfig);
            IList <Seat> seatSoftSleep = new List <Seat>();

            for (int i = 1; i <= 10; i++)
            {
                foreach (var item in sleeplocationSeatTypeConfigs)
                {
                    softSleepSeatTypeConfig.AddLocationSeatTypeConfig(item);
                    Seat seat = new Seat(trainCarriage7, i, $"{i}{item.Code}", softSleepSeatTypeConfig);
                    seatSoftSleep.Add(seat);
                }
            }



            //硬卧
            sleeplocationSeatTypeConfigs.Add(middlelocationSeatTypeConfig);
            IList <Seat> seatHardSleep = new List <Seat>();

            for (int i = 1; i <= 10; i++)
            {
                foreach (var item in sleeplocationSeatTypeConfigs)
                {
                    hardSleepSeatTypeConfig.AddLocationSeatTypeConfig(item);
                    Seat seat = new Seat(trainCarriage8, i, $"{i}{item.Code}", hardSleepSeatTypeConfig);
                    seatHardSleep.Add(seat);
                }
            }


            IList <TrainStation> trainStations = new List <TrainStation>();

            for (int i = 1; i <= 10; i++)
            {
                Station station      = new Station(i.ToString(), $"站{i.ToString()}");
                var     trainStation = new TrainStation(station, i);
                trainStations.Add(trainStation);
            }


            IList <TrainTicketPrice> trainTicketPrices = new List <TrainTicketPrice>();
            var currentTrainStation = trainStations.FirstOrDefault();

            foreach (var item in trainStations.Skip(1))
            {
                TrainTicketPrice trainTicketPrice = new TrainTicketPrice(currentTrainStation, item);


                TrainSeatPrice trainSeatPrice = new TrainSeatPrice(trainTicketPrice, oneSeatTypeConfig, 20);

                var trainSeatPrice1 = new TrainSeatPrice(trainTicketPrice, twoSeatTypeConfig, 10, true);


                var trainSeatPrice2 = new TrainSeatPrice(trainTicketPrice, businessSeatTypeConfig, 100);


                var trainSeatPrice3 = new TrainSeatPrice(trainTicketPrice, softSleepSeatTypeConfig, 80);


                var trainSeatPrice4 = new TrainSeatPrice(trainTicketPrice, hardSleepSeatTypeConfig, 40);


                trainTicketPrices.Add(trainTicketPrice);
                currentTrainStation = item;
            }


            TrainNumber    trainNumber = new TrainNumber("G8888", "高铁8888次", GtrainTypeConfig, trainStations, trainTicketPrices, trains);
            DateTimeOffset date        = new DateTime(2019, 1, 31);
            TrainShift     trainShift  = new TrainShift(trainNumber, train, date);

            //初始化客户信息
            CustomerInfo customerInfo   = new CustomerInfo("客户1", "18888888888", "[email protected]");
            var          userContract1  = new UserContract(customerInfo, "张三", "3604031324567835", ContractUserType.Children);
            var          userContract2  = new UserContract(customerInfo, "李四", "3604564554545456");
            var          userContract11 = new UserContract(customerInfo, "刘六2", "3604564554545454");

            var order1 = customerInfo.BookTrainTicket(trainShift, trainShift.TrainNumber.TrainStations[2], trainShift.TrainNumber.TrainStations[5], oneSeatTypeConfig, customerInfo, customerInfo.UserContracts);

            //初始化客户信息
            CustomerInfo customerInfo1 = new CustomerInfo("客户2", "13655555555", "[email protected]");
            var          userContract3 = new UserContract(customerInfo1, "王五", "3604031324567833");
            var          userContract4 = new UserContract(customerInfo1, "刘六", "3604564554545454");


            var order2 = customerInfo1.BookTrainTicket(trainShift, trainShift.TrainNumber.TrainStations[7], trainShift.TrainNumber.TrainStations[9], oneSeatTypeConfig, customerInfo1, customerInfo1.UserContracts);



            CustomerInfo customerInfo2 = new CustomerInfo("客户3", "15588885558", "[email protected]");
            var          userContract5 = new UserContract(customerInfo2, "徐梦", "3604031324567831");
            var          userContract6 = new UserContract(customerInfo2, "刘爽", "3604564554545452");

            var order3 = customerInfo2.BookTrainTicket(trainShift, trainShift.TrainNumber.TrainStations[1], trainShift.TrainNumber.TrainStations[9], oneSeatTypeConfig, customerInfo2, customerInfo2.UserContracts);


            //ef 持久化数据库  ,TODO使用仓库持久化
            TestDbContext testDbContext = new TestDbContext();

            testDbContext.Add(order1.Item3);
            testDbContext.Add(order2.Item3);
            testDbContext.SaveChanges();
            var adad = testDbContext.TrainOrders.ToList();


            //testDbContext.Add(order1.Item3);
            //testDbContext.Add(order2.Item3);
            //testDbContext.Add(order3.Item3);
            //testDbContext.SaveChanges();
            //var ss = testDbContext.CustomerInfos.FirstOrDefault();

            Console.ReadLine();
        }
Esempio n. 4
0
 public void Initialize()
 {
     TrainCarriageWithSmallCarnivore = new TrainCarriage(new Animal(Size.Small, EatingBehaviour.Carnivore));
 }
Esempio n. 5
0
        public void TrainCarriage_Should_Contain_1_Animal_Up_On_Creation()
        {
            TrainCarriage trainCarriage = new TrainCarriage(new Animal(Size.Big, EatingBehaviour.Carnivore));

            Assert.IsTrue(trainCarriage.Animals.Count.Equals(1));
        }
Esempio n. 6
0
 public void Initialize()
 {
     TrainCarriageWithBigHerbivore = new TrainCarriage(new Animal(Size.Big, EatingBehaviour.Herbivore));
 }