public void TestMultipleMoves() { var date = DateTime.MinValue; GameScheduler.SetLogicalTime(date); var tile = _party.Tile; var next1 = tile.GetNeighbor(Direction.SOUTH); var next2 = next1.GetNeighbor(Direction.SOUTH); var next3 = next2.GetNeighbor(Direction.SOUTH); _path.Add(new Position(next1.X, next1.Y)); _path.Add(new Position(next2.X, next2.Y)); _path.Add(new Position(next3.X, next3.Y)); SendMoveRequest(); Assert.AreEqual(tile, _party.Tile); date += _party.Course.Delay; GameScheduler.Tick(date); Assert.AreEqual(next1, _party.Tile); date += _party.Course.Delay; GameScheduler.Tick(date); Assert.AreEqual(next2, _party.Tile); date += _party.Course.Delay; GameScheduler.Tick(date); Assert.AreEqual(next3, _party.Tile); var moveEvents = _player.ReceivedEventsOfType <EntityMoveEvent>(); Assert.AreEqual(3, moveEvents.Count); }
public void TestNextTask() { GameScheduler.SetLogicalTime(DateTime.UnixEpoch); var t1 = new TestTask(TimeSpan.FromSeconds(10)); GameScheduler.Tick(DateTime.UnixEpoch + TimeSpan.FromMilliseconds(1)); Assert.AreEqual(t1, GameScheduler.NextTask); Assert.AreEqual(1, GameScheduler.PendingTasks); }
public void TestTickNotRunningTasks() { var time = DateTime.UnixEpoch; GameScheduler.SetLogicalTime(time); var t1 = new TestTask(TimeSpan.FromSeconds(1)); var t2 = new TestTask(TimeSpan.FromSeconds(1 + 60)); var t3 = new TestTask(TimeSpan.FromSeconds(1 + 120)); GameScheduler.Tick(time); Assert.IsFalse(t1.Ran); Assert.IsFalse(t2.Ran); Assert.IsFalse(t3.Ran); Assert.AreEqual(t1, GameScheduler.NextTask); }
public void TestRunningTwoTasks() { var time = DateTime.UnixEpoch; GameScheduler.SetLogicalTime(time); var t1 = new TestTask(TimeSpan.FromSeconds(1)); var t2 = new TestTask(TimeSpan.FromSeconds(5)); var t3 = new TestTask(TimeSpan.FromSeconds(7)); GameScheduler.Tick(time + TimeSpan.FromSeconds(5)); Assert.IsTrue(t1.Ran); Assert.IsTrue(t2.Ran); Assert.IsFalse(t3.Ran); Assert.AreEqual(t3, GameScheduler.NextTask); Assert.AreEqual(1, GameScheduler.PendingTasks); }
public void TestCourseMovingParty() { var date = DateTime.MinValue; GameScheduler.SetLogicalTime(date); var tile = _party.Tile; var next = tile.GetNeighbor(Direction.SOUTH); _path.Add(new Position(next.X, next.Y)); SendMoveRequest(); Assert.AreEqual(tile, _party.Tile); GameScheduler.Tick(date + _party.Course.Delay); Assert.AreEqual(next, _party.Tile); }
public void TestMoveEvents() { var tile = _party.Tile; var next = tile.GetNeighbor(Direction.SOUTH); _path.Add(new Position(next.X, next.Y)); var moveEventsb = _player.ReceivedEventsOfType <EntityMoveEvent>(); SendMoveRequest(); GameScheduler.Tick(GameScheduler.Now + _party.Course.Delay); var moveEvents = _player.ReceivedEventsOfType <EntityMoveEvent>(); var tileDiscovery = _player.ReceivedEventsOfType <TileVisibleEvent>(); // should have received movement events Assert.AreEqual(1, moveEvents.Count); // should have explored some tiles Assert.GreaterOrEqual(tileDiscovery.Count, 1); }
public override void Tick() { GameScheduler.Tick(DateTime.UtcNow); }