public void MoveOnceActiveActor(OffsetCoords targetCoords) { var playerState = Container.GetInstance <IPlayerState>(); var moveCommand = Container.GetInstance <ICommand>("move"); var map = Container.GetInstance <IMap>(); var targetNode = map.Nodes.Cast <HexNode>().SelectBy(targetCoords.X, targetCoords.Y); var nodeViewModel = new TestNodeViewModel { Node = targetNode }; playerState.HoverViewModel = nodeViewModel; moveCommand.Execute(); }
public void MoveOnceActiveActor(OffsetCoords targetCoords) { var playerState = ServiceProvider.GetRequiredService <ISectorUiState>(); var moveCommand = ServiceProvider.GetRequiredService <MoveCommand>(); var sectorManager = ServiceProvider.GetRequiredService <ISectorManager>(); var targetNode = sectorManager .CurrentSector .Map .Nodes .SelectByHexCoords(targetCoords.X, targetCoords.Y); var nodeViewModel = new TestNodeViewModel { Node = targetNode }; playerState.HoverViewModel = nodeViewModel; playerState.SelectedViewModel = nodeViewModel; moveCommand.Execute(); }
public void MoveOnceActiveActor(OffsetCoords targetCoords) { var playerState = Container.GetInstance <ISectorUiState>(); var moveCommand = Container.GetInstance <ICommand>("move"); var sectorManager = Container.GetInstance <ISectorManager>(); var targetNode = sectorManager .CurrentSector .Map .Nodes .Cast <HexNode>() .SelectBy(targetCoords.X, targetCoords.Y); var nodeViewModel = new TestNodeViewModel { Node = targetNode }; playerState.HoverViewModel = nodeViewModel; playerState.SelectedViewModel = nodeViewModel; moveCommand.Execute(); }
public async System.Threading.Tasks.Task MoveCommandTestAsync() { var sectorManager = _container.GetInstance <ISectorManager>(); var playerState = _container.GetInstance <ISectorUiState>(); var moveCommand = _container.GetInstance <ICommand>("move-command"); var schemeService = _container.GetInstance <ISchemeService>(); var humanPlayer = _container.GetInstance <HumanPlayer>(); var actorManager = _container.GetInstance <IActorManager>(); var humanActorTaskSource = _container.GetInstance <IHumanActorTaskSource>(); var commandManger = _container.GetInstance <ICommandManager>(); var sectorGenerator = _container.GetInstance <ISectorGenerator>(); var locationScheme = new TestLocationScheme { SectorLevels = new ISectorSubScheme[] { new TestSectorSubScheme { RegularMonsterSids = new[] { "rat" }, RegionCount = 20, RegionSize = 20, IsStart = true, ChestDropTableSids = new[] { "default" }, RegionChestCountRatio = 9 } } }; var globeNode = new GlobeRegionNode(0, 0, locationScheme); humanPlayer.GlobeNode = globeNode; await sectorManager.CreateSectorAsync(); var personScheme = schemeService.GetScheme <IPersonScheme>("human-person"); var playerActorStartNode = sectorManager.CurrentSector.Map.Regions .SingleOrDefault(x => x.IsStart).Nodes .First(); var playerActorVm = CreateHumanActorVm(humanPlayer, personScheme, actorManager, playerActorStartNode); //Лучше централизовать переключение текущего актёра только в playerState playerState.ActiveActor = playerActorVm; humanActorTaskSource.SwitchActor(playerState.ActiveActor.Actor); var currentActorNode = (HexNode)playerState.ActiveActor.Actor.Node; var nextNodes = HexNodeHelper.GetSpatialNeighbors(currentActorNode, sectorManager.CurrentSector.Map.Nodes.Cast <HexNode>()); var moveTargetNode = nextNodes.First(); var nodeViewModel = new TestNodeViewModel { Node = moveTargetNode }; playerState.HoverViewModel = nodeViewModel; playerState.SelectedViewModel = nodeViewModel; commandManger.Push(moveCommand); ICommand command = null; do { command = commandManger.Pop(); try { command?.Execute(); } catch (Exception exception) { throw new InvalidOperationException($"Не удалось выполнить команду {command}.", exception); } } while (command != null); }