public override RdProjectTemplateContent CreateContent(DotNetProjectTemplateExpander expander,
                                                               IDotNetTemplateContentFactory factory,
                                                               int index, IDictionary <string, string> context)
        {
            var content   = factory.CreateNextParameters(new[] { expander }, index + 1, context);
            var parameter = expander.TemplateInfo.GetParameter(Name);

            if (parameter == null)
            {
                return(content);
            }

            return(new RdProjectTemplateTextParameter(Name, "ModVersion",
                                                      "1.0.0", "Version of mod", 0, content));
        }
示例#2
0
        public override RdProjectTemplateContent CreateContent(DotNetProjectTemplateExpander expander,
                                                               IDotNetTemplateContentFactory factory,
                                                               int index, IDictionary <string, string> context)
        {
            var content   = factory.CreateNextParameters(new[] { expander }, index + 1, context);
            var parameter = expander.TemplateInfo.GetParameter(Name);

            if (parameter == null)
            {
                return(content);
            }


            var possiblePaths = BeatSaberPathUtils.GetInstallDir(); // Shell.Instance.GetComponent<ProjectProtocolHandler>().BsmtRiderModel.GetUserSettings.Sync(null).ConfiguredBeatSaberLocations;
            var options       = new List <RdProjectTemplateGroupOption>();

            foreach (var path in possiblePaths)
            {
                var optionContext = new Dictionary <string, string>(context)
                {
                    { Name, path }
                };
                var content1 = factory.CreateNextParameters(new[] { expander }, index + 1, optionContext);
                options.Add(new RdProjectTemplateGroupOption(path, path, null, content1));
            }

            var customPathBox = new RdProjectTemplateTextParameter(Name, "Custom path", null, Tooltip,
                                                                   RdTextParameterStyle.FileChooser,
                                                                   content);

            options.Add(new RdProjectTemplateGroupOption(
                            "Custom",
                            !possiblePaths.IsNullOrEmpty() ? "Custom" : "Custom (Beat Saber installation was not found)",
                            null,
                            customPathBox));

            return(new RdProjectTemplateGroupParameter(Name, "BeatSaberPath",
                                                       possiblePaths.Any() ? possiblePaths.Last() : string.Empty, null, options));
        }
示例#3
0
        public override RdProjectTemplateContent CreateContent(DotNetProjectTemplateExpander expander, IDotNetTemplateContentFactory factory,
                                                               int index, IDictionary <string, string> context)
        {
            var content   = factory.CreateNextParameters(new[] { expander }, index + 1, context);
            var parameter = expander.TemplateInfo.GetParameter(Name);

            if (parameter == null)
            {
                return(content);
            }

            var defaultPath = "";

            switch (PlatformUtil.RuntimePlatform)
            {
            case PlatformUtil.Platform.MacOsX:
                defaultPath = @"/Applications/Unity/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll";
                if (File.Exists(defaultPath))
                {
                    break;
                }
                defaultPath = @"/Applications/Unity/Unity.app/Contents/Managed/UnityEngine.dll";
                break;

            case PlatformUtil.Platform.Linux:
                defaultPath = @"/opt/Unity/Editor/Data/Managed/UnityEngine.dll";
                if (File.Exists(defaultPath))
                {
                    break;
                }

                var home = Environment.GetEnvironmentVariable("HOME");
                if (string.IsNullOrEmpty(home))
                {
                    break;
                }

                var path = new DirectoryInfo(home).GetDirectories("Unity*").Select(unityDir => Path.Combine(unityDir.FullName, @"Editor/Data/Managed/UnityEngine.dll")).FirstOrDefault(File.Exists);
                if (path == null)
                {
                    break;
                }
                defaultPath = path;
                break;

            default:
                defaultPath = @"C:\Program Files\Unity\Editor\Data\Managed\UnityEngine.dll";
                if (File.Exists(defaultPath))
                {
                    break;
                }

                var lnks    = FileSystemPath.Parse(@"C:\ProgramData\Microsoft\Windows\Start Menu\Programs").GetChildDirectories("Unity*").SelectMany(a => a.GetChildFiles("Unity.lnk")).ToArray();
                var dllPath = lnks.Select(a => ShellLinkHelper.ResolveLinkTarget(a).Directory.Combine(@"Data\Managed\UnityEngine.dll")).Where(b => b.ExistsFile).OrderBy(c => new FileInfo(c.FullPath).CreationTime).LastOrDefault();
                if (dllPath != null)
                {
                    defaultPath = dllPath.FullPath;
                }

                break;
            }

            return(new RdProjectTemplateTextParameter(Name, defaultPath, Tooltip, RdTextParameterStyle.FileChooser, content));
        }
        public override RdProjectTemplateContent CreateContent(DotNetProjectTemplateExpander expander, IDotNetTemplateContentFactory factory,
                                                               int index, IDictionary <string, string> context)
        {
            var content   = factory.CreateNextParameters(new[] { expander }, index + 1, context);
            var parameter = expander.TemplateInfo.GetParameter(Name);

            if (parameter == null)
            {
                return(content);
            }

            var defaultPath  = "";
            var possiblePath = myUnityMonoPathProvider.GetPossibleMonoPaths().Select(a => a.Directory.Combine("Managed/UnityEngine.dll")).FirstOrDefault(b => b.ExistsFile);

            if (possiblePath != null)
            {
                defaultPath = possiblePath.FullPath;
            }
            return(new RdProjectTemplateTextParameter(Name, defaultPath, Tooltip, RdTextParameterStyle.FileChooser, content));
        }
示例#5
0
        public override RdProjectTemplateContent CreateContent(DotNetProjectTemplateExpander expander, IDotNetTemplateContentFactory factory,
                                                               int index, IDictionary <string, string> context)
        {
            var content   = factory.CreateNextParameters(new[] { expander }, index + 1, context);
            var parameter = expander.TemplateInfo.GetParameter(Name);

            if (parameter == null)
            {
                return(content);
            }

            var possiblePaths = myUnityMonoPathProvider.GetPossibleMonoPaths().Select(a => a.Directory.Combine("Managed/UnityEngine.dll")).Where(b => b.ExistsFile).ToArray();

            if (possiblePaths.IsEmpty())
            {
                return(new RdProjectTemplateInvalidParameter(Name, Name, "Unity installation is not found", null, null, null, content)); //TODO what is 'Message'?
            }

            var options = new List <RdProjectTemplateGroupOption>();

            foreach (var path in possiblePaths)
            {
                var optionContext = new Dictionary <string, string>(context)
                {
                    { Name, path.FullPath }
                };
                var content1 = factory.CreateNextParameters(new[] { expander }, index + 1, optionContext);
                options.Add(new RdProjectTemplateGroupOption(path.FullPath, path.FullPath, content1));
            }

            options.Add(new RdProjectTemplateGroupOption("Custom", "Custom",
                                                         new RdProjectTemplateTextParameter(Name, "Path", null, Tooltip, RdTextParameterStyle.FileChooser, content)));

            return(new RdProjectTemplateGroupParameter(Name, "UnityEngine", possiblePaths.Last().FullPath, Tooltip, options));
        }
示例#6
0
        public override RdProjectTemplateContent CreateContent(DotNetProjectTemplateExpander expander, IDotNetTemplateContentFactory factory,
                                                               int index, IDictionary <string, string> context)
        {
            var parameter = expander.TemplateInfo.GetParameter(Name);

            if (parameter == null)
            {
                return(factory.CreateNextParameters(new[] { expander }, index + 1, context));
            }

            var boolOptions = new Dictionary <string, string>
            {
                { "true", "Yes" },
                { "false", "No" }
            };
            var uiOptions = boolOptions.Select(o =>
            {
                var content = factory.CreateNextParameters(new[] { expander }, index + 1, context);
                return(new RdProjectTemplateGroupOption(o.Key, o.Value, null, content));
            }).ToList();

            return(new RdProjectTemplateGroupParameter(
                       Name,
                       PresentableName,
                       parameter.DefaultValue,
                       Tooltip,
                       uiOptions));
        }
示例#7
0
        public override RdProjectTemplateContent CreateContent(DotNetProjectTemplateExpander expander, IDotNetTemplateContentFactory factory,
                                                               int index, IDictionary <string, string> context)
        {
            var parameter = expander.TemplateInfo.GetParameter(Name);

            if (parameter == null)
            {
                return(factory.CreateNextParameters(new[] { expander }, index + 1, context));
            }

            // TODO: This is a file-picker. Free-Text seems to be impossible currently.
            return(new RdProjectTemplateTextParameter(
                       Name,
                       PresentableName,
                       parameter.DefaultValue,
                       Tooltip,
                       RdTextParameterStyle.FileChooser,
                       factory.CreateNextParameters(new[] { expander }, index + 1, context)));
        }
示例#8
0
        public override RdProjectTemplateContent CreateContent(DotNetProjectTemplateExpander expander, IDotNetTemplateContentFactory factory, int index, IDictionary <string, string> context)
        {
            var info             = expander.TemplateInfo;
            var versionParameter = info.GetParameter(Name);

            if (versionParameter == null)
            {
                return(factory.CreateNextParameters(new[] { expander }, index + 1, context));
            }

            var availableVersions = myVersionManager.GetDevExpressVersions();

            if (availableVersions.IsEmpty())
            {
                var content = factory.CreateNextParameters(new[] { expander }, index + 1, context);
                return(new RdProjectTemplateInvalidParameter(Name, PresentableName,
                                                             "Installed DevExpress is not found", null, DevExpressWinFormsLink, "Install DevExpress", null, content));
            }

            var options = new List <RdProjectTemplateGroupOption>();

            foreach (var version in availableVersions)
            {
                var id            = version.ToString();
                var optionContext = new Dictionary <string, string>(context)
                {
                    { Name, id }
                };
                var content = factory.CreateNextParameters(new[] { expander }, index + 1, optionContext);
                options.Add(new RdProjectTemplateGroupOption(id, id, null, content));
            }

            return(new RdProjectTemplateGroupParameter(Name, PresentableName,
                                                       options.First().Option, Tooltip, options));
        }