void FindLiftA(Room r)
    {
        for (int i = 0; i < lifts.Count; i++)
        {
            //Specific Basement Case:
            if (GlobalControl.FloorNum == 0)
            {
                //Specific Elavator Usecases
                //Basement Player on B side

                if (ClassB_dropd.value < 4)
                {
                    Start1.transform.position = new Vector3(lifts[1].x, lifts[1].y, 0);
                }

                //Basement Player on D side:
                if (ClassB_dropd.value >= 4)
                {
                    Start1.transform.position = new Vector3(lifts[2].x, lifts[2].y, 0);
                }
            }


            //Specific 2F Case
            if (GlobalControl.FloorNum == 3)
            {
                //Specific Elavator Usecases
                //Basement Player on A side

                if (ClassB_dropd.value < 23)
                {
                    Start1.transform.position = new Vector3(lifts[0].x, lifts[0].y, 0);
                }

                //Basement Player on D side:
                if (ClassB_dropd.value >= 23)
                {
                    Start1.transform.position = new Vector3(lifts[2].x, lifts[2].y, 0);
                }
            }



            if (lifts[i].lift.ToString() == r.lift.ToString())
            {
                if (lifts[i].floorAccess[GlobalControl.FloorNum])
                {
                    Start1.transform.position = new Vector3(lifts[i].x, lifts[i].y, 0);
                    prevStartPos    = new Vector3(lifts[i].x, lifts[i].y, 0);
                    DestinationLift = lifts[i];

                    return;
                }
                else
                {
                    return;
                }
            }
        }
    }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="stairs"></param>
        /// <param name="liftSvc"></param>
        private void MakeLifts(List <CompassBox> stairs, int liftSvc)
        {
            var liftMatl  = new Material(new Color(1.0f, 0.9f, 0.4f, 0.8f), 0.0f, 0.0f, false, null, false, Guid.NewGuid(), "lift");
            var liftPolys = new List <Polygon>()
            {
                Polygon.Rectangle(liftSize, liftSize)
            };

            for (var i = 0; i < (LiftQuantity * 0.5) - 1; i++)
            {
                var liftPerim = Polygon.Rectangle(liftSize, liftSize);
                var liftTopo  = new CompassBox(liftPerim);
                var lastTopo  = new CompassBox(liftPolys.Last());
                liftPolys.Add(liftPerim.MoveFromTo(liftTopo.SW, lastTopo.SE));
            }
            var firstTopo = new CompassBox(liftPolys.First());
            var stairTopo = stairs.First();
            var makePolys = new List <Polygon>();

            foreach (var polygon in liftPolys)
            {
                makePolys.Add(polygon.MoveFromTo(firstTopo.SW, stairTopo.SE).Rotate(Position, Rotation));
            }
            liftPolys.Clear();
            liftPolys.Add(Polygon.Rectangle(liftSize, liftSize));
            for (var i = 0; i < (LiftQuantity * 0.5) - 1; i++)
            {
                var liftPerim = Polygon.Rectangle(liftSize, liftSize);
                var liftTopo  = new CompassBox(liftPerim);
                var lastTopo  = new CompassBox(liftPolys.Last());
                liftPolys.Add(liftPerim.MoveFromTo(liftTopo.SW, lastTopo.SE));
            }
            firstTopo = new CompassBox(liftPolys.First());
            stairTopo = stairs.Last();
            foreach (var polygon in liftPolys)
            {
                makePolys.Add(polygon.MoveFromTo(firstTopo.NW, stairTopo.NE).Rotate(Position, Rotation));
            }
            var liftSvcFactor = 0;

            foreach (var polygon in makePolys)
            {
                var lastLevel  = Levels.SkipLast((int)liftSvc * liftSvcFactor).Last();
                var liftHeight = lastLevel.Elevation - Levels.First().Elevation;
                if (liftHeight > 10.0)
                {
                    var extrude = new Elements.Geometry.Solids.Extrude(polygon, liftHeight, Vector3.ZAxis, false);
                    var geomRep = new Representation(new List <Elements.Geometry.Solids.SolidOperation>()
                    {
                        extrude
                    });
                    Lifts.Add(new LiftShaft(polygon, Vector3.ZAxis, Rotation, Levels.First().Elevation,
                                            liftHeight, polygon.Area() * liftHeight, "",
                                            new Transform(0.0, 0.0, Levels.First().Elevation), liftMatl, geomRep,
                                            false, Guid.NewGuid(), ""));
                }
                liftSvcFactor++;
            }
        }
 private JourneyTemplate Gather(string journeyTemplateName)
 {
     return(new JourneyTemplate
     {
         Name = journeyTemplateName,
         RouteDistance = RouteDistance,
         Lifts = Lifts.Select(lift => new LiftTemplate {
             LiftDistance = lift.LiftDistance, PassengerName = lift.PassengerName
         }).ToList()
     });
 }
 private void Fill(JourneyTemplate journeyTemplate)
 {
     RouteDistance = journeyTemplate.RouteDistance;
     Lifts.Clear();
     foreach (var liftTemplate in journeyTemplate.Lifts)
     {
         Lifts.Add(new LiftViewModel {
             LiftDistance = liftTemplate.LiftDistance, PassengerName = liftTemplate.PassengerName
         });
     }
 }
Esempio n. 5
0
        public void Tick()
        {
            if (((Calls == null) || Calls.Count < 1))
            {
                return;
            }
            Lift elevator = new Lift(Lifts[0].Id, Lifts[0].Floor, doorsOpen: true);

            Lifts.Remove(Lifts[0]);
            Lifts.Add(elevator);
            Calls.Remove(Calls[0]);
        }
        private void AddJourney()
        {
            var journeyId = _idFactory.Create();

            try
            {
                var lifts = Lifts.Select(lift => lift.ToDto());
                _commandDispatcher.Dispatch(new AddJourneyWithLiftsCommand(journeyId, RouteDistance, DateOfOccurrence, lifts));
                _eventBus.Publish(new JourneyWithLiftsAddedEvent(journeyId));
                Notification.Replace(new SuccessNotification("Added successfuly."));
            }
            catch (Exception e)
            {
                Notification.Replace(new ErrorNotification(e.Message));
            }
        }
 public string TravelDirection(Lifts DestinationLift)
 {
     if (GlobalControl.FloorNum > FloorB_dropd.value)
     {
         Direction = Directions.Down;
     }
     if (GlobalControl.FloorNum < FloorB_dropd.value)
     {
         Direction = Directions.Up;
     }
     if (GlobalControl.FloorNum == FloorB_dropd.value)
     {
         Direction = Directions.SameFloor;
     }
     return(Direction.ToString());
 }