public override void LoadSave(object obj)
        {
            TempMechanicServiceSave save = obj as TempMechanicServiceSave;

            if (save != null)
            {
                TempMechanics.Clear();
                save.Validate();
                foreach (var kvp in save.tempMechanics)
                {
                    Dictionary <string, TempMechanicInfo> generatorMechanics = new Dictionary <string, TempMechanicInfo>();
                    foreach (var kvp2 in kvp.Value)
                    {
                        generatorMechanics.Add(kvp2.Key, new TempMechanicInfo(kvp2.Value));
                    }
                    TempMechanics.Add(kvp.Key, generatorMechanics);
                }
                SpeedMults.Clear();
                SpeedMults.CopyFrom(save.speedMults);
                IsLoaded = true;
            }
            else
            {
                LoadDefaults();
            }
        }
 private int GetCountOfActiveTempMechanics(int generatorId)
 {
     if (TempMechanics.ContainsKey(generatorId))
     {
         return(TempMechanics[generatorId].Where(kvp => !kvp.Value.IsCompleted).Count());
     }
     return(0);
 }
 public Dictionary <string, TempMechanicInfo> GetMechanics(int generatorId)
 {
     if (!TempMechanics.ContainsKey(generatorId))
     {
         TempMechanics.Add(generatorId, new Dictionary <string, TempMechanicInfo>());
     }
     return(TempMechanics[generatorId]);
 }
 private void AddTempMechanic(TempMechanicInfo mechanic)
 {
     if (TempMechanics.ContainsKey(mechanic.GeneratorId))
     {
         TempMechanics[mechanic.GeneratorId].Add(mechanic.Id, mechanic);
     }
     else
     {
         Dictionary <string, TempMechanicInfo> generatorMechanics =
             new Dictionary <string, TempMechanicInfo> {
             [mechanic.Id] = mechanic
         };
         TempMechanics.Add(mechanic.GeneratorId, generatorMechanics);
     }
     mechanic.StartMechanic();
     GameEvents.OnTempMechanicAdded(mechanic);
     UDBG.Log($"mechanic started with interval => {mechanic.Interval}");
 }
 public override void LoadDefaults()
 {
     TempMechanics.Clear();
     SpeedMults.Clear();
     IsLoaded = true;
 }