Example #1
0
    public void DoorOpened()
    {
        ///승객 내림처리

        float boardingDelay = 0;
        int   idx           = 0;

        int stayfloor = (int)GetFloor();

        switch ((MOVE_STATE)moveDirState)
        {
        case MOVE_STATE.Up:

            stayfloor = Mathf.RoundToInt(currentFloor);
            break;

        case MOVE_STATE.Stop:
            stayfloor = (int)currentFloor;
            break;

        case MOVE_STATE.Down:
            stayfloor = Mathf.RoundToInt(currentFloor);
            break;
        }


        while (idx < listPassinger.Count)
        {
            var p = listPassinger[idx];
            if (p.destFloor == stayfloor)
            {
                listPassinger.RemoveAt(idx);
                boardingDelay += Random.Range(0.6f, 1.0f);

                float refTime = Mathf.Abs((p.startFloor - p.destFloor) * (ElevatorAcademy.height) / ElevatorAcademy.speed / 2f);
                AddReward(refTime / (Time.fixedTime - p.timeWaiting));
                AddReward(0.0001f);

                p.Dispose();
                building.AddDestPassinger();
            }
            else
            {
                ++idx;
            }
        }

        SetTransitionDelay(Event.DoorCloseStart, boardingDelay);
    }