public static void RescheduleAttack(LivingEntity attacker, LivingEntity defender, long attackDelay) { if (attacker.AttackTaskId != null) { GameScheduler.CancelTask(attacker.AttackTaskId); } var attackTask = new SchedulerTask(attackDelay + 1, GameThread.TIME_MS_NOW) { Task = () => { if (attacker.EntityType == EntityType.PLAYER) { if (Server.GetPlayer(attacker.UID) == null) { return; } } TryAttacking(attacker, defender); } }; GameScheduler.Schedule(attackTask); attacker.AttackTaskId = attackTask.UID; }
// Test to ensure server is recieving the packets and keeping the recieve order public void TestBasicScheduling() { List <int> executedTasks = new List <int>(); var now = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; GameScheduler.Schedule(new SchedulerTask(1000) { Task = () => { executedTasks.Add(1); } }); GameScheduler.Schedule(new SchedulerTask(2000) { Task = () => { executedTasks.Add(2); } }); GameScheduler.Schedule(new SchedulerTask(3000) { Task = () => { executedTasks.Add(3); } }); GameScheduler.Schedule(new SchedulerTask(1500) { Task = () => { executedTasks.Add(4); } }); GameScheduler.RunTasks(now); var tasks = GameScheduler.Tasks; Assert.That(executedTasks.Count == 0); GameScheduler.RunTasks(now + 1500); Assert.That(executedTasks.Contains(4)); Assert.That(executedTasks.Contains(1)); Assert.That(executedTasks.Count == 2); GameScheduler.RunTasks(now + 3000); Assert.That(executedTasks.Contains(2)); Assert.That(executedTasks.Contains(3)); Assert.That(executedTasks.Count == 4); Assert.That(GameScheduler.Tasks.Count == 0); }
public void CreateSpawnTask() { var schedulerTask = new SchedulerTask(SpawnTimerSeconds / 1000, GameThread.TIME_MS_NOW) { Task = () => { SpawnTick(); } }; GameScheduler.Schedule(schedulerTask); }
public void MovementTick() { if (MovementBehaviour != null) { MovementBehaviour.PerformMovement(this); LastMovement = GameThread.TIME_MS_NOW; GameScheduler.Schedule(new SchedulerTask(MovementDelay, LastMovement) { Task = () => { MovementTick(); } }); } }
public void MovementTick() { if (MovementBehaviour != null) { MovementBehaviour.PerformMovement(this); LastMovement = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; GameScheduler.Schedule(new SchedulerTask(MovementDelay) { Task = () => { MovementTick(); } }); } }
public void MovementTick() { if (MovementTaskId == Guid.Empty) { GameScheduler.CancelTask(MovementTaskId); } MovementBehaviour?.PerformMovement(this); LastMovement = GameThread.TIME_MS_NOW; this.MovementTaskId = GameScheduler.Schedule(new SchedulerTask(MovementDelay, LastMovement) { Task = () => { MovementTaskId = Guid.Empty; if (HP > 0) { MovementTick(); } } }); }
// Test to ensure server is recieving the packets and keeping the recieve order public void TestLoopingSchedule() { List <int> executedTasks = new List <int>(); var now = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; GameScheduler.Schedule(new SchedulerTask(1000) { Repeat = true, Task = () => { executedTasks.Add(1); } }); GameScheduler.RunTasks(now + 1000); GameScheduler.RunTasks(now + 2000); GameScheduler.RunTasks(now + 3000); GameScheduler.RunTasks(now + 3500); Assert.That(executedTasks.Count == 3); }