示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#5
0
        public static void DoDeleteModListFloatMenu()
        {
            var options = ModLists.Select(l => new FloatMenuOption(l.Name, () => TryDelete(l))).ToList();

            Find.WindowStack.Add(new FloatMenu(options));
        }