Ejemplo n.º 1
0
    private void SetMonsterName(MonsterPerson monsterPerson, Language currentLanguage)
    {
        var monsterName          = monsterPerson.Scheme.Name;
        var monsterLocalizedName = LocalizationHelper.GetValueOrDefaultNoname(currentLanguage, monsterName);

        MonsterNameText.text = monsterLocalizedName;
    }
Ejemplo n.º 2
0
        private IActor CreateMonster(MonsterPerson person, IMapNode startNode, IBotPlayer botPlayer)
        {
            var actor = new Actor(person, botPlayer, startNode);

            _actorManager.Add(actor);
            return(actor);
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 4
0
        public IPerson Create(IMonsterScheme monsterScheme)
        {
            var monsterPerson = new MonsterPerson(monsterScheme);

            var Acts = new ITacticalAct[] {
                new MonsterTacticalAct(monsterScheme.PrimaryAct)
            };

            var combaActModule = new MonsterCombatActModule(Acts);

            monsterPerson.AddModule(combaActModule);

            var defenses = monsterScheme.Defense?.Defenses?
                           .Select(x => new PersonDefenceItem(x.Type, x.Level))
                           .ToArray();

            var defenceStats = new PersonDefenceStats(
                defenses ?? Array.Empty <PersonDefenceItem>(),
                Array.Empty <PersonArmorItem>());

            var combatStatsModule = new MonsterCombatStatsModule(defenceStats);

            monsterPerson.AddModule(combatStatsModule);

            var survivalModule = new MonsterSurvivalModule(monsterScheme);

            monsterPerson.AddModule(survivalModule);

            var diseaseModule = new MonsterDiseaseModule();

            monsterPerson.AddModule(diseaseModule);

            return(monsterPerson);
        }
Ejemplo n.º 5
0
        private Action ActUnsupportedMonsterComponent(MonsterPerson monster, Action <MonsterPerson> requestPropertyAct)
        {
            Action act = () => {
                requestPropertyAct(monster);
            };

            return(act);
        }
Ejemplo n.º 6
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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
    private void ShowMonsterInfo(MonsterPerson monsterPerson)
    {
        PaneContent.SetActive(true);

        var currentLanguage = _uiSettingService.CurrentLanguage;

        SetMonsterName(monsterPerson, currentLanguage);
        SetMonsterStats(monsterPerson, currentLanguage);
    }
        private Action ActUnsupportedMonsterComponent(MonsterPerson monster, Action <MonsterPerson> requestPropertyAct)
        {
            // ReSharper disable once ConvertToLocalFunction
            Action act = () => {
                requestPropertyAct(monster);
            };

            return(act);
        }
Ejemplo n.º 10
0
        private IActor CreateMonsterActor([NotNull] IBotPlayer player,
                                          [NotNull] IMonsterScheme monsterScheme,
                                          [NotNull] IMapNode startNode)
        {
            var monsterPerson = new MonsterPerson(monsterScheme);

            var actor = new Actor(monsterPerson, player, startNode);

            return(actor);
        }
Ejemplo n.º 11
0
        private static MonsterPerson CreateMonster()
        {
            var monsterScheme = new TestMonsterScheme
            {
                PrimaryAct = new TestTacticalActStatsSubScheme()
            };

            var monster = new MonsterPerson(monsterScheme);

            return(monster);
        }
Ejemplo n.º 12
0
        private static MonsterPerson CreateMonster()
        {
            var monsterScheme = new TestMonsterScheme
            {
                CombatActs = new[] { new TestTacticalActStatsSubScheme() }
            };

            var monster = new MonsterPerson(monsterScheme);

            return(monster);
        }
Ejemplo n.º 13
0
        private IActor CreateMonsterActor([NotNull] IBotPlayer player,
                                          [NotNull] MonsterScheme monsterScheme,
                                          [NotNull] IMapNode startNode)
        {
            var schemeService = Container.GetInstance <ISchemeService>();

            var monsterPerson = new MonsterPerson(monsterScheme);

            var actor = new Actor(monsterPerson, player, startNode);

            return(actor);
        }
Ejemplo n.º 14
0
        private static MonsterPerson CreateMonster()
        {
            var monsterScheme = new MonsterScheme
            {
                PrimaryAct = new TacticalActStatsSubScheme
                {
                    Efficient = new Range <float>(1, 1)
                }
            };
            var monster = new MonsterPerson(monsterScheme);

            return(monster);
        }
Ejemplo n.º 15
0
        public IPerson Create(IMonsterScheme monsterScheme)
        {
            var monsterPerson = new MonsterPerson(monsterScheme);

            if (MonsterIdentifierGenerator != null)
            {
                monsterPerson.Id = MonsterIdentifierGenerator.GetNewId();
            }

            var movingModule = new MonsterMovingModule(monsterScheme);

            monsterPerson.AddModule(movingModule);

            if (monsterScheme?.PrimaryAct is null)
            {
                throw new InvalidOperationException();
            }

            var Acts = new ITacticalAct[]
            {
                new MonsterTacticalAct(monsterScheme.PrimaryAct)
            };

            var combaActModule = new MonsterCombatActModule(Acts);

            monsterPerson.AddModule(combaActModule);

            var defenses = monsterScheme.Defense?.Defenses?
                           .Where(x => x != null)
                           .Select(x => x !)
                           .Select(x => new PersonDefenceItem(x.Type, x.Level))
                           .ToArray();

            var defenceStats = new PersonDefenceStats(
                defenses ?? Array.Empty <PersonDefenceItem>(),
                Array.Empty <PersonArmorItem>());

            var combatStatsModule = new MonsterCombatStatsModule(defenceStats);

            monsterPerson.AddModule(combatStatsModule);

            var survivalModule = new MonsterSurvivalModule(monsterScheme);

            monsterPerson.AddModule(survivalModule);

            var diseaseModule = new MonsterDiseaseModule();

            monsterPerson.AddModule(diseaseModule);

            return(monsterPerson);
        }
Ejemplo n.º 16
0
    private void SetMonsterStats(MonsterPerson monsterPerson, Language currentLanguage)
    {
        var hpStat = monsterPerson.GetModule <ISurvivalModule>().Stats.SingleOrDefault(x => x.Type == SurvivalStatType.Health);

        if (hpStat == null)
        {
            return;
        }

        var monsterHealthStateKey = HealthHelper.GetHealthStateKey(hpStat);
        var monsterHealthState    = StaticPhrases.GetValue($"state-hp-{monsterHealthStateKey}", currentLanguage);

        MonsterHpText.text = monsterHealthState;
    }
        private static MonsterPerson CreateMonster()
        {
            var monsterScheme = new TestMonsterScheme
            {
                PrimaryAct = new TestTacticalActStatsSubScheme()
            };

            var survivalRandomSourceMock = new Mock <ISurvivalRandomSource>();
            var survivalRandomSource     = survivalRandomSourceMock.Object;

            var monster = new MonsterPerson(monsterScheme);

            return(monster);
        }
Ejemplo n.º 18
0
        public static string GetPerkHintText(MonsterPerson monster)
        {
            var name        = GetMonsterName(monster);
            var description = GetMonsterDescription(monster);

            var survivalModule = monster.GetModule <ISurvivalModule>();
            var hpStat         = survivalModule.Stats.Single(x => x.Type == SurvivalStatType.Health);
            var healthState    = GetHealthState(hpStat.ValueShare);

            if (!string.IsNullOrWhiteSpace(description))
            {
                return($"{name}\n{new string('-', 8)}\n{healthState}\n{new string('-', 8)}\n{description}");
            }

            return($"{name}\n{new string('-', 8)}\n{healthState}");
        }
Ejemplo n.º 19
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;
            }
        }
Ejemplo n.º 20
0
        private void CreateNodeMonsterState(MonsterSet[] monsterSets, GlobeRegionNode node)
        {
            var monsterSetRoll   = _dice.Roll(0, monsterSets.Count() - 1);
            var rolledMonsterSet = monsterSets[monsterSetRoll];

            var monsterCount = rolledMonsterSet.MonsterSchemes.Count();

            node.MonsterState = new GlobeRegionNodeMonsterState
            {
                MonsterPersons = new MonsterPerson[monsterCount]
            };

            // Генерируем персонажей монстров.
            for (var monsterIndex = 0; monsterIndex < monsterCount; monsterIndex++)
            {
                var monsterScheme = rolledMonsterSet.MonsterSchemes[monsterIndex];
                var person        = new MonsterPerson(monsterScheme);
                node.MonsterState.MonsterPersons[monsterIndex] = person;
            }
        }
Ejemplo n.º 21
0
        /// <summary>Засчитать убийство монстра.</summary>
        /// <param name="monster">Монстр, убитый игроком.</param>
        public void CountMonsterDefeat(MonsterPerson monster)
        {
            var monsterScheme = monster.Scheme;

            var score = monsterScheme.BaseScore;

            if (score == 0)
            {
                score = MONSTER_DEFAULT_BASE_SCORE;
            }

            BaseScores += score;

            if (!Frags.ContainsKey(monsterScheme))
            {
                Frags.Add(monsterScheme, 0);
            }

            Frags[monsterScheme]++;
        }
Ejemplo n.º 22
0
        public void Constructor_DefaultParams_NoException()
        {
            // ARRANGE
            var monsterScheme = new TestMonsterScheme
            {
                CombatActs = new[] { new TestTacticalActStatsSubScheme() }
            };

            var survivalRandomSourceMock = new Mock <ISurvivalRandomSource>();
            var survivalRandomSource     = survivalRandomSourceMock.Object;

            // ACT
            Action act = () =>
            {
                // ReSharper disable once UnusedVariable
                var monster = new MonsterPerson(monsterScheme);
            };

            // ARRANGE
            act.Should().NotThrow();
        }
        public void Constructor_HpInScheme_ActorHpEqualsSchemeHp()
        {
            // ARRANGE
            const int expectedHp    = 100;
            var       monsterScheme = new TestMonsterScheme
            {
                Hp         = expectedHp,
                PrimaryAct = new TestTacticalActStatsSubScheme()
            };

            var survivalRandomSourceMock = new Mock <ISurvivalRandomSource>();
            var survivalRandomSource     = survivalRandomSourceMock.Object;

            // ACT
            var monster = new MonsterPerson(monsterScheme);



            // ARRANGE
            monster.Hp.Should().Be(expectedHp);
        }
Ejemplo n.º 24
0
        public void Constructor_HpInScheme_ActorHpEqualsSchemeHp()
        {
            // ARRANGE
            const int expectedHp    = 100;
            var       monsterScheme = new MonsterScheme
            {
                Hp         = expectedHp,
                PrimaryAct = new TacticalActStatsSubScheme
                {
                    Efficient = new Range <float>(1, 2)
                }
            };

            // ACT
            var monster = new MonsterPerson(monsterScheme);



            // ARRANGE
            monster.Hp.Should().Be(expectedHp);
        }
Ejemplo n.º 25
0
        public void Constructor_DefaultParams_NoException()
        {
            // ARRANGE
            var monsterScheme = new MonsterScheme
            {
                PrimaryAct = new TacticalActStatsSubScheme
                {
                    Efficient = new Range <float>(1, 2)
                }
            };

            // ACT
            Action act = () =>
            {
                var monster = new MonsterPerson(monsterScheme);
            };



            // ARRANGE
            act.Should().NotThrow();
        }
Ejemplo n.º 26
0
        public static string GetMonsterName(MonsterPerson monster)
        {
            var text = monster.Scheme.Name?.En;

            var currentLanguage = Thread.CurrentThread.CurrentUICulture;
            var langName        = currentLanguage.TwoLetterISOLanguageName;

            if (string.Equals(langName, "en", StringComparison.InvariantCultureIgnoreCase))
            {
                text = monster.Scheme.Name?.En;
            }
            else if (string.Equals(langName, "ru", StringComparison.InvariantCultureIgnoreCase))
            {
                text = monster.Scheme.Name?.Ru;
            }
            else
            {
                Debug.Fail(
                    $"Unknown language {langName} is selected. All available language must be supported in the client.");
            }

            return(text ?? "<Undef>");
        }