// Use this for initialization void Start() { gameObject.GetComponent <SpriteRenderer>().sprite = sprites[Random.Range(0, sprites.Length)]; frozen = false; controller = GameObject.Find("Game Controller").GetComponent <GameController>(); init = GameObject.Find("Game Controller").GetComponent <Initialize>(); elevator = controller.GetElevator(); cardManager = controller.GetCardManager(); passengerName = NameGenerator.Name(); job = NameGenerator.Job(); rage = 0; timeAlive = -1.0f; positionOnLift = Random.Range(-0.9f, 1.1f); do { floor = Random.Range(1, init.NoOfFloors() + 1); } while (floor == elevator.GetFloor()); elevator.Lock(); card = cardManager.ConstructCard(this); StartCoroutine(MoveToPosition(new Vector3(positionOnLift, -0.25f, -1), 1.0f, false)); }
void Update() { if (flashing) { ContinueFlashing(); } if (targetFloor == currentFloor) { DoProductiveStuff(); if (direction == 0) { targetPosition = GetProductiveLocation(); MoveToTarget(targetPosition, superSlowSpeed); } } if (targetFloor != currentFloor) { timeWaiting += Time.deltaTime; if (timeWaiting > PeopleController.instance.patienceThreshold) { anger += 1; timeWaiting = 0; ChangeToColorBasedOnAnger(); } } if (onElevator) { ElevatorMove elevatorMoveScript = (targetElevator.GetComponent("ElevatorMove") as ElevatorMove); if (elevatorMoveScript.velocity == 0 && targetElevator.transform.position.y == targetFloor) { GetOff(); } } if (direction != 0 && !onElevator) { DoMovementStuff(); } }
public void MoveElevator() { if (!Elevator.ControlPanel.ClickedFloors.Contains(true) && ClickedFloors.Contains(true)) { for (int i = NumberOfFloors; i > 0; i--) { if (ClickedFloors[i - 1] == true) { if (i > Elevator.CurrentFloor) { if (CheckDirection() == Directions.Down) { RideDone?.Invoke(); FreeRideDone?.Invoke(); } Elevator.CurrentDirection = Directions.Up; } else if (i < Elevator.CurrentFloor) { if (CheckDirection() == Directions.Up) { RideDone?.Invoke(); FreeRideDone?.Invoke(); } Elevator.CurrentDirection = Directions.Down; } Elevator.CurrentFloor = i; ClickedFloors[i - 1] = false; Elevator.ControlPanel.ClickedFloors[i - 1] = false; ElevatorMove?.Invoke(i); break; } } } else if (Elevator.ControlPanel.ClickedFloors.Contains(true)) { if (CheckDirection() == Directions.None) { for (int i = NumberOfFloors; i > Elevator.CurrentFloor; i--) { if (Elevator.ControlPanel.ClickedFloors[i - 1] == true) { Elevator.CurrentDirection = Directions.Up; break; } } for (int i = 1; i < Elevator.CurrentFloor; i++) { if (Elevator.ControlPanel.ClickedFloors[i - 1] == true) { Elevator.CurrentDirection = Directions.Down; break; } } } if (CheckDirection() == Directions.Up) { bool GoOppositeWay = true; for (int i = Elevator.CurrentFloor; i <= NumberOfFloors; i++) { if (Elevator.ControlPanel.ClickedFloors[i - 1] == true) { Elevator.CurrentFloor = i; ClickedFloors[i - 1] = false; Elevator.ControlPanel.ClickedFloors[i - 1] = false; foreach (Passenger passenger in Passengers) { if (passenger.State == States.Riding) { passenger.InitialFloor = Elevator.CurrentFloor; UpdatePassengerData(); } } GoOppositeWay = false; ElevatorMove?.Invoke(i); break; } } if (GoOppositeWay == true) { Elevator.CurrentDirection = Directions.Down; //RideDone?.Invoke(); StatisticMaker.IncrementNumberOfFreeRides(); for (int i = Elevator.CurrentFloor; i > 0; i--) { if (Elevator.ControlPanel.ClickedFloors[i - 1] == true || ClickedFloors[i - 1] == true) { Elevator.CurrentFloor = i; ClickedFloors[i - 1] = false; Elevator.ControlPanel.ClickedFloors[i - 1] = false; foreach (Passenger passenger in Passengers) { if (passenger.State == States.Riding) { passenger.InitialFloor = Elevator.CurrentFloor; UpdatePassengerData(); } } ElevatorMove?.Invoke(i); break; } } } } else if (CheckDirection() == Directions.Down) { bool GoOppositeWay = true; for (int i = Elevator.CurrentFloor; i > 0; i--) { if (Elevator.ControlPanel.ClickedFloors[i - 1] == true || ClickedFloors[i - 1] == true) { Elevator.CurrentFloor = i; ClickedFloors[i - 1] = false; Elevator.ControlPanel.ClickedFloors[i - 1] = false; foreach (Passenger passenger in Passengers) { if (passenger.State == States.Riding) { passenger.InitialFloor = Elevator.CurrentFloor; UpdatePassengerData(); } } GoOppositeWay = false; ElevatorMove?.Invoke(i); break; } } if (GoOppositeWay == true) { Elevator.CurrentDirection = Directions.Up; RideDone?.Invoke(); for (int i = Elevator.CurrentFloor; i <= NumberOfFloors; i++) { if (Elevator.ControlPanel.ClickedFloors[i - 1] == true) { Elevator.CurrentFloor = i; ClickedFloors[i - 1] = false; Elevator.ControlPanel.ClickedFloors[i - 1] = false; foreach (Passenger passenger in Passengers) { if (passenger.State == States.Riding) { passenger.InitialFloor = Elevator.CurrentFloor; UpdatePassengerData(); } } GoOppositeWay = false; ElevatorMove?.Invoke(i); break; } } } } } }