///<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(); }
private void MainForm_Load(object sender, EventArgs e) { this.ClientSize = Properties.Settings.Default.formSize; Visibility.Update(); progressMain.ProgressText = "Updating Name Lookups from abgx.net"; _scanner = new GameScanner(); _scanner.OnGameProcessed += _loader_OnGameScanned; _scanner.OnStatusUpdate += _loader_OnStatusUpdate; _scanner.OnFinish += _loader_OnScanFinish; _scrapper = new WebScrapper(); _scrapper.OnGameProcessed += _OnGameProcessed; _scrapper.OnStatusUpdate += _loader_OnStatusUpdate; _scrapper.OnFinish += _loader_OnFinish; _abgx = new AbgxChecker(); _abgx.OnFinish += _loader_OnFinish; _abgx.OnGameProcessed += _OnGameProcessed; _abgx.OnStatusUpdate += _loader_OnStatusUpdate; _move = new MoveProcessor(); _move.OnFinish += _loader_OnFinish; _move.OnGameProcessed += _OnGameProcessed; _move.OnStatusUpdate += _loader_OnStatusUpdate; _info = new ScannerInfo(); progressMain.ProgressText = ""; progressSub.ProgressText = ""; if (Program.Wizard) { menuSettings_Click(null, null); } }
public Game() { Seed = -1; TraceStartFinish = false; TraceDeals = false; TraceMoves = false; ComplexMoves = false; Diagnostics = false; Instance = -1; Shuffled = new Pile(); Tableau = new Tableau(); Candidates = new MoveList(); SupplementaryList = new MoveList(); RunFinder = new RunFinder(); FaceLists = new PileList[(int)Face.King + 2]; for (int i = 0; i < FaceLists.Length; i++) { FaceLists[i] = new PileList(); } Coefficients = null; TableauInputOutput = new TableauInputOutput(Tableau); MoveProcessor = new MoveProcessor(this); Variation = Variation.Spider4; AlgorithmType = AlgorithmType.Study; }
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 bool IsInRangeOfFoes(IMap currentMap, Move move, int moveSlot) { // Check if any players are in range foreach (Client i in currentMap.GetClients()) { // Check if the target player is in range if (MoveProcessor.IsInRange(move.RangeType, move.Range, this.X, this.Y, this.Direction, i.Player.X, i.Player.Y)) { // They are in range, attack them return(true); } } return(false); }
public bool IsInRangeOfAllies(IMap currentMap, Move move, int moveSlot) { for (int i = 0; i < currentMap.ActiveNpc.Length; i++) { if (currentMap.ActiveNpc[i].Num > 0) { if (MoveProcessor.IsInRange(move.RangeType, move.Range, this.X, this.Y, this.Direction, currentMap.ActiveNpc[i].X, currentMap.ActiveNpc[i].Y)) { return(true); } } } return(false); }
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 Movement GetMovement(Creature creature) { ProcessingCreature processingCreature = new ProcessingCreature(creature, TotalCommands, _field); while (processingCreature.NotProcessed()) { var dnaNode = processingCreature.ProcessingIndex >= processingCreature.Dna.Length ? DnaNode.Create <MoveProcessor>(0) : processingCreature.Dna[processingCreature.ProcessingIndex]; var command = dnaNode.Processor.Process(dnaNode.LocalCommand, processingCreature); if (command != null) { return(command.Movement); } } // Infinitive loop return(MoveProcessor.NullMovement(processingCreature.Direction)); }
public void ApplyNext_QueueNotEmptyAndUserAlive_ReturnsAppliedMoveUse() { // Arrange var moveUse = new MoveUse { Move = TestHelpers.CreateMove(), User = TestHelpers.CreateBasicCharacter(), OtherCharacters = Enumerable.Empty <Character>(), }; var moveProcessor = new MoveProcessor(); _ = moveProcessor.Push(moveUse); // Act var appliedMoveUse = moveProcessor.ApplyNext(); // Assert Assert.That(appliedMoveUse.HasResult, Is.True); }
public void ApplyNext_QueueNotEmptyAndUserDead_ReturnsUnappliedMoveUse() { // Arrange var moveUse = new MoveUse { Move = TestHelpers.CreateMove(), User = TestHelpers.CreateBasicCharacter(), }; _ = moveUse.User.ReceiveDamage <Move>(6, TestHelpers.CreateBasicCharacter()); var moveProcessor = new MoveProcessor(); _ = moveProcessor.Push(moveUse); // Act var appliedMoveUse = moveProcessor.ApplyNext(); // Assert Assert.That(appliedMoveUse.HasResult, Is.False); }
public void InvokeState() { var level = levelFactory.CreateLevel(); var inputLoop = new InputLoop(); var playView = new ConsolePlayView(); var moveInteractor = new MoveInteractor(level, playView); var exitGameInteractor = new ExitGameInteractor(inputLoop); var moveProcessor = new MoveProcessor(moveInteractor); var exitGameProcessor = new ExitGameProcessor(exitGameInteractor); var keyboardController = new KeyboardController(); keyboardController.AddInputProcessor(moveProcessor); keyboardController.AddInputProcessor(exitGameProcessor); inputLoop.AddUpdatable(keyboardController); playView.Draw(level); inputLoop.Start(); }
public void Push_CanUseMove_Succeeds( int remainingUses, bool expectedResult, bool expectedQueueIsEmpty) { // Arrange var moveUse = new MoveUse { Move = TestHelpers.CreateMove(maxUses: remainingUses), }; var moveProcessor = new MoveProcessor(); // Act var result = moveProcessor.Push(moveUse); // Assert Assert.Multiple(() => { Assert.That(result, Is.EqualTo(expectedResult)); Assert.That(moveProcessor.MoveUseQueueIsEmpty, Is.EqualTo(expectedQueueIsEmpty)); }); }
void Start() { moveProcessor = gameObject.GetComponent <MoveProcessor>(); gameModel = GameObject.FindObjectOfType <GameModel>(); }
void Start() { moveProcessor = gameObject.GetComponent<MoveProcessor>(); gameModel = GameObject.FindObjectOfType<GameModel>(); }
private void Awake() { Speed = speed; _moveProcessor = new MoveProcessor(GetComponent <Entity>(), this); }
public static IEnumerable <Client> GetOutlawPlayersInRange(Client client, int range, Enums.OutlawRole outlawRole) { var targets = MoveProcessor.GetTargetsInRange(Enums.MoveRange.Room, range, client.Player.Map, client.Player.GetActiveRecruit(), client.Player.X, client.Player.Y, Enums.Direction.Up, true, true, false); return(targets.Foes.OfType <Recruit>().Where(x => x.Owner.Player.OutlawRole == outlawRole).Select(x => x.Owner)); }