Пример #1
0
        private void LeaveElevator(int tick, IElevator elev)
        {
            // Added by Xiaobin
            SenElevator senElev = elev as SenElevator;

            senElev.AddCapability(_weight);

            Console.WriteLine("[Passenger] {0} leave elevator {1}, floor {2}",
                              _name, elev.ID, _targetFloor);
            _reqCompleteTime = tick;
            _isArrived       = true;
            _isInside        = false;
        }
Пример #2
0
        private void EnterElevator(IScheduler scheduler, int tick, IElevator elev)
        {
            SenElevator senElev = elev as SenElevator;

            if (senElev.FreeCapability >= _weight)
            {
                Console.WriteLine("[Passenger] {0} enter elevator {1}, at floor {2}",
                                  _name, elev.ID, _sourceFloor);
                _isInside      = true;
                _targetReqTime = tick;
                _myElev        = elev;
                senElev.SubCapability(_weight);
                PassengerReq req = new PassengerReq(RequestType.DestinationReq, tick, _targetFloor, Direction.No);
                req.SetReqInElevator(senElev);
                scheduler.QueueReq(req);
            }
            else if (senElev.CurrentStatus.DoorCloseOpenTicks < 4) //wait for one tick to try enter again.
            {
                Console.WriteLine("[Passenger] {0} can't get in due to over-weighted, press up/down again", this.Name);
                scheduler.QueueReq(
                    new PassengerReq(RequestType.DirectionReq, tick, this._sourceFloor, this.UpDown));
            }
        }
Пример #3
0
        public static List <SenElevator> LoadElevators(List <ElevatorConf> conf)
        {
            List <SenElevator> all = new List <SenElevator>();

            try
            {
                foreach (var ele in conf)
                {
                    SenElevator obj = new SenElevator(null,
                                                      ele.ID,
                                                      ele.Capability,
                                                      ele.FloorHeight,
                                                      ele.FloorMax,
                                                      ele.InitHeight
                                                      );
                    all.Add(obj);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            return(all);
        }