コード例 #1
0
        public void AddOption(Mod mod, int groupIdx, ISubMod option, int priority = 0)
        {
            if (option is not SubMod o)
            {
                return;
            }

            if (mod._groups[groupIdx].Count > 63)
            {
                PluginLog.Error(
                    $"Could not add option {option.Name} to {mod._groups[ groupIdx ].Name} for mod {mod.Name}, "
                    + "since only up to 64 options are supported in one group.");
                return;
            }

            switch (mod._groups[groupIdx])
            {
            case SingleModGroup s:
                s.OptionData.Add(o);
                break;

            case MultiModGroup m:
                m.PrioritizedOptions.Add((o, priority));
                break;
            }

            ModOptionChanged.Invoke(ModOptionChangeType.OptionAdded, mod, groupIdx, mod._groups[groupIdx].Count - 1, -1);
        }
コード例 #2
0
ファイル: Mod.Files.SubMod.cs プロジェクト: xivdev/Penumbra
    // The default mod contains setting-independent sets of file replacements, file swaps and meta changes.
    // Every mod has an default mod, though it may be empty.
    private void SaveDefaultMod()
    {
        var defaultFile = DefaultFile;

        using var stream = File.Exists(defaultFile)
            ? File.Open(defaultFile, FileMode.Truncate)
            : File.Open(defaultFile, FileMode.CreateNew);

        using var w  = new StreamWriter(stream);
        using var j  = new JsonTextWriter(w);
        j.Formatting = Formatting.Indented;
        var serializer = new JsonSerializer
        {
            Formatting = Formatting.Indented,
        };

        ISubMod.WriteSubMod(j, serializer, _default, ModPath, 0);
    }