public void SetModStatus(ModDefinition definition, ModStatusType status) { lock (_cacheLock) { var def = Mods.FirstOrDefault(x => x.ID == definition.ID); if (def != null) { switch (status) { case ModStatusType.Installed: if (_modConfig.InstalledModIDs.Contains(definition.ID)) { Log.LogErr($"ModStatusOp was supposed to install mod ID {definition.ID} but it is already listed as installed."); } else { _modConfig.InstalledModIDs.Add(definition.ID); } break; case ModStatusType.NotInstalled: if (!_modConfig.InstalledModIDs.Contains(definition.ID)) { Log.LogErr($"ModStatusOp was supposed to uninstall mod ID {definition.ID} but it doesn't appear to be installed."); } else { _modConfig.InstalledModIDs.Remove(definition.ID); } break; } def.Status = status; definition.Status = status; } else { Log.LogErr($"Mod ID was not found when trying to set its status to {status}!"); } } }
public ModStatusOp(ModDefinition definition, ModStatusType status) { TargetModStatus = status; Definition = definition; }