/// <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; }
/// <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); } } }
/// <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(); }