コード例 #1
0
    /// <summary>
    /// Use to determine which point is the next point
    /// </summary>
    private void SetTargetFloor()
    {
        #if DEBUGGING_ELEVATOR
        print("Set Target Floor : " + m_upFloorPointQueue.Count + " " + m_downFloorPointQueue.Count + " " + m_isDirectionIsUp);
        #endif

        if (m_upFloorPointQueue.Count == 0 && m_downFloorPointQueue.Count == 0)
        {
            #if DEBUGGING_ELEVATOR
            print("Both list are empty, switch to idle state");
            #endif

            m_targetPoint.m_floorTransform = null;
            return;
        }

        if (m_upFloorPointQueue.Count == 0)
        {
            if (m_isDirectionIsUp)
            {
                #if DEBUGGING_ELEVATOR
                print("Up list is empty switch direction to down");
                #endif

                m_isDirectionIsUp = false;
            }
        }

        if (m_downFloorPointQueue.Count == 0)
        {
            if (!m_isDirectionIsUp)
            {
                #if DEBUGGING_ELEVATOR
                print("Down list is empty switch direction to up");
                #endif

                m_isDirectionIsUp = true;
            }
        }

        SFloorPointData tempFloorPoint;
        if (m_isDirectionIsUp == true)
        {
            tempFloorPoint = m_upFloorPointQueue[0];
        }
        else
        {
            tempFloorPoint = m_downFloorPointQueue[0];
        }


        #if DEBUGGING_ELEVATOR
        print("Setting target point to : " + tempFloorPoint.m_floorIndex);
        #endif

        m_targetPoint = tempFloorPoint;
    }
コード例 #2
0
    /// <summary>
    /// Use to adding point based on if the point is higher or lower
    /// </summary>
    /// <param name="aFloorData"> Which floor point to add</param>
    public void AddPointToQueue(SFloorPointData aFloorData)
    {
        if (aFloorData.m_floorIndex > m_currentFloor)
        {
            #if DEBUGGING_ELEVATOR
            print("Adding to Up list : " + aFloorData.m_floorIndex + " list has: " + m_upFloorPointQueue.Count);
            #endif

            AddingToUpList(aFloorData);
        }
        else if (aFloorData.m_floorIndex < m_currentFloor)
        {
            AddingToDownList(aFloorData);

            #if DEBUGGING_ELEVATOR
            print("Adding to down list : " + aFloorData.m_floorIndex + " list has: " + m_downFloorPointQueue.Count);
            #endif
        }
        else
        {
            if (m_isDirectionIsUp && !m_upFloorPointQueue.Contains(aFloorData))
            {
                #if DEBUGGING_ELEVATOR
                print("Same Floor " + "Adding to down list : " + aFloorData.m_floorIndex + " list has: " + m_downFloorPointQueue.Count);
                #endif

                AddingToDownList(aFloorData);
            }
            else if (!m_isDirectionIsUp && !m_downFloorPointQueue.Contains(aFloorData))
            {
                #if DEBUGGING_ELEVATOR
                print("Same Floor " + "Adding to up list : " + aFloorData.m_floorIndex + " list has: " + m_downFloorPointQueue.Count);
                #endif

                AddingToUpList(aFloorData);
            }

            //OPEN DOORs
            m_onSameFloorCalled.Invoke();
            if (m_elevatorDoor.PCanBeOpened)
            {
                aFloorData.SetTogglesState(false);
            }
        }
    }
コード例 #3
0
    /// <summary>
    /// Use to adding point to go up
    /// </summary>
    /// <param name="aFloorData">Which floor to add</param>
    /// Note : Use by floor button
    public void AddingToUpList(SFloorPointData aFloorData)
    {
        if (m_upFloorPointQueue.Contains(aFloorData))
        {
            return;
        }

        if (m_downFloorPointQueue.Count == 0)
        {
            m_isDirectionIsUp = false;
        }

        m_upFloorPointQueue.Add(aFloorData);
        m_upFloorPointQueue.Sort(delegate(SFloorPointData aFirstArgumentToCompare, SFloorPointData aSecondArgumentToCompare)
        {
            return(aFirstArgumentToCompare.m_floorIndex.CompareTo(aSecondArgumentToCompare.m_floorIndex));
        });

        CallStartedMove();

        SetTargetFloor();
    }