public static bool TryCreate(ModList list, bool force = false) { var path = FilePath(list); if (File.Exists(path) && !force) { Log.Error("File exists: " + path); return(false); } try { Scribe.saver.InitSaving(path, RootElement); list.ExposeData(); Scribe.saver.FinalizeSaving(); Messages.Message(I18n.ModListCreated(list.Name), MessageTypeDefOf.TaskCompletion, false); ModLists.Add(list); return(true); } catch (Exception e) { Log.Error(e.Message); return(false); } }
public static void DoAddToModListFloatMenu(ModButton_Installed mod) { var cur = ListsFor(mod); var options = ModLists .Where(l => !cur.Contains(l)) .Select(l => new FloatMenuOption(I18n.AddToModListX(l.Name), () => l.Add(mod.Selected))) .ToList(); Utilities.FloatMenu(options); }
public static List <ModList> ListsFor(ModMetaData mod) { // garbage in, garbage out. if (mod == null) { return(null); } // get from cache List <ModList> lists; if (_modModListsCache.TryGetValue(mod, out lists)) { return(lists); } // add to cache lists = ModLists .Where(l => l._modIds.Contains(mod.Identifier)) .ToList(); _modModListsCache.Add(mod, lists); return(lists); }
public static List <ModList> ListsFor(ModMetaData mod) { // garbage in, garbage out. if (mod == null) { return(_emptyModList); } // get from cache List <ModList> lists; if (_modListsCache.TryGetValue(mod, out lists)) { return(lists); } // add to cache lists = ModLists .Where(l => l.Mods.Any(m => m.Id == mod.PackageId)) .ToList(); _modListsCache.Add(mod, lists); return(lists); }
public static void DoDeleteModListFloatMenu() { var options = ModLists.Select(l => new FloatMenuOption(l.Name, () => TryDelete(l))).ToList(); Find.WindowStack.Add(new FloatMenu(options)); }