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)); }
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)); }
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)); }
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)); }
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)); }
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))); }
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)); }