Beispiel #1
0
        /// <summary>
        /// Main loop where coroutine.Update() is called.
        /// </summary>
        /// <param name="argument"></param>
        /// <param name="updateSource"></param>
        public void Main(string argument, UpdateType updateSource)
        {
            //Catch manual triggers and exclude from cycles
            if (updateSource == UpdateType.Trigger || updateSource == UpdateType.Terminal)
            {
                manualProgram.Trigger(argument, output);
                output.Update();
                return;
            }

            //Run diagnostics every loop
            diagnostics.Update();

            //Prevent routines running if sleeping
            if (sleepTimeLeft > 0)
            {
                sleepTimeLeft--;
                EndUpdate();
                return;
            }

            //Loop index
            if (routineIndex >= routineCount)
            {
                cycle++;
                routineIndex = 0;
            }

            currentRoutine = routines[routineIndex];

            SetDisplayHeader();

            //Run a coroutine
            currentRoutine.Update();

            EndUpdate();
        }