private void CountTargetActorAttack(IActor actor, IActor targetActor, ITacticalAct tacticalAct)
        {
            if (actor.Person is MonsterPerson)
            {
                // Монстры не могут прокачиваться.
                return;
            }

            if (actor.Person == null)
            {
                // Это может происходить в тестах,
                // если в моках не определили персонажа.
                //TODO Поискать решение, как всегда быть уверенным, что персонаж указан в боевых условиях, и может быть null в тестах.
                //TODO Эта же проверка нужна в CountActorDefeat (учёт убиства актёра).
                return;
            }

            var evolutionData = actor.Person.EvolutionData;

            //TODO Такую же проверку добавить в CountActorDefeat (учёт убиства актёра).
            if (evolutionData == null)
            {
                return;
            }

            var progress = new AttackActorJobProgress(targetActor, tacticalAct);

            _perkResolver.ApplyProgress(progress, evolutionData);
        }
Exemplo n.º 2
0
        public int ApplyToJobs_PositiveJobsForWeaponUsage_ProgressIncreased(string[] equipmentTags,
                                                                            string[] jobWeaponTags, int currentJobProgress)
        {
            // ARRANGE

            var actor = Mock.Of <IActor>();

            var act = Mock.Of <ITacticalAct>(a => a.Equipment == new Equipment(new TestPropScheme
            {
                Equip = Mock.Of <IPropEquipSubScheme>(),
                Tags  = equipmentTags
            }));

            var progress = new AttackActorJobProgress(actor, act);

            var jobs = new IJob[]
            {
                Mock.Of <IJob>(job => job.Scheme == Mock.Of <IJobSubScheme>(
                                   scheme => scheme.Type == JobType.AttacksActor &&
                                   scheme.Data == new[]
                {
                    // anonymus object like AttackActorJobData
                    // because there is no interface to make test object with setter
                    JsonConvert.SerializeObject(new { WeaponTags = jobWeaponTags })
                }
                                   ) &&
                               job.Progress == currentJobProgress)
            };

            // ACT

            var factModifiedJobs = progress.ApplyToJobs(jobs);

            // ASSERT
            return(factModifiedJobs[0].Progress);
        }