public void Setup() { int mapSize = 1000; int baseX = 50; int baseY = 50; _radius = 5; // ARRANGE var map = new SectorHexMap(1000); for (var i = 0; i < mapSize; i++) { for (var j = 0; j < mapSize; j++) { var hexNode = new HexNode(i, j); map.AddNode(hexNode); } } _fowData = new HumanSectorFowData(); _baseNode = map.HexNodes.Single(x => x.OffsetCoords.X == baseX && x.OffsetCoords.Y == baseY); _fowContextMock = new TestFowContext(map); }
public ISectorFowData GetSectorFowData(ISector sector) { if (!_sectorFows.TryGetValue(sector, out var sectorFowData)) { sectorFowData = new HumanSectorFowData(); _sectorFows[sector] = sectorFowData; } return(sectorFowData); }
private ActorViewModel CreateHumanActorViewModel([NotNull] IPlayer player, [NotNull] IActorManager actorManager, [NotNull] IPerkResolver perkResolver, [NotNull] IGraphNode startNode, [NotNull] IEnumerable <MapNodeVM> nodeVMs) { if (_humanPlayer.MainPerson == null) { if (!_progressStorageService.LoadPerson()) { var playerPerson = _humanPersonFactory.Create("human-person"); _humanPlayer.MainPerson = playerPerson; ShowCreatePersonModal(playerPerson); } } var fowData = new HumanSectorFowData(); var actor = new Actor(_humanPlayer.MainPerson, player, startNode, perkResolver, fowData); _playerEventLogService.Actor = actor; actorManager.Add(actor); var actorViewModelObj = _container.InstantiatePrefab(ActorPrefab, transform); var actorViewModel = actorViewModelObj.GetComponent <ActorViewModel>(); actorViewModel.PlayerState = _playerState; var actorGraphic = Instantiate(HumanoidGraphicPrefab, actorViewModel.transform); actorGraphic.transform.position = new Vector3(0, 0.2f, -0.27f); actorViewModel.SetGraphicRoot(actorGraphic); var graphicController = actorViewModel.gameObject.AddComponent <HumanActorGraphicController>(); graphicController.Actor = actor; graphicController.Graphic = actorGraphic; var actorNodeVm = nodeVMs.Single(x => x.Node == actor.Node); var actorPosition = actorNodeVm.transform.position + new Vector3(0, 0, -1); actorViewModel.transform.position = actorPosition; actorViewModel.Actor = actor; if (!actor.Person.GetModule <IInventoryModule>().CalcActualItems().Any(x => x.Scheme.Sid == "camp-tools")) { AddResourceToCurrentPerson("camp-tools"); } return(actorViewModel); }
public void UpdateFowData_RealHumanSectorFowData_ObseringNodesIsNotEmpty(int mapSize, int baseX, int baseY, int radius) { // ARRANGE var map = new SectorHexMap(1000); for (var i = 0; i < mapSize; i++) { for (var j = 0; j < mapSize; j++) { var hexNode = new HexNode(i, j); map.AddNode(hexNode); } } var fowData = new HumanSectorFowData(); var baseNode = map.HexNodes.Single(x => x.OffsetCoords.CompsEqual(baseX, baseY)); var fowContextMock = new Mock <IFowContext>(); fowContextMock.Setup(x => x.IsTargetVisible(It.IsAny <IGraphNode>(), It.IsAny <IGraphNode>())) .Returns <IGraphNode, IGraphNode>((baseNode, targetNode) => map.TargetIsOnLine(baseNode, targetNode)); fowContextMock.Setup(x => x.GetNext(It.IsAny <IGraphNode>())) .Returns <IGraphNode>(node => map.GetNext(node)); var fowContext = fowContextMock.Object; var expectedObservingNodes = map.HexNodes.Where(x => map.DistanceBetween(x, baseNode) <= radius).ToArray(); // ACT FowHelper.UpdateFowData(fowData, fowContext, baseNode, radius); // ARRANGE var factObservingNodes = fowData.GetFowNodeByState(SectorMapNodeFowState.Observing).Select(x => x.Node); factObservingNodes.Should().BeEquivalentTo(expectedObservingNodes); }
private ActorViewModel CreateHumanActorViewModelFromMainPerson( [NotNull] IActorManager actorManager, [NotNull] IPerkResolver perkResolver, [NotNull] IGraphNode startNode, [NotNull] IEnumerable <MapNodeVM> nodeVMs) { var fowData = new HumanSectorFowData(); var actor = new Actor(_humanPlayer.MainPerson, _humanPlayer, startNode, perkResolver, fowData); actorManager.Add(actor); var actorViewModelObj = _container.InstantiatePrefab(ActorPrefab, TargetObject); // Задаём имя объекта для отладки через редактор. // Чтобы визуально можно было проще найти вью-модель персонажа игрока в секторе. actorViewModelObj.name = "PlayerActor"; var actorViewModel = actorViewModelObj.GetComponent <ActorViewModel>(); var actorGraphic = Instantiate(HumanoidGraphicPrefab, actorViewModel.transform); actorGraphic.transform.position = new Vector3(0, 0.2f, -0.27f); actorViewModel.SetGraphicRoot(actorGraphic); var graphicController = actorViewModel.gameObject.AddComponent <HumanActorGraphicController>(); graphicController.Actor = actor; graphicController.Graphic = actorGraphic; var actorNodeVm = nodeVMs.Single(x => x.Node == actor.Node); var actorPosition = actorNodeVm.transform.position + new Vector3(0, 0, -1); actorViewModel.transform.position = actorPosition; actorViewModel.Actor = actor; return(actorViewModel); }