コード例 #1
0
        public async Task <FileInfo> Handle(PresetFileRequest request, CancellationToken cancellationToken)
        {
            var preset = new WingmanPreset()
            {
                Mods          = request.Mods,
                ModParameters = request.TemplateInputs,
                Version       = request.Version ?? 1,
                EngineVersion = _engineInfo.GetEngineVersion()
            };
            var tempFile = Path.GetTempFileName();
            var opts     = new JsonSerializerOptions(_parser.Options)
            {
                Encoder          = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
                IgnoreNullValues = true
            };
            var json = JsonSerializer.Serialize(preset, opts);
            await File.WriteAllTextAsync(tempFile, json, Encoding.ASCII, cancellationToken);

            var name = request.PresetName ?? $"preset-{System.DateTime.UtcNow.Ticks}";

            var finalTarget = Path.Combine(Path.GetTempPath(), $"{Path.ChangeExtension(name, ".dtp")}");
            var fi          = new FileInfo(finalTarget);

            File.Move(tempFile, fi.FullName);
            return(fi);
        }
コード例 #2
0
        public static bool IsSupportedBy(this WingmanPreset preset, IEngineInfoProvider engineInfo)
        {
            var presetRequested = preset.EngineVersion;
            var engineVersion   = engineInfo.GetEngineVersion();

            if (!string.IsNullOrWhiteSpace(presetRequested) && !string.IsNullOrWhiteSpace(engineVersion))
            {
                if (Version.TryParse(engineVersion, true, out var engineVersionInfo) &&
                    Version.TryParse(presetRequested, true, out var presetVersionInfo))
                {
                    var supported = engineVersionInfo == Version.Parse("0.0.0") || engineVersionInfo >= presetVersionInfo;
                    return(supported);
                }
                return(false);
            }

            return(true);
        }