예제 #1
0
        private void ClockLoop()
        {
            if (ClockTick == null)
            {
                throw new InvalidOperationException("Can not start clock with no tick listeners");
            }

            timer.Start();
            ticksForNextClock     = timer.ElapsedTicks + ticksPerClock;
            ticksForNextOneSecond = timer.ElapsedTicks + ticksPerOneSecond;

            while (run)
            {
                long currentTicks = timer.ElapsedTicks;
                if (currentTicks < ticksForNextClock)
                {
                    continue;
                }

                totalTicks++;
                ticksForNextClock += ticksPerClock;
                ClockTick.Invoke();

                if (currentTicks >= ticksForNextOneSecond)
                {
                    ticksForNextOneSecond += ticksPerOneSecond;
                    OneSecondTick?.Invoke();
                }
            }

            timer.Stop();
        }
예제 #2
0
파일: Game.cs 프로젝트: yeungchenhe/SMAPI
 internal static void InvokeOneSecondTick()
 {
     OneSecondTick.Invoke(null, EventArgs.Empty);
 }