Пример #1
0
        public PersonConditionTextures GetConditionIconTextures(IPersonCondition personCondition)
        {
            if (_conditionIconBackgroundTextures is null)
            {
                throw new InvalidOperationException("Icon backgrounds are not loaded.");
            }

            switch (personCondition)
            {
            case SurvivalStatHazardCondition statCondition:

                var typeTexture            = GetStatHazardConditionTypeClient(statCondition.Type);
                var levelBackgroundTexture =
                    GetStatHazardConditionLevelClient(statCondition.Level, _conditionIconBackgroundTextures);
                return(new PersonConditionTextures(typeTexture, levelBackgroundTexture));

            case DiseaseSymptomCondition:

                if (_conditionDeseaseSymptomIcon is null)
                {
                    throw new InvalidOperationException("Desease icon is not loaded.");
                }

                return(new PersonConditionTextures(_conditionDeseaseSymptomIcon,
                                                   _conditionIconBackgroundTextures[0]));

            default:
                Debug.Fail("Every condition must have icon.");
                return(new PersonConditionTextures(_conditionDefaultIcon, _conditionIconBackgroundTextures[0]));
            }
        }
Пример #2
0
        public void Add(IPersonCondition condition)
        {
            if (condition is null)
            {
                throw new ArgumentNullException(nameof(condition));
            }

            _items.Add(condition);

            condition.Changed += Сondition_Changed;
            DoAdd(condition);
        }
Пример #3
0
        private static string GetConditionTitle(IPersonCondition personCondition)
        {
            switch (personCondition)
            {
            case SurvivalStatHazardCondition statEffect:
                return(GetSurvivalConditionTitle(statEffect));

            case DiseaseSymptomCondition:
                return(string.Empty);

            default:
                Debug.Fail(
                    $"All person conditions must have localized titles. Unknown person effect: {personCondition}.");
                return(string.Empty);
            }
        }
Пример #4
0
 public void Remove(IPersonCondition condition)
 {
     _items.Remove(condition);
     condition.Changed -= Сondition_Changed;
     DoRemoved(condition);
 }
Пример #5
0
        private void DoRemoved(IPersonCondition effect)
        {
            var args = new EffectEventArgs(effect);

            Removed?.Invoke(this, args);
        }
Пример #6
0
 private static bool IsDeaseSymptom(IPersonCondition x)
 {
     return(x is DiseaseSymptomCondition);
 }
Пример #7
0
 public EffectEventArgs(IPersonCondition effect)
 {
     Effect = effect;
 }