示例#1
0
    private void OnElevatorDownButtonClick(int floor)
    {
        downButtons[floor - 1].interactable = false;
        ElevatorTask task = new ElevatorTask(ElevatorTask.STOP_FLOOR_TASK_TYPE, floor);

        task.DesiredDirection = Elevator.Direction.Down;
        ElevatorManager.GetInstance().AddTaskToQueue(task);
    }
示例#2
0
    public void InitData(int floor)
    {
        floorsCount = floor;
        stopButton.onClick.AddListener(OnStopButtonClick);

        ElevatorManager.GetInstance().SetElevatorPanel(this);
        CreateFloorsButtons();
    }
 void Start()
 {
     doorScript    = door.GetComponent <Door>();
     manager       = GetComponent <ElevatorManager>();
     isUp          = 1;
     movingTowards = wp[moveCounter];
     full          = Random.Range(0, 9);
 }
示例#4
0
 // Start is called before the first frame update
 static MainManager()
 {
     Managers         = GameObject.Find("Managers");
     CanvasManager    = Managers.GetComponent <CanvasManager>();
     MainEnemyManager = Managers.GetComponent <MainEnemyManager>();
     GameManager      = Managers.GetComponent <GameManager>();
     ElevatorManager  = GameObject.Find("Elevator").GetComponent <ElevatorManager>();
     PlayerManager    = GameObject.Find("Stickman").GetComponent <PlayerManager>();
 }
示例#5
0
    public static ElevatorManager GetInstance()
    {
        if (g_instance == null)
        {
            g_instance = new ElevatorManager();
        }

        return(g_instance);
    }
示例#6
0
        internal void InitializeManagers()
        {
            Manager passengerManager = new PassengerManager(dispatcher, new PassengerGenerator());
            Manager elevatorManager  = new ElevatorManager(dispatcher, new ElevatorMovementStrategy(dispatcher), Building.GetInstance().Elevators);
            Manager queueManager     = new QueueManager(dispatcher, Building.GetInstance().Floors);

            dispatcher.PassengerManager = passengerManager;
            dispatcher.ElevatorManager  = elevatorManager;
            dispatcher.QueueManager     = queueManager;
        }
示例#7
0
        private static void Main(string[] args)
        {
            Console.WriteLine("Welcome to Elevator! All elevator is on the ground floor to start off.!");

            EnqueueFirstSetRequests();

            Task.Run(() => ElevatorManager.StartAsync(ElevatorManager.UpDirectionQueue));
            Task.Run(() => ElevatorManager.StartAsync(ElevatorManager.DownDirectionQueue));

            EnqueueSecondSetRequests();

            Console.ReadLine();
        }
        public void Do_Not_Serve_One_Elevator_Down_Request()
        {
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 4, Direction = Status.Down
            });

            Task.Run(() => ElevatorManager.StartAsync(ElevatorManager.UpDirectionQueue));

            Thread.Sleep(2000);

            Assert.IsFalse(ElevatorManager.DownDirectionQueue.IsEmpty());
        }
示例#9
0
        public void SelectButton(Direction direction)
        {
            lock (Buttons[direction].PressButtonLock)
            {
                if (!Buttons[direction].IsPressed)
                {
                    ElevatorManager.FindAppropriateElevator(direction, this);
                }

                Buttons[direction].IsPressed = true;

                Events[direction].ButtonReleasedEvent.Reset();
            }
        }
示例#10
0
    /// <summary>
    /// Creates an enumerator that yields the checkpoint progression for the elevator
    /// WARNING: This enumerator may never stop yielding and could end in permanent loops
    /// </summary>
    /// <returns></returns>
    private IEnumerable <Transform> GetCheckpointProgression(ElevatorManager manager)
    {
        switch (manager.EOLOption)
        {
        case EndOfLineOption.Destroy:
            //Get every checkpoint...
            foreach (var i in manager.Checkpoints)
            {
                yield return(i);
            }

            //...Then stop
            yield break;

        case EndOfLineOption.Loop:
            while (true)
            {
                //Get every checkpoint, then loop
                foreach (var i in manager.Checkpoints)
                {
                    yield return(i);
                }
            }

        case EndOfLineOption.Return:

            //Get every checkpoint....
            foreach (var i in manager.Checkpoints)
            {
                yield return(i);
            }

            while (true)
            {
                //...Then get the same checkpoints backwards (skipping the one we're already at)...
                foreach (var i in manager.Checkpoints.Reverse().Skip(1))
                {
                    yield return(i);
                }

                //...Then get the same checkpoints forwards (skipping the one we're already at), and loop
                foreach (var i in manager.Checkpoints.Skip(1))
                {
                    yield return(i);
                }
            }
        }
    }
示例#11
0
        static void Main(string[] args)
        {
            Console.WriteLine("Start.. ");
            ElevatorManager elevatorManager = ElevatorManager.getEleManager;

            Elevator ele = elevatorManager.getElevatorToUserFloor(0, ElevatorStatus.UP);

            Console.WriteLine("Travel from 0 to 7 floor");
            elevatorManager.traveltoDestFloor(0, 7, ele);
            Console.WriteLine(" ");


            Console.WriteLine("Travel from 0 to 6 floor");
            ele = elevatorManager.getElevatorToUserFloor(0, ElevatorStatus.UP);
            elevatorManager.traveltoDestFloor(0, 6, ele);
            Console.WriteLine(" ");


            Console.WriteLine("Travel from 6 to 4 floor");
            ele = elevatorManager.getElevatorToUserFloor(6, ElevatorStatus.DOWN);
            elevatorManager.traveltoDestFloor(6, 4, ele);
            Console.WriteLine(" ");

            elevatorManager.SetElevatorToLongStop(2);

            Console.WriteLine("Travel from 0 to -2 floor");
            ele = elevatorManager.getElevatorToUserFloor(0, ElevatorStatus.DOWN);
            elevatorManager.traveltoDestFloor(0, -2, ele);
            Console.WriteLine(" ");
            elevatorManager.Display();
            Console.WriteLine(" ");

            Console.WriteLine("Travel from 3 to 0 floor");
            ele = elevatorManager.getElevatorToUserFloor(3, ElevatorStatus.DOWN);
            elevatorManager.traveltoDestFloor(3, 0, ele);

            Console.WriteLine("Final Status..");

            elevatorManager.Display();

            Console.WriteLine("Completed.. ");


            Console.ReadLine();
        }
示例#12
0
    private void Update()
    {
        if (IsMoving)
        {
            timePassedMoving += Time.deltaTime;
            if (timePassedMoving > MOVE_TIME)
            {
                if (currentTask.TargetDirection == Direction.Down)
                {
                    currentFloor--;
                }
                else if (currentTask.TargetDirection == Direction.Up)
                {
                    currentFloor++;
                }

                ElevatorManager.GetInstance().SetCurrentFloor(currentFloor);
                currentFloorLabel.text = currentFloor.ToString();
                timePassedMoving       = 0;

                if (currentFloor == targetFloor)
                {
                    IsMoving = false;
                    OpenDoors();
                    ElevatorManager.GetInstance().SetTaskComplete(currentTask);
                }
            }
        }

        if (IsDoorsOpen)
        {
            timePassedMoving += Time.deltaTime;

            if (timePassedMoving > MOVE_TIME)
            {
                timePassedMoving = 0;
                CloseDoors();
            }
        }
    }
示例#13
0
    void FindMyManager()
    {
        elevatorManagers = Object.FindObjectsOfType(typeof(ElevatorManager)) as ElevatorManager[];
        managerTotal     = elevatorManagers.Length;

        if (elevatorManagers.Length != 0)
        {
            //Choose the manager which is a parent of the button
            for (int i = 0; i < managerTotal; i++)
            {
                ElevatorManager aManager = (ElevatorManager)elevatorManagers[i];
                //Debug.Log ("Testing..." + aManager);
                if (this.transform.IsChildOf(aManager.transform))
                {
                    myManager = aManager;
                }
            }
        }
        else
        {
            //Warn the user there are no managers in the scene
            Debug.Log("There are no ElevatorManager scripts assigned in this scene. Elevator buttopns will not work without these scripts. Please see the manual for assistance");
        }
    }
示例#14
0
        private static void EnqueueFirstSetRequests()
        {
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 4, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 8, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 10, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 2, Direction = Status.Up
            });

            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 10, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 3, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 4, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 8, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 5, Direction = Status.Down
            });

            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 8, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 9, Direction = Status.Up
            });

            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 1, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 2, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 3, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 4, Direction = Status.Up
            });

            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 5, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 6, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 7, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 8, Direction = Status.Up
            });

            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 9, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 10, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 11, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 12, Direction = Status.Up
            });

            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 13, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 14, Direction = Status.Up
            });

            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 8, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 9, Direction = Status.Up
            });

            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 15, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 14, Direction = Status.Down
            });

            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 13, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 12, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 11, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 10, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 9, Direction = Status.Down
            });
        }
示例#15
0
 public void InitData(int floor)
 {
     floorsCount = floor;
     ElevatorManager.GetInstance().SetFloorsPanel(this);
     CreateFloorsButtons();
 }
示例#16
0
 private void Start()
 {
     ElevatorManager.GetInstance().SetManagedElevator(this);
 }
示例#17
0
 private void OnStopButtonClick()
 {
     ElevatorManager.GetInstance().AddTaskToQueue(new ElevatorTask(ElevatorTask.STOP_TASK_TYPE));
 }
示例#18
0
    private void OnFloorButtonClick(int floor)
    {
        buttons[floor - 1].interactable = false;

        ElevatorManager.GetInstance().AddTaskToQueue(new ElevatorTask(ElevatorTask.MOVE_TASK_TYPE, floor));
    }
    void Start()
    {
        manager = GameObject.Find("Elevator").GetComponent<ElevatorManager>();

        manager.SetButton(false, transform.name);
    }
 public void SetElevator(bool isOnElevator, ElevatorManager elevatorManager) //Called to set the Elevator Data
 {
     this.isOnElevator    = isOnElevator;
     this.elevatorManager = elevatorManager;
 }
示例#21
0
 public Floor(ElevatorManager manager, int Level)
 {
     Manager = manager;
     Queue = new List<Human>();
     this.Level = Level;
     Button = false;
     log.Write(DateTime.Now.Minute + ":" + DateTime.Now.Second + " - ");
     log.Write("Создан экземпляр этажа ");
     log.WriteLine(Level);
 }
示例#22
0
        public static void Main()
        {
            List<int> list = new List<int>();
            for (var i = 0; i < 10; i++)
            {
                list.Add(i);
            }

            // method 1
            for (var i = list.Count - 1; i >= 0; i--)
                if (false)
                    list.RemoveAt(i);

            // method 2 - linq
            List<int> result;
            result = (from el in list
                      where el < 5
                      select el).ToList();

            var list2 = new List<string> { "1", "2", "hello", "world" };

            // method 2 - linq 2
            result = list.Where(el => el < 5).ToList();
            result = list2.Where(el => { int o; return int.TryParse(el, out o); })
                          .Select(el => int.Parse(el))
                          .ToList();

            Time.Start();
            Floor[] levels = new Floor[LevelCount];
            var manager = new ElevatorManager(LevelCount, ElevatorCount,levels);
            for (var i = 0; i < LevelCount; i++)
            {
                Floor TmpFloor = new Floor(manager, i);
                levels[i] = TmpFloor;
            }
            Elevator[] elevators = new Elevator[ElevatorCount];
            manager.AddElevators(elevators);

            var humanGenerator = new HumanGenerator(RefreshHuman, levels);

            for (var i = 0; i < ElevatorCount; i++)
                elevators[i] = new Elevator(manager);

            DateTime startData = DateTime.Now;

            Console.WriteLine(startData.Ticks/10000000);
               // Console.ReadKey();

            while ((DateTime.Now-startData).Ticks/10000000 < 20)
            {

                //log.WriteLine("humangeneratorUpdate"+ elevators[0].CorrentLevel);
                humanGenerator.Update();
                //log.WriteLine("managerupdate"+ elevators[0].CorrentLevel);
                manager.Update();
                for (var i = 0; i < ElevatorCount; i++)
                    if (elevators[i].Humans != null)
                        for (var j = 0; j < elevators[i].Humans.Count; j++)
                            elevators[i].Humans[j].Update();

                foreach (var floor in levels) {
                    foreach (var human in floor.Queue)
                        human.Update();
                    }
                // log.WriteLine("elevatorUpdate"+ elevators[0].CorrentLevel);

                //System.Threading.Thread.Sleep(5);
                for (var i = 0; i < ElevatorCount; i++)
                {
                    elevators[i].Update();
                }
            }
            log.Dispose();
        }
示例#23
0
 public Elevator(ElevatorManager manager)
 {
     Manager = manager;
     Humans = new List<Human>();
     Free = true;
     StartLevel = 0;
 }
示例#24
0
        private static void EnqueueSecondSetRequests()
        {
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 1, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = -1, Direction = Status.Up
            });

            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 18, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 15, Direction = Status.Down
            });

            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 15, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 16, Direction = Status.Up
            });

            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 17, Direction = Status.Up
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 18, Direction = Status.Up
            });

            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 10, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 3, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 4, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 8, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 5, Direction = Status.Down
            });

            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 18, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 17, Direction = Status.Down
            });
            ElevatorManager.EnqueueRequest(new ElevatorRequest()
            {
                CurrentFloor = 16, Direction = Status.Down
            });
        }
示例#25
0
 // Token: 0x060000E5 RID: 229 RVA: 0x00007324 File Offset: 0x00005524
 private void Awake()
 {
     if (base.GetComponentInChildren <ReflectionProbe>())
     {
         this.probe             = base.GetComponentInChildren <ReflectionProbe>();
         this.probe.refreshMode = ReflectionProbeRefreshMode.OnAwake;
         this.isReflectionProbe = true;
     }
     else
     {
         this.isReflectionProbe = false;
     }
     this.isPlayer   = false;
     Elevator.Moving = false;
     this.BtnSoundFX = base.GetComponent <AudioSource>();
     if (base.transform.parent != null)
     {
         this.ElevatorsParent = base.transform.parent.gameObject;
         if (this.ElevatorsParent.GetComponent <ElevatorManager>())
         {
             this._elevatorManager = this.ElevatorsParent.GetComponent <ElevatorManager>();
         }
     }
     this.SoundFX = new GameObject().AddComponent <AudioSource>();
     this.SoundFX.transform.parent   = base.gameObject.transform;
     this.SoundFX.transform.position = new Vector3(base.gameObject.transform.position.x, base.gameObject.transform.position.y + 2.2f, base.gameObject.transform.position.z);
     this.SoundFX.gameObject.name    = "SoundFX";
     this.SoundFX.playOnAwake        = false;
     this.SoundFX.spatialBlend       = 1f;
     this.SoundFX.minDistance        = 0.1f;
     this.SoundFX.maxDistance        = 10f;
     this.SoundFX.rolloffMode        = AudioRolloffMode.Linear;
     this.SoundFX.priority           = 256;
     this.DoorsAnim = base.gameObject.GetComponent <Animation>();
     this.AnimName  = this.DoorsAnim.clip.name;
     if (GameObject.FindGameObjectWithTag(this.PlayerTag))
     {
         this.Player = GameObject.FindGameObjectWithTag(this.PlayerTag).GetComponent <Rigidbody>();
         if (this.Player.gameObject.GetComponent <CapsuleCollider>())
         {
             this.PlayerHeight         = this.Player.gameObject.GetComponent <CapsuleCollider>().height / 2f;
             this.isRigidbodyCharacter = true;
             this.isPlayer             = true;
         }
         else if (this.Player.gameObject.GetComponent <CharacterController>())
         {
             this.PlayerHeight         = this.Player.gameObject.GetComponent <CharacterController>().height / 2f + this.Player.gameObject.GetComponent <CharacterController>().skinWidth;
             this.isRigidbodyCharacter = false;
             this.isPlayer             = true;
         }
     }
     else
     {
         Debug.LogWarning("Elevator: Can't find Player. Please, check that your Player object has 'Player' tag.");
         base.enabled  = false;
         this.isPlayer = false;
     }
     if (this.isPlayer)
     {
         if (this.Player.GetComponentInChildren <Camera>().transform)
         {
             this.PlayerCam = this.Player.GetComponentInChildren <Camera>().transform;
         }
         else
         {
             Debug.LogWarning("Elevator: Can't find Player's camera. Please, check that your Player have a camera parented to it.");
             base.enabled = false;
         }
     }
     foreach (GameObject gameObject in GameObject.FindGameObjectsWithTag("Elevator"))
     {
         if (gameObject.transform.parent == base.gameObject.transform.parent && gameObject != base.gameObject)
         {
             this.Elevators.Add(gameObject);
         }
     }
     if (this._elevatorManager)
     {
         ElevatorManager elevatorManager = this._elevatorManager;
         elevatorManager.WasStarted = (UnityAction)Delegate.Combine(elevatorManager.WasStarted, new UnityAction(this.RandomInit));
         return;
     }
     Debug.LogWarning("Elevator: To use more than one elevator shaft, please create an empty gameobject in your scene, add the ElevatorManager.cs script on it and make elevators of one elevator shaft as child to this object. Repeate this for every different elevators shafts.");
 }
示例#26
0
 private void Awake()
 {
     instance = this;
 }
示例#27
0
 void Start()
 {
     eM = GetComponent <ElevatorManager>();
 }
 /// <summary>
 /// 设置管理器.
 /// </summary>
 /// <param name="manager"></param>
 public void SetElevatorManager(ElevatorManager manager)
 {
     this.myElevatorManager = manager;
 }
示例#29
0
 void Start()
 {
     eM = GetComponent<ElevatorManager>();
 }