public HvacManager(ISystemClock clock, ISystemIO systemIO, IEnumerable <IHvacAlgorithm> validModes) { _Clock = clock; _IO = systemIO; ValidModes = validModes.ToList(); _CurrentHvacAlgorithm = ValidModes.First(x => x.GetType() == typeof(NoHeatCool)); _Clock.TimeTick += Clock_TimeTick; }
public void LoadData(List<string> data, bool isHeroSkill) { for (int i = 1; i < data.Count; i++) { switch (data[i]) { case ".id": Id = data[++i]; break; case ".level": Level = int.Parse(data[++i]); break; case ".type": Type = data[++i]; break; case ".atk": Accuracy = float.Parse(data[++i]) / 100; break; case ".dmg": if(isHeroSkill) DamageMod = float.Parse(data[++i]) / 100; else { DamageMin = float.Parse(data[++i]); DamageMax = float.Parse(data[++i]); } break; case ".crit": CritMod = float.Parse(data[++i]) / 100; break; case ".launch": LaunchRanks = new FormationSet(data[++i]); break; case ".target": if (++i < data.Count && data[i--][0] != '.') TargetRanks = new FormationSet(data[++i]); else TargetRanks = new FormationSet(""); break; case ".is_crit_valid": IsCritValid = bool.Parse(data[++i].ToLower()); break; case ".self_target_valid": IsSelfValid = bool.Parse(data[++i].ToLower()); break; case ".extra_targets_count": ExtraTargetsCount = int.Parse(data[++i]); break; case ".extra_targets_chance": ExtraTargetsChance = float.Parse(data[++i]); break; case ".is_user_selected_targets": IsUserSelectedTarget = bool.Parse(data[++i].ToLower()); break; case ".can_miss": CanMiss = bool.Parse(data[++i].ToLower()); break; case ".is_continue_turn": IsContinueTurn = bool.Parse(data[++i].ToLower()); break; case ".per_turn_limit": LimitPerTurn = int.Parse(data[++i]); break; case ".per_battle_limit": LimitPerBattle = int.Parse(data[++i]); break; case ".valid_modes": while (++i < data.Count && data[i--][0] != '.') { if (data[++i].Length < 2) continue; ValidModes.Add(data[i]); } break; case ".human_effects": var humanEffects = new List<Effect>(); ModeEffects.Add("human", humanEffects); while (++i < data.Count && data[i--][0] != '.') { if (data[++i].Length < 2) continue; if (DarkestDungeonManager.Data.Effects.ContainsKey(data[i])) humanEffects.Add(DarkestDungeonManager.Data.Effects[data[i]]); else Debug.LogError("Missing effect " + data[i] + " in skill " + Id); } break; case ".beast_effects": var beastEffects = new List<Effect>(); ModeEffects.Add("beast", beastEffects); while (++i < data.Count && data[i--][0] != '.') { if (data[++i].Length < 2) continue; if (DarkestDungeonManager.Data.Effects.ContainsKey(data[i])) beastEffects.Add(DarkestDungeonManager.Data.Effects[data[i]]); else Debug.LogError("Missing effect " + data[i] + " in skill " + Id); } break; case ".effect": while (++i < data.Count && data[i--][0] != '.') { if (data[++i].Length < 2) continue; if(DarkestDungeonManager.Data.Effects.ContainsKey(data[i])) Effects.Add(DarkestDungeonManager.Data.Effects[data[i]]); else Debug.LogError("Missing effect " + data[i] + " in skill " + Id); } break; case ".generation_guaranteed": IsGenerationGuaranteed = bool.Parse(data[++i].ToLower()); break; case ".is_knowledgeable": IsKnowledgeable = bool.Parse(data[++i].ToLower()); break; case ".heal": Heal = new HealComponent(int.Parse(data[++i]), int.Parse(data[++i])); break; case ".move": Move = new MoveComponent(int.Parse(data[++i]), int.Parse(data[++i])); break; case "combat_skill:": break; default: Debug.LogError("Unexpected token in combat skill: " + data[i]); break; } } if (Accuracy == 0 || TargetRanks.IsSelfFormation || TargetRanks.IsSelfTarget) { if (Heal == null) Category = SkillCategory.Support; else Category = SkillCategory.Heal; } }