Ejemplo n.º 1
0
        private void ProcessAttackBySpecifiedWeapons(IJob job, List <IJob> modifiedJobs, AttackActorJobData jobData)
        {
            Debug.Assert(jobData.WeaponTags.Any(), "Должно быть указано не менее одного тега.");

            if (jobData.WeaponTags is null)
            {
                return;
            }

            if (!jobData.WeaponTags.Any())
            {
                return;
            }

            var weaponHasAllTags = true;

            foreach (var tag in jobData.WeaponTags)
            {
                Debug.Assert(!string.IsNullOrWhiteSpace(tag), "Теги не могут быть пустыми.");
                if (string.IsNullOrWhiteSpace(tag))
                {
                    continue;
                }

                var weaponHasTag = WeaponHasTag(tag, _tacticalAct);
                if (!weaponHasTag)
                {
                    weaponHasAllTags = false;
                    break;
                }
            }

            if (weaponHasAllTags)
            {
                AddProgress(job, modifiedJobs);
            }
        }
        private void ProcessAttackToSpecifiedMonster(IJob job, List <IJob> modifiedJobs, AttackActorJobData jobData)
        {
            Debug.Assert(jobData.WeaponTags.Any(), "Должно быть указано не менее одного тега.");
            if (!jobData.MonsterTags.Any())
            {
                return;
            }

            var monsterHasAllTags = true;

            foreach (var tag in jobData.WeaponTags)
            {
                Debug.Assert(!string.IsNullOrWhiteSpace(tag), "Теги не могут быть пустыми.");
                if (string.IsNullOrWhiteSpace(tag))
                {
                    continue;
                }

                var actorHasTag = ActorHasTag(tag, _targetActor);
                if (!actorHasTag)
                {
                    monsterHasAllTags = false;
                    break;
                }
            }

            if (monsterHasAllTags)
            {
                AddProgress(job, modifiedJobs);
            }
        }