private static IActor CreateHumanActor(HumanPlayer humanPlayer, IHumanPersonFactory personFactory, ISectorManager sectorManager, IActorManager actorManager, IPerkResolver perkResolver) { var person = personFactory.Create(); Console.WriteLine("Start properties:"); foreach (var equipment in person.EquipmentCarrier) { Console.WriteLine($"Equiped: {equipment}"); } foreach (var prop in person.Inventory.CalcActualItems()) { Console.WriteLine(prop); } humanPlayer.MainPerson = person; var playerActorStartNode = sectorManager.CurrentSector.Map.Regions .SingleOrDefault(x => x.IsStart).Nodes .First(); var actor = new Actor(humanPlayer.MainPerson, humanPlayer, playerActorStartNode, perkResolver); actorManager.Add(actor); return(actor); }
public void SetUp() { var actUsageRandomSourceMock = new Mock <ITacticalActUsageRandomSource>(); _actUsageRandomSource = actUsageRandomSourceMock.Object; _perkResolverMock = new Mock <IPerkResolver>(); _perkResolver = _perkResolverMock.Object; var personMock = new Mock <IPerson>(); _person = personMock.Object; var evolutionDataMock = new Mock <IEvolutionData>(); var evolutionData = evolutionDataMock.Object; personMock.SetupGet(x => x.EvolutionData).Returns(evolutionData); var actMock = new Mock <ITacticalAct>(); actMock.SetupGet(x => x.Stats).Returns(new TacticalActStatsSubScheme { Range = new Range <int>(1, 1) }); _act = actMock.Object; }
/// <summary> /// Конструирует экземпляр службы <see cref="TacticalActUsageService"/>. /// </summary> /// <param name="actUsageRandomSource">Источник рандома для выполнения действий.</param> /// <param name="perkResolver">Сервис для работы с прогрессом перков.</param> /// <param name="sectorManager">Менеджер сектора.</param> /// <exception cref="System.ArgumentNullException"> /// actUsageRandomSource /// or /// perkResolver /// or /// sectorManager /// </exception> public TacticalActUsageService(ITacticalActUsageRandomSource actUsageRandomSource, IPerkResolver perkResolver, ISectorManager sectorManager) { _actUsageRandomSource = actUsageRandomSource ?? throw new ArgumentNullException(nameof(actUsageRandomSource)); _perkResolver = perkResolver ?? throw new ArgumentNullException(nameof(perkResolver)); _sectorManager = sectorManager ?? throw new ArgumentNullException(nameof(sectorManager)); }
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); }
private IActor CreateHumanActor([NotNull] string personSchemeSid, [NotNull] IGraphNode startNode, [NotNull] IPerkResolver perkResolver) { var personFactory = ServiceProvider.GetRequiredService <IPersonFactory>(); var humanTaskSource = ServiceProvider.GetRequiredService <IHumanActorTaskSource <ISectorTaskSourceContext> >(); var person = personFactory.Create(personSchemeSid, Fractions.MainPersonFraction); var actor = new Actor(person, humanTaskSource, startNode, perkResolver); return(actor); }
public async Task SetUpAsync() { var actUsageRandomSourceMock = new Mock <ITacticalActUsageRandomSource>(); actUsageRandomSourceMock.Setup(x => x.RollToHit(It.IsAny <Roll>())).Returns(6); actUsageRandomSourceMock.Setup(x => x.RollEfficient(It.IsAny <Roll>())).Returns(1); _actUsageRandomSource = actUsageRandomSourceMock.Object; _perkResolverMock = new Mock <IPerkResolver>(); _perkResolver = _perkResolverMock.Object; var personMock = new Mock <IPerson>(); _person = personMock.Object; var evolutionDataMock = new Mock <IEvolutionData>(); var evolutionData = evolutionDataMock.Object; personMock.SetupGet(x => x.EvolutionData).Returns(evolutionData); var actScheme = new TestTacticalActStatsSubScheme { Offence = new TestTacticalActOffenceSubScheme { Type = OffenseType.Tactical, Impact = ImpactType.Kinetic, ApRank = 10 } }; var actMock = new Mock <ITacticalAct>(); actMock.SetupGet(x => x.Stats).Returns(actScheme); _act = actMock.Object; var sectorManagerMock = new Mock <ISectorManager>(); var sectorManager = sectorManagerMock.Object; var map = await SquareMapFactory.CreateAsync(3); var sectorMock = new Mock <ISector>(); sectorMock.SetupGet(x => x.Map).Returns(map); var sector = sectorMock.Object; sectorManagerMock.SetupGet(x => x.CurrentSector).Returns(sector); _sectorManager = sectorManager; }
private ActorViewModel CreateHumanActorViewModel([NotNull] IPlayer player, [NotNull] IActorManager actorManager, [NotNull] IPerkResolver perkResolver, [NotNull] IMapNode startNode, [NotNull] IEnumerable <MapNodeVM> nodeVMs) { if (_humanPlayer.MainPerson == null) { if (!_progressStorageService.LoadPerson()) { _humanPlayer.MainPerson = _humanPersonFactory.Create(); } } var actor = new Actor(_humanPlayer.MainPerson, player, startNode, perkResolver); 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.GraphicRoot = 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; actorViewModel.Selected += HumanActorViewModel_Selected; actor.OpenedContainer += PlayerActorOnOpenedContainer; actor.UsedAct += ActorOnUsedAct; actor.Person.Survival.Dead += HumanPersonSurvival_Dead; return(actorViewModel); }
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); }
private IActor CreateHumanActor([NotNull] IPlayer player, [NotNull] IPersonScheme personScheme, [NotNull] IMapNode startNode, [NotNull] IPerkResolver perkResolver) { var schemeService = Container.GetInstance <ISchemeService>(); var survivalRandomSource = Container.GetInstance <ISurvivalRandomSource>(); var evolutionData = new EvolutionData(schemeService); var inventory = new Inventory(); var defaultActScheme = schemeService.GetScheme <ITacticalActScheme>(personScheme.DefaultAct); var person = new HumanPerson(personScheme, defaultActScheme, evolutionData, survivalRandomSource, inventory); var actor = new Actor(person, player, startNode, perkResolver); return(actor); }
public ActorActUsageHandler(IPerkResolver perkResolver, ITacticalActUsageRandomSource actUsageRandomSource) { _perkResolver = perkResolver; _actUsageRandomSource = actUsageRandomSource; }
public ActorActUsageHandler(IPerkResolver perkResolver, ITacticalActUsageRandomSource actUsageRandomSource) { _perkResolver = perkResolver ?? throw new ArgumentNullException(nameof(perkResolver)); _actUsageRandomSource = actUsageRandomSource ?? throw new ArgumentNullException(nameof(actUsageRandomSource)); }
public Actor([NotNull] IPerson person, [NotNull] IPlayer owner, [NotNull] IMapNode node, [CanBeNull] IPerkResolver perkResolver) : this(person, owner, node) { _perkResolver = perkResolver; }
public TacticalActUsageService(ITacticalActUsageRandomSource actUsageRandomSource, IPerkResolver perkResolver) { _actUsageRandomSource = actUsageRandomSource; _perkResolver = perkResolver; }
public Actor([NotNull] IPerson person, [NotNull] IActorTaskSource <ISectorTaskSourceContext> taskSource, [NotNull] IGraphNode node, [CanBeNull] IPerkResolver perkResolver) : this(person, taskSource, node) { _perkResolver = perkResolver; }