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])); } }
public void Add(IPersonCondition condition) { if (condition is null) { throw new ArgumentNullException(nameof(condition)); } _items.Add(condition); condition.Changed += Сondition_Changed; DoAdd(condition); }
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); } }
public void Remove(IPersonCondition condition) { _items.Remove(condition); condition.Changed -= Сondition_Changed; DoRemoved(condition); }
private void DoRemoved(IPersonCondition effect) { var args = new EffectEventArgs(effect); Removed?.Invoke(this, args); }
private static bool IsDeaseSymptom(IPersonCondition x) { return(x is DiseaseSymptomCondition); }
public EffectEventArgs(IPersonCondition effect) { Effect = effect; }