Exemple #1
0
        private IActor CreateMonster(MonsterPerson person, IMapNode startNode, IBotPlayer botPlayer)
        {
            var actor = new Actor(person, botPlayer, startNode);

            _actorManager.Add(actor);
            return(actor);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        private static IActor CreateMonster(IActorManager actorManager, MonsterPerson person, IGraphNode startNode, IBotPlayer botPlayer)
        {
            var actor = new Actor(person, botPlayer, startNode);

            actorManager.Add(actor);
            return(actor);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #8
0
        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);
        }
Exemple #10
0
    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);
    }
Exemple #11
0
    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);
    }
Exemple #12
0
        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);
        }
Exemple #13
0
        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;
            }
        }
Exemple #14
0
    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);
    }
Exemple #15
0
    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);
        }
Exemple #17
0
        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);
    }