public void Tick() { long num = (long)10000000; double dayLengthInMinutes = 1440 / (double)SynchronizedClock.DayLengthInMinutes; double num1 = (double)num * dayLengthInMinutes; for (int i = 0; i < this.events.Count; i++) { SynchronizedClock.TimedEvent item = this.events[i]; long num2 = item.ticks; long ticks = SynchronizedClock.Ticks; long num3 = (long)((double)item.delta * num1); long num4 = num2 / num3 * num3; uint num5 = (uint)(num4 % (ulong)-1); SeedRandom.Wanghash(ref num5); long num6 = (long)((double)SeedRandom.Range(ref num5, -item.variance, item.variance) * num1); long num7 = num4 + num3 + num6; if (num2 < num7 && ticks >= num7) { item.action(num5); item.ticks = ticks; } else if (ticks > num2 || ticks < num4) { item.ticks = ticks; } this.events[i] = item; } }
public void Tick() { double num1 = 10000000.0 * (1440.0 / (double)SynchronizedClock.DayLengthInMinutes); for (int index = 0; index < this.events.Count; ++index) { SynchronizedClock.TimedEvent timedEvent = this.events[index]; long ticks1 = timedEvent.ticks; long ticks2 = SynchronizedClock.Ticks; long num2 = (long)((double)timedEvent.delta * num1); long num3 = ticks1 / num2 * num2; uint num4 = (uint)((ulong)num3 % (ulong)uint.MaxValue); int num5 = (int)SeedRandom.Wanghash(ref num4); long num6 = (long)((double)SeedRandom.Range(ref num4, -timedEvent.variance, timedEvent.variance) * num1); long num7 = num3 + num2 + num6; if (ticks1 < num7 && ticks2 >= num7) { timedEvent.action(num4); timedEvent.ticks = ticks2; } else if (ticks2 > ticks1 || ticks2 < num3) { timedEvent.ticks = ticks2; } this.events[index] = timedEvent; } }
public void Add(float delta, float variance, Action <uint> action) { SynchronizedClock.TimedEvent timedEvent = new SynchronizedClock.TimedEvent() { ticks = SynchronizedClock.Ticks, delta = delta, variance = variance, action = action }; this.events.Add(timedEvent); }