private IActor CreateMonster(MonsterPerson person, IMapNode startNode, IBotPlayer botPlayer) { var actor = new Actor(person, botPlayer, startNode); _actorManager.Add(actor); return(actor); }
private IActor CreateCitizen(IDropTableScheme traderDropTable, IMapNode startNode, IBotPlayer botPlayer) { var person = new CitizenPerson(traderDropTable, _dropResolver); var actor = new Actor(person, botPlayer, startNode); _actorManager.Add(actor); return(actor); }
private static IActor CreateMonster(IActorManager actorManager, MonsterPerson person, IGraphNode startNode, IBotPlayer botPlayer) { var actor = new Actor(person, botPlayer, startNode); actorManager.Add(actor); return(actor); }
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 static IActorViewModel CreateHumanActorVm([NotNull] IPlayer player, [NotNull] ISchemeService schemeService, [NotNull] ISurvivalRandomSource survivalRandomSource, [NotNull] IPersonScheme personScheme, [NotNull] IActorManager actorManager, [NotNull] IMapNode startNode) { var inventory = new Inventory(); var evolutionData = new EvolutionData(schemeService); var defaultActScheme = schemeService.GetScheme <ITacticalActScheme>(personScheme.DefaultAct); var person = new HumanPerson(personScheme, defaultActScheme, evolutionData, survivalRandomSource, inventory); var actor = new Actor(person, player, startNode); actorManager.Add(actor); var actorViewModel = new TestActorViewModel { Actor = actor }; return(actorViewModel); }
private IActor CreateMonster(IActorManager actorManager, IMonsterScheme monsterScheme, IGraphNode startNode, IBotPlayer botPlayer) { var person = _monsterFactory.Create(monsterScheme); var actor = new Actor(person, botPlayer, startNode); actorManager.Add(actor); return(actor); }
private static IActor CreateMonster(IActorManager actorManager, MonsterPerson person, IGraphNode startNode, IActorTaskSource <ISectorTaskSourceContext> actorTaskSource) { var actor = new Actor(person, actorTaskSource, startNode); actorManager.Add(actor); return(actor); }
private IActor CreateMonster(IMonsterScheme monsterScheme, IMapNode startNode, IBotPlayer botPlayer) { var person = new MonsterPerson(monsterScheme); var actor = new Actor(person, botPlayer, startNode); _actorManager.Add(actor); return(actor); }
private IActor CreateMonster(IActorManager actorManager, IMonsterScheme monsterScheme, IGraphNode startNode, IActorTaskSource <ISectorTaskSourceContext> actorTaskSource) { var person = _monsterFactory.Create(monsterScheme); var actor = new Actor(person, actorTaskSource, startNode); actorManager.Add(actor); return(actor); }
private ActorViewModel CreateHumanActorVm([NotNull] IPlayer player, [NotNull] PersonScheme personScheme, [NotNull] IActorManager actorManager, [NotNull] IMapNode startNode, [NotNull] IEnumerable <MapNodeVM> nodeVMs) { if (_personManager.Person == null) { var inventory = new Inventory(); var evolutionData = new EvolutionData(_schemeService); //evolutionData.PerkLeveledUp += (sender, args) => Debug.Log("LevelUp"); var defaultActScheme = _schemeService.GetScheme <TacticalActScheme>(personScheme.DefaultAct); var person = new HumanPerson(personScheme, defaultActScheme, evolutionData, inventory); _personManager.Person = person; AddEquipmentToActor(inventory, "battle-axe"); AddEquipmentToActor(inventory, "short-sword"); AddEquipmentToActor(inventory, "steel-helmet"); AddEquipmentToActor(inventory, "steel-armor"); AddEquipmentToActor(inventory, "pistol"); } var actor = new Actor(_personManager.Person, player, startNode, _personManager.ActorState); _personManager.ActorState = actor.State; actorManager.Add(actor); var actorVm = Instantiate(ActorPrefab, transform); var actorGraphic = Instantiate(HumanoidGraphicPrefab, actorVm.transform); actorGraphic.transform.position = new Vector3(0, 0.2f, 0); actorVm.GraphicRoot = actorGraphic; var graphicController = actorVm.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); actorVm.transform.position = actorPosition; actorVm.Actor = actor; actorVm.Actor.OpenedContainer += PlayerActorOnOpenedContainer; actorVm.Actor.UsedAct += ActorOnUsedAct; return(actorVm); }
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 static IActorViewModel CreateHumanActorVm([NotNull] IPlayer player, [NotNull] ISchemeService schemeService, [NotNull] ISurvivalRandomSource survivalRandomSource, [NotNull] IPersonScheme personScheme, [NotNull] IActorManager actorManager, [NotNull] IGraphNode startNode) { if (player is null) { throw new System.ArgumentNullException(nameof(player)); } if (schemeService is null) { throw new System.ArgumentNullException(nameof(schemeService)); } if (survivalRandomSource is null) { throw new System.ArgumentNullException(nameof(survivalRandomSource)); } if (personScheme is null) { throw new System.ArgumentNullException(nameof(personScheme)); } if (actorManager is null) { throw new System.ArgumentNullException(nameof(actorManager)); } if (startNode is null) { throw new System.ArgumentNullException(nameof(startNode)); } var person = new HumanPerson(personScheme); var actor = new Actor(person, player, startNode); actorManager.Add(actor); var actorViewModel = new TestActorViewModel { Actor = actor }; return(actorViewModel); }
private void CreateRoomMonsters(ISector sector, IEnumerable <Room> rooms) { var monsterScheme = _schemeService.GetScheme <MonsterScheme>("rat"); foreach (var room in rooms) { var person = new MonsterPerson(monsterScheme); var startNode = room.Nodes.FirstOrDefault(); var actor = new Actor(person, _botPlayer, startNode); _actorManager.Add(actor); var finishPatrolNode = room.Nodes.Last(); var patrolRoute = new PatrolRoute(new[] { startNode, finishPatrolNode }); sector.PatrolRoutes[actor] = patrolRoute; } }
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 static IActor CreateHumanActor(HumanPlayer humanPlayer, ISchemeService schemeService, ISurvivalRandomSource survivalRandomSource, IPropFactory propFactory, ISectorManager sectorManager, IActorManager actorManager) { var personScheme = schemeService.GetScheme <IPersonScheme>("human-person"); var playerActorStartNode = sectorManager.CurrentSector.Map.Regions .SingleOrDefault(x => x.IsStart).Nodes .First(); if (humanPlayer.MainPerson == null) { var inventory = new Inventory(); var evolutionData = new EvolutionData(schemeService); var defaultActScheme = schemeService.GetScheme <ITacticalActScheme>(personScheme.DefaultAct); var person = new HumanPerson(personScheme, defaultActScheme, evolutionData, survivalRandomSource, inventory); humanPlayer.MainPerson = person; // TODO Использовать генератор персонажа, как в игре. // Для этого нужно научить ботов корректно использовать оружие дальнего боя и посохи лечения. var classRoll = new Random().Next(1, 3); switch (classRoll) { case 1: AddEquipmentToActor(person.EquipmentCarrier, 2, "short-sword", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 1, "steel-armor", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 3, "wooden-shield", schemeService, propFactory); break; case 2: AddEquipmentToActor(person.EquipmentCarrier, 2, "battle-axe", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 3, "battle-axe", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 0, "highlander-helmet", schemeService, propFactory); break; case 3: AddEquipmentToActor(person.EquipmentCarrier, 2, "bow", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 1, "leather-jacket", schemeService, propFactory); AddEquipmentToActor(inventory, "short-sword", schemeService, propFactory); AddResourceToActor(inventory, "arrow", 10, schemeService, propFactory); break; case 4: AddEquipmentToActor(person.EquipmentCarrier, 2, "fireball-staff", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 1, "scholar-robe", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 0, "wizard-hat", schemeService, propFactory); AddResourceToActor(inventory, "mana", 15, schemeService, propFactory); break; case 5: AddEquipmentToActor(person.EquipmentCarrier, 2, "pistol", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 0, "elder-hat", schemeService, propFactory); AddResourceToActor(inventory, "bullet-45", 5, schemeService, propFactory); AddResourceToActor(inventory, "packed-food", 1, schemeService, propFactory); AddResourceToActor(inventory, "water-bottle", 1, schemeService, propFactory); AddResourceToActor(inventory, "med-kit", 1, schemeService, propFactory); AddResourceToActor(inventory, "mana", 5, schemeService, propFactory); AddResourceToActor(inventory, "arrow", 3, schemeService, propFactory); break; default: throw new InvalidOperationException("Эта комбинация начальной экипировки не поддерживается."); } AddResourceToActor(inventory, "packed-food", 1, schemeService, propFactory); AddResourceToActor(inventory, "water-bottle", 1, schemeService, propFactory); AddResourceToActor(inventory, "med-kit", 1, schemeService, propFactory); } var actor = new Actor(humanPlayer.MainPerson, humanPlayer, playerActorStartNode); actorManager.Add(actor); return(actor); }
private static IActor CreateHumanActor(HumanPlayer humanPlayer, ISchemeService schemeService, ISurvivalRandomSource survivalRandomSource, IPropFactory propFactory, ISectorManager sectorManager, IActorManager actorManager) { var personScheme = schemeService.GetScheme <IPersonScheme>("human-person"); var playerActorStartNode = sectorManager.CurrentSector.Map.Regions .SingleOrDefault(x => x.IsStart).Nodes .First(); if (humanPlayer.MainPerson == null) { var inventory = new Inventory(); var evolutionData = new EvolutionData(schemeService); var defaultActScheme = schemeService.GetScheme <ITacticalActScheme>(personScheme.DefaultAct); var person = new HumanPerson(personScheme, defaultActScheme, evolutionData, survivalRandomSource, inventory); humanPlayer.MainPerson = person; var classRoll = new Random().Next(1, 3); switch (classRoll) { case 1: AddEquipmentToActor(person.EquipmentCarrier, 2, "short-sword", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 1, "steel-armor", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 3, "wooden-shield", schemeService, propFactory); break; case 2: AddEquipmentToActor(person.EquipmentCarrier, 2, "battle-axe", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 3, "battle-axe", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 0, "highlander-helmet", schemeService, propFactory); break; case 3: AddEquipmentToActor(person.EquipmentCarrier, 2, "bow", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 1, "leather-jacket", schemeService, propFactory); AddEquipmentToActor(inventory, "short-sword", schemeService, propFactory); AddResourceToActor(inventory, "arrow", 10, schemeService, propFactory); break; case 4: AddEquipmentToActor(person.EquipmentCarrier, 2, "fireball-staff", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 1, "scholar-robe", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 0, "wizard-hat", schemeService, propFactory); AddResourceToActor(inventory, "mana", 15, schemeService, propFactory); break; case 5: AddEquipmentToActor(person.EquipmentCarrier, 2, "pistol", schemeService, propFactory); AddEquipmentToActor(person.EquipmentCarrier, 0, "elder-hat", schemeService, propFactory); AddResourceToActor(inventory, "bullet-45", 5, schemeService, propFactory); AddResourceToActor(inventory, "packed-food", 1, schemeService, propFactory); AddResourceToActor(inventory, "water-bottle", 1, schemeService, propFactory); AddResourceToActor(inventory, "med-kit", 1, schemeService, propFactory); AddResourceToActor(inventory, "mana", 5, schemeService, propFactory); AddResourceToActor(inventory, "arrow", 3, schemeService, propFactory); break; } AddResourceToActor(inventory, "packed-food", 1, schemeService, propFactory); AddResourceToActor(inventory, "water-bottle", 1, schemeService, propFactory); AddResourceToActor(inventory, "med-kit", 1, schemeService, propFactory); } var actor = new Actor(humanPlayer.MainPerson, humanPlayer, playerActorStartNode); actorManager.Add(actor); return(actor); }
private ActorViewModel CreateHumanActorViewModel([NotNull] IPlayer player, [NotNull] IPersonScheme personScheme, [NotNull] IActorManager actorManager, [NotNull] ISurvivalRandomSource survivalRandomSource, [NotNull] IMapNode startNode, [NotNull] IEnumerable <MapNodeVM> nodeVMs) { if (_humanPlayer.MainPerson == null) { var inventory = new Inventory(); var evolutionData = new EvolutionData(_schemeService); var defaultActScheme = _schemeService.GetScheme <ITacticalActScheme>(personScheme.DefaultAct); var person = new HumanPerson(personScheme, defaultActScheme, evolutionData, survivalRandomSource, inventory); _humanPlayer.MainPerson = person; var classRoll = UnityEngine.Random.Range(1, 6); switch (classRoll) { case 1: AddEquipmentToActor(person.EquipmentCarrier, 2, "short-sword"); AddEquipmentToActor(person.EquipmentCarrier, 1, "steel-armor"); AddEquipmentToActor(person.EquipmentCarrier, 3, "wooden-shield"); break; case 2: AddEquipmentToActor(person.EquipmentCarrier, 2, "battle-axe"); AddEquipmentToActor(person.EquipmentCarrier, 3, "battle-axe"); AddEquipmentToActor(person.EquipmentCarrier, 0, "highlander-helmet"); break; case 3: AddEquipmentToActor(person.EquipmentCarrier, 2, "bow"); AddEquipmentToActor(person.EquipmentCarrier, 1, "leather-jacket"); AddEquipmentToActor(inventory, "short-sword"); AddResourceToActor(inventory, "arrow", 10); break; case 4: AddEquipmentToActor(person.EquipmentCarrier, 2, "fireball-staff"); AddEquipmentToActor(person.EquipmentCarrier, 1, "scholar-robe"); AddEquipmentToActor(person.EquipmentCarrier, 0, "wizard-hat"); AddResourceToActor(inventory, "mana", 15); break; case 5: AddEquipmentToActor(person.EquipmentCarrier, 2, "pistol"); AddEquipmentToActor(person.EquipmentCarrier, 0, "elder-hat"); AddResourceToActor(inventory, "bullet-45", 5); AddResourceToActor(inventory, "packed-food", 1); AddResourceToActor(inventory, "water-bottle", 1); AddResourceToActor(inventory, "med-kit", 1); AddResourceToActor(inventory, "mana", 5); AddResourceToActor(inventory, "arrow", 3); break; } AddResourceToActor(inventory, "packed-food", 1); AddResourceToActor(inventory, "water-bottle", 1); AddResourceToActor(inventory, "med-kit", 1); } var actor = new Actor(_humanPlayer.MainPerson, player, startNode); actorManager.Add(actor); var actorViewModelObj = _container.InstantiatePrefab(ActorPrefab, transform); var actorViewModel = actorViewModelObj.GetComponent <ActorViewModel>(); var actorGraphic = Instantiate(HumanoidGraphicPrefab, actorViewModel.transform); actorGraphic.transform.position = new Vector3(0, 0.2f, 0); 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); }