///<summary> /// Creates Input, View and Interaction components: /// Creates different move processors /// for each character on board, registers them in controllers. /// Creates interactors and passes created level and view to them. /// </summary> public void InvokeState() { var level = levelFactory.CreateLevel(); var inputLoop = new InputLoop(); var playView = new ConsolePlayView(); var playerMoveInteractor = new PlayerMoveInteractor(level, playView); var mobMoveInteractor = new MobMoveInteractor(level, playView); var saveGameInteractor = new SaveGameInteractor(level); var exitGameInteractor = new ExitGameInteractor(level); var inventoryInteractor = new InventoryInteractor(level, playView); var moveProcessor = new MoveProcessor(playerMoveInteractor); var saveAndExitGameProcessor = new SaveAndExitGameProcessor(exitGameInteractor, saveGameInteractor); var inventoryProcessor = new InventoryProcessor(inventoryInteractor); var keyboardController = new KeyboardController(level, OfflinePlayerLogin); var tickController = new TickController(); keyboardController.AddInputProcessor(moveProcessor); keyboardController.AddInputProcessor(saveAndExitGameProcessor); keyboardController.AddInputProcessor(inventoryProcessor); inputLoop.AddUpdatable(keyboardController); inputLoop.AddFixedUpdatable(tickController); if (!level.ContainsPlayer(OfflinePlayerLogin)) { level.AddPlayerAtEmpty(OfflinePlayerLogin); } level.CurrentPlayer = level.GetPlayer(OfflinePlayerLogin); var mobs = level.Mobs; foreach (var mob in mobs) { var mobMoveProcessor = new MobMoveProcessor(mob, mobMoveInteractor); tickController.AddTickProcessor(mobMoveProcessor); mob.OnDie += (sender, args) => { level.Mobs.Remove(mob); tickController.RemoveTickProcessor(mobMoveProcessor); }; } level.CurrentPlayer.OnDie += (sender, args) => { inputLoop.Stop(); saveGameInteractor.DeleteSaving(); }; exitGameInteractor.OnExit += (sender, player) => { inputLoop.Stop(); }; playView.Draw(level); inputLoop.Start(); }
public void InventoryInteractorPutOffTest() { var playView = new VoidView(); var inventoryInteractor = new InventoryInteractor(level, playView); Assert.AreEqual(3, confusedLevel.CurrentPlayer.GetInventory().Count); Assert.AreEqual(1, confusedLevel.CurrentPlayer.GetAppliedInventory().Count); Assert.IsInstanceOf(typeof(IncreaseHealthItem), confusedLevel.CurrentPlayer.GetAppliedInventory()[0]); var beforeStatistics = confusedLevel.CurrentPlayer.GetStatistics().Clone() as CharacterStatistics; var inventoryPosition = confusedLevel.CurrentPlayer.GetAppliedInventory()[0].Position; confusedLevel.Board.IsEmpty(inventoryPosition); inventoryInteractor.PutOff(confusedLevel.CurrentPlayer, confusedLevel.CurrentPlayer.GetAppliedInventory()[0].GetStringType()); Assert.AreEqual(3, confusedLevel.CurrentPlayer.GetInventory().Count); Assert.AreEqual(0, confusedLevel.CurrentPlayer.GetAppliedInventory().Count); var afterStatistics = confusedLevel.CurrentPlayer.GetStatistics(); confusedLevel.Board.IsInventory(inventoryPosition); Assert.AreEqual(beforeStatistics.Experience, afterStatistics.Experience); Assert.AreEqual(beforeStatistics.Force, afterStatistics.Force); Assert.AreEqual(beforeStatistics.Health - 3, afterStatistics.Health); }
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 InvokeState() { var level = levelFactory.CreateLevel(); var inputLoop = new InputLoop(); var playView = new VoidView(); var inputController = new ServerInputController(level, newSessionId, inputService); var exitGameInteractor = new ExitGameInteractor(level, inputController); var playerMoveInteractor = new PlayerMoveInteractor(level, playView, inputController); var mobMoveInteractor = new MobMoveInteractor(level, playView, inputController); var inventoryInteractor = new InventoryInteractor(level, playView); levelFactory.SetPlayerFactory(new NetworkPlayerFactory(exitGameInteractor)); var moveProcessor = new MoveProcessor(playerMoveInteractor); var exitGameProcessor = new ExitGameProcessor(exitGameInteractor); var inventoryProcessor = new InventoryProcessor(inventoryInteractor, inputController); var tickController = new TickController(); inputController.AddInputProcessor(moveProcessor); inputController.AddInputProcessor(inventoryProcessor); inputController.AddInputProcessor(exitGameProcessor); inputLoop.AddFixedUpdatable(tickController); inputLoop.AddUpdatable(inputController); level.CurrentPlayer = new Player(DummyLogin, level, new Position(-1, -1)); var mobs = level.Mobs; foreach (var mob in mobs) { var mobMoveProcessor = new MobMoveProcessor(mob, mobMoveInteractor); tickController.AddTickProcessor(mobMoveProcessor); mob.OnDie += (sender, args) => { level.Mobs.Remove(mob); tickController.RemoveTickProcessor(mobMoveProcessor); }; } inputLoop.Start(); }
public void InventoryInteractorPutOnTest() { var playView = new VoidView(); var inventoryInteractor = new InventoryInteractor(level, playView); Assert.AreEqual(3, level.CurrentPlayer.GetInventory().Count); Assert.AreEqual(1, level.CurrentPlayer.GetAppliedInventory().Count); Assert.IsInstanceOf(typeof(IncreaseForceItem), level.CurrentPlayer.GetInventory()[2]); var beforeStatistics = level.CurrentPlayer.GetStatistics().Clone() as CharacterStatistics; inventoryInteractor.PutOn(level.CurrentPlayer, level.CurrentPlayer.GetInventory()[2].GetStringType()); Assert.AreEqual(2, level.CurrentPlayer.GetInventory().Count); Assert.AreEqual(2, level.CurrentPlayer.GetAppliedInventory().Count); var afterStatistics = level.CurrentPlayer.GetStatistics(); Assert.AreEqual(beforeStatistics.Health, afterStatistics.Health); Assert.AreEqual(beforeStatistics.Experience, afterStatistics.Experience); Assert.AreEqual(beforeStatistics.Force + 3, afterStatistics.Force); }
public InventoryProcessor(InventoryInteractor inventoryInteractor, IActionListener listener = null) { this.inventoryInteractor = inventoryInteractor; this.listener = listener; }