Ejemplo n.º 1
0
        public static bool[] SetPhaseStatus(TimingStageData timingStage, int phaseNum, int activeStage)  // ref bool[,] IsPhaseActive)
        {
            bool[] PhaseListSettings = new bool[2];

            bool WasPhaseExcludedFromList = false;
            bool WasPhasePreviouslyInList = false;

            bool IsPhaseNumInList = timingStage.IncludedPhases.Exists(item => item == phaseNum);

            if (IsPhaseNumInList == true)
            {
                int PhaseNumIndex = timingStage.IncludedPhases.FindIndex(item => item == phaseNum);
                timingStage.IncludedPhases.RemoveAt(PhaseNumIndex);  //user has clicked on previously active phase in the stage, now remove it
                PhaseBeingRemovedFromStage(timingStage, phaseNum, activeStage);
                WasPhasePreviouslyInList = true;
            }
            else
            {
                WasPhaseExcludedFromList = AddPhaseToStageIfNoConflict(timingStage, phaseNum, activeStage);
            }

            PhaseListSettings[0] = WasPhaseExcludedFromList;
            PhaseListSettings[1] = WasPhasePreviouslyInList;
            return(PhaseListSettings);
        }
Ejemplo n.º 2
0
        public static void SetTimingStages(TimingPlanData timingPlan)
        {
            List <TimingStageData> TimingStages = new List <TimingStageData>();
            TimingStageData        newTimingStage;
            byte StageNum = 1;
            //int PhaseSequenceIndex;

            //List<byte[]> PhaseSequence = new List<byte[]>(2);
            List <byte> PhaseSequence1 = new List <byte>();
            List <byte> PhaseSequence2 = new List <byte>();


            if (timingPlan.TimingRings[0] != null)
            {
                //foreach (PhaseData Phase in Ring.Phases)
                //foreach (PhaseData Phase in Ring.PhaseSequence)
                foreach (PhaseTimingData Phase in timingPlan.TimingRings[0].Phases)
                {
                    //Ring.PhaseSequence.Add(Phase.Id);
                    PhaseSequence1.Add(Phase.Id);
                }
            }


            if (timingPlan.TimingRings[1] != null)
            {
                //foreach (PhaseData Phase in Ring.Phases)
                //foreach (PhaseData Phase in Ring.PhaseSequence)
                foreach (PhaseTimingData Phase in timingPlan.TimingRings[1].Phases)
                {
                    //Ring.PhaseSequence.Add(Phase.Id);
                    PhaseSequence2.Add(Phase.Id);
                }
            }

            int MaxPhasesInRing = Math.Max(PhaseSequence1.Count, PhaseSequence2.Count);

            int[] PhaseTimes   = new int[4];
            int   PhaseCounter = 0;

            for (int index = 0; index < MaxPhasesInRing; index++)
            {
                if (StageNum > 1)
                {
                    foreach (byte PhaseNum in TimingStages[StageNum - 2].IncludedPhases)
                    {
                        //PhaseTimes[PhaseCounter] = timingPlan.TimingRings[1].Phases[PhaseNum].GreenMax;
                        PhaseCounter++;
                    }
                }
                newTimingStage = new TimingStageData(StageNum);
                newTimingStage.IncludedPhases.Add(PhaseSequence1[index]);
                newTimingStage.IncludedPhases.Add(PhaseSequence2[index]);
                TimingStages.Add(newTimingStage);
                StageNum++;
            }
        }
Ejemplo n.º 3
0
        public static void PhaseBeingRemovedFromStage(TimingStageData timingStage, int phaseNum, int activeStage)
        {
            bool IsPhaseNumInList2;

            switch (phaseNum)
            {
            case 1:
                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 2, 3, 4);
                if (IsPhaseNumInList2 == false)
                {
                    IsRing1Active[activeStage] = false;
                }

                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 2, 5, 6);
                if (IsPhaseNumInList2 == false)
                {
                    IsConcurGroup1Active[activeStage] = false;
                }
                break;

            case 2:
                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 1, 3, 4);
                if (IsPhaseNumInList2 == false)
                {
                    IsRing1Active[activeStage] = false;
                }

                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 1, 5, 6);
                if (IsPhaseNumInList2 == false)
                {
                    IsConcurGroup1Active[activeStage] = false;
                }
                break;

            case 3:
                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 1, 2, 4);
                if (IsPhaseNumInList2 == false)
                {
                    IsRing1Active[activeStage] = false;
                }

                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 4, 7, 8);
                if (IsPhaseNumInList2 == false)
                {
                    IsConcurGroup2Active[activeStage] = false;
                }
                break;

            case 4:
                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 1, 2, 3);
                if (IsPhaseNumInList2 == false)
                {
                    IsRing1Active[activeStage] = false;
                }

                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 3, 7, 8);
                if (IsPhaseNumInList2 == false)
                {
                    IsConcurGroup2Active[activeStage] = false;
                }
                break;

            case 5:
                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 6, 7, 8);
                if (IsPhaseNumInList2 == false)
                {
                    IsRing2Active[activeStage] = false;
                }

                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 1, 2, 6);
                if (IsPhaseNumInList2 == false)
                {
                    IsConcurGroup1Active[activeStage] = false;
                }
                break;

            case 6:
                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 5, 7, 8);
                if (IsPhaseNumInList2 == false)
                {
                    IsRing2Active[activeStage] = false;
                }

                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 1, 2, 5);
                if (IsPhaseNumInList2 == false)
                {
                    IsConcurGroup1Active[activeStage] = false;
                }
                break;

            case 7:
                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 5, 6, 8);
                if (IsPhaseNumInList2 == false)
                {
                    IsRing2Active[activeStage] = false;
                }

                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 3, 4, 8);
                if (IsPhaseNumInList2 == false)
                {
                    IsConcurGroup2Active[activeStage] = false;
                }
                break;

            case 8:
                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 5, 6, 7);
                if (IsPhaseNumInList2 == false)
                {
                    IsRing2Active[activeStage] = false;
                }

                IsPhaseNumInList2 = CheckForPhasesPresentInTimingStage(timingStage.IncludedPhases, 3, 4, 7);
                if (IsPhaseNumInList2 == false)
                {
                    IsConcurGroup2Active[activeStage] = false;
                }
                break;
            }
        }
Ejemplo n.º 4
0
        public static bool AddPhaseToStageIfNoConflict(TimingStageData timingStage, int phaseNum, int activeStage)
        {
            bool DoNotEnablePhase = false;

            switch (phaseNum)
            {
            case 1:
                if (IsRing1Active[activeStage] == true || IsConcurGroup2Active[activeStage] == true)
                {
                    DoNotEnablePhase = true;
                }
                else
                {
                    IsRing1Active[activeStage]        = true;
                    IsConcurGroup1Active[activeStage] = true;
                }
                break;

            case 2:
                if (IsRing1Active[activeStage] == true || IsConcurGroup2Active[activeStage] == true)
                {
                    DoNotEnablePhase = true;
                }
                else
                {
                    IsRing1Active[activeStage]        = true;
                    IsConcurGroup1Active[activeStage] = true;
                }
                break;

            case 3:
                if (IsRing1Active[activeStage] == true || IsConcurGroup1Active[activeStage] == true)
                {
                    DoNotEnablePhase = true;
                }
                else
                {
                    IsRing1Active[activeStage]        = true;
                    IsConcurGroup2Active[activeStage] = true;
                }
                break;

            case 4:
                if (IsRing1Active[activeStage] == true || IsConcurGroup1Active[activeStage] == true)
                {
                    DoNotEnablePhase = true;
                }
                else
                {
                    IsRing1Active[activeStage]        = true;
                    IsConcurGroup2Active[activeStage] = true;
                }
                break;

            case 5:
                if (IsRing2Active[activeStage] == true || IsConcurGroup2Active[activeStage] == true)
                {
                    DoNotEnablePhase = true;
                }
                else
                {
                    IsRing2Active[activeStage]        = true;
                    IsConcurGroup1Active[activeStage] = true;
                }
                break;

            case 6:
                if (IsRing2Active[activeStage] == true || IsConcurGroup2Active[activeStage] == true)
                {
                    DoNotEnablePhase = true;
                }
                else
                {
                    IsRing2Active[activeStage]        = true;
                    IsConcurGroup1Active[activeStage] = true;
                }
                break;

            case 7:
                if (IsRing2Active[activeStage] == true || IsConcurGroup1Active[activeStage] == true)
                {
                    DoNotEnablePhase = true;
                }
                else
                {
                    IsRing2Active[activeStage]        = true;
                    IsConcurGroup2Active[activeStage] = true;
                }
                break;

            case 8:
                if (IsRing2Active[activeStage] == true || IsConcurGroup1Active[activeStage] == true)
                {
                    DoNotEnablePhase = true;
                }
                else
                {
                    IsRing2Active[activeStage]        = true;
                    IsConcurGroup2Active[activeStage] = true;
                }
                break;
            }

            if (DoNotEnablePhase == false)
            {
                //IsPhaseActive[activeStage, phaseNum] = true;
                timingStage.IncludedPhases.Add((byte)phaseNum);
            }
            return(DoNotEnablePhase);
        }