public void InvokeState() { var playView = new ConsolePlayView(); var level = client.Login(login, sessionId); if (level == null) { throw new ArgumentException("Login already exists."); } var inputLoop = new InputLoop(); var playerMoveInteractor = new NetworkPlayerMoveInteractor(level, playView); var mobMoveInteractor = new NetworkMobMoveInteractor(level, playView); var exitGameInteractor = new ExitGameInteractor(level); var inventoryInteractor = new InventoryInteractor(level, playView); var spawnPlayerInteractor = new SpawnPlayerInteractor(level, playView); var moveProcessor = new MoveProcessor(playerMoveInteractor); var exitGameProcessor = new ExitGameProcessor(exitGameInteractor); var inventoryProcessor = new InventoryProcessor(inventoryInteractor); var keyboardController = new KeyboardController(level, login); keyboardController.AddInputProcessor(client); keyboardController.AddInputProcessor(exitGameProcessor); client.AddInputProcessor(moveProcessor); client.AddInputProcessor(exitGameProcessor); client.AddInputProcessor(inventoryProcessor); client.SetMobInteractor(mobMoveInteractor); client.SetPlayerMoveInteractor(playerMoveInteractor); client.SetSpawnPlayerInteractor(spawnPlayerInteractor); inputLoop.AddUpdatable(keyboardController); inputLoop.AddUpdatable(client); level.CurrentPlayer = level.GetPlayer(login); level.CurrentPlayer.OnDie += (sender, args) => { inputLoop.Stop(); }; exitGameInteractor.OnExit += (sender, player) => { inputLoop.Stop(); }; playView.Draw(level); inputLoop.Start(); }
public void ConfusedNetworkPlayerMoveInteractorTest() { var playView = new VoidView(); var playerMoveInteractor = new NetworkPlayerMoveInteractor(confusedLevel, playView); var oldPosition = confusedLevel.CurrentPlayer.Position; playerMoveInteractor.IntentMove(confusedLevel.CurrentPlayer, 0, 1); var newPosition = confusedLevel.CurrentPlayer.Position; Assert.IsTrue(Math.Abs(oldPosition.X - newPosition.X) <= 1); Assert.IsTrue(Math.Abs(oldPosition.Y - newPosition.Y) <= 1); }
public void NetworkPlayerMoveInteractorTest() { var playView = new VoidView(); var playerMoveInteractor = new NetworkPlayerMoveInteractor(level, playView); var oldPosition = level.CurrentPlayer.Position; playerMoveInteractor.IntentMove(level.CurrentPlayer, 0, 1); var newPosition = level.CurrentPlayer.Position; Assert.AreEqual(oldPosition.X + 1, newPosition.X); Assert.AreEqual(oldPosition.Y, newPosition.Y); oldPosition = level.Mobs[0].Position; playerMoveInteractor.IntentMove(level.Mobs[0], 1, 0); newPosition = level.Mobs[0].Position; Assert.AreEqual(oldPosition.X, newPosition.X); Assert.AreEqual(oldPosition.Y + 1, newPosition.Y); }