private void CalcSurvivalStats() { // Расчёт бонусов вынести в отдельный сервис, который покрыть модульными тестами // На вход принимает SurvivalData. SurvivalData дожен содержать метод увеличение диапазона характеристики. Survival.ResetStats(); for (var i = 0; i < EquipmentCarrier.Count(); i++) { var equipment = EquipmentCarrier[i]; if (equipment == null) { return; } var rules = equipment.Scheme.Equip.Rules; if (rules == null) { return; } foreach (var rule in rules) { switch (rule.Type) { case EquipCommonRuleType.Health: BonusToHealth(rule.Level, rule.Direction); break; case EquipCommonRuleType.HealthIfNoBody: var requirementsCompleted = true; for (var slotIndex = 0; slotIndex < EquipmentCarrier.Count(); slotIndex++) { if ((EquipmentCarrier.Slots[slotIndex].Types & EquipmentSlotTypes.Body) > 0) { if (EquipmentCarrier[slotIndex] != null) { requirementsCompleted = false; break; } } } if (requirementsCompleted) { BonusToHealth(rule.Level, rule.Direction); } break; } } } }
private void CalcSurvivalStats() { // Расчёт бонусов вынести в отдельный сервис, который покрыть модульными тестами // На вход принимает SurvivalData. SurvivalData дожен содержать метод увеличение диапазона характеристики. Survival.ResetStats(); var bonusList = new List <SurvivalStatBonus>(); FillSurvivalBonusesFromEquipments(ref bonusList); FillSurvivalBonusesFromPerks(ref bonusList); ApplySurvivalBonuses(bonusList); }