public WingmanModRecord(WingmanMod mod)
 {
     Id      = mod.Id;
     ModInfo = mod.ModInfo;
     ModInfo.StepsEnabled = null;
     Metadata             = mod.Metadata;
     Parameters           = mod.Parameters;
 }
Example #2
0
        private Dictionary <string, List <PatchSet> > RenderFilePatchTemplates(PatchRequest request, WingmanMod mod, Dictionary <string, string> modelVars)
        {
            var dict = mod.FilePatches.ToDictionary(k => k.Key, kvp =>
            {
                var finalPatches = kvp.Value.Where(psList =>
                {
                    // REMEMBER: this is to keep the step, so have to return false to skip it
                    if (mod.ModInfo.StepsEnabled.ContainsKey(psList.Name) &&
                        _parser.TryParse(mod.ModInfo.StepsEnabled[psList.Name], out var skipTemplate))
                    {
                        var rendered = skipTemplate.Render(GetInputContext(request, modelVars));
                        var result   = !bool.TryParse(rendered, out var skip) || skip;
                        // var result = bool.TryParse(rendered, out var skip) || skip;
                        // do NOT invert result: result *is* inverted
                        return(result);
                    }

                    return(true);
                }).Select(psList =>
                {
                    psList.Patches = psList.Patches.Select(p =>
                    {
                        if (_parser.TryParse(p.Substitution, out var subTemplate))
                        {
                            p.Substitution = subTemplate.Render(GetInputContext(request, modelVars));
                        }

                        if (_parser.TryParse(p.Template, out var template))
                        {
                            p.Template = template.Render(GetInputContext(request, modelVars));
                        }

                        if (p.Window != null)
                        {
                            p.Window.After  = SafeRender(request, p.Window.After, modelVars);
                            p.Window.Before = SafeRender(request, p.Window.Before, modelVars);
                        }

                        return(p);
                    }).ToList();
                    return(psList);
                }).ToList();
                return(finalPatches);
            });