From db114e294a92de690ef0de4572e45609fcdab87e Mon Sep 17 00:00:00 2001 From: dcljr Date: Fri, 11 Jan 2019 18:18:33 -0800 Subject: [PATCH] initial commit --- .gitignore | 338 +++++++ BeatSaberCampaignCreator.sln | 25 + BeatSaberCampaignCreator/App.config | 6 + .../BeatSaberCampaignCreator.csproj | 94 ++ BeatSaberCampaignCreator/Form1.Designer.cs | 865 ++++++++++++++++++ BeatSaberCampaignCreator/Form1.cs | 331 +++++++ BeatSaberCampaignCreator/Form1.resx | 142 +++ BeatSaberCampaignCreator/Program.cs | 22 + .../Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 71 ++ .../Properties/Resources.resx | 117 +++ .../Properties/Settings.Designer.cs | 30 + .../Properties/Settings.settings | 7 + 13 files changed, 2084 insertions(+) create mode 100644 .gitignore create mode 100644 BeatSaberCampaignCreator.sln create mode 100644 BeatSaberCampaignCreator/App.config create mode 100644 BeatSaberCampaignCreator/BeatSaberCampaignCreator.csproj create mode 100644 BeatSaberCampaignCreator/Form1.Designer.cs create mode 100644 BeatSaberCampaignCreator/Form1.cs create mode 100644 BeatSaberCampaignCreator/Form1.resx create mode 100644 BeatSaberCampaignCreator/Program.cs create mode 100644 BeatSaberCampaignCreator/Properties/AssemblyInfo.cs create mode 100644 BeatSaberCampaignCreator/Properties/Resources.Designer.cs create mode 100644 BeatSaberCampaignCreator/Properties/Resources.resx create mode 100644 BeatSaberCampaignCreator/Properties/Settings.Designer.cs create mode 100644 BeatSaberCampaignCreator/Properties/Settings.settings diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6a1d426 --- /dev/null +++ b/.gitignore @@ -0,0 +1,338 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ +# ASP.NET Core default setup: bower directory is configured as wwwroot/lib/ and bower restore is true +**/wwwroot/lib/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ \ No newline at end of file diff --git a/BeatSaberCampaignCreator.sln b/BeatSaberCampaignCreator.sln new file mode 100644 index 0000000..75aa189 --- /dev/null +++ b/BeatSaberCampaignCreator.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28010.2003 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BeatSaberCampaignCreator", "BeatSaberCampaignCreator\BeatSaberCampaignCreator.csproj", "{698B09A1-EF72-4619-B367-DC9C37296826}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {698B09A1-EF72-4619-B367-DC9C37296826}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {698B09A1-EF72-4619-B367-DC9C37296826}.Debug|Any CPU.Build.0 = Debug|Any CPU + {698B09A1-EF72-4619-B367-DC9C37296826}.Release|Any CPU.ActiveCfg = Release|Any CPU + {698B09A1-EF72-4619-B367-DC9C37296826}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {1809B206-4609-4792-BBB5-0C6FF513A138} + EndGlobalSection +EndGlobal diff --git a/BeatSaberCampaignCreator/App.config b/BeatSaberCampaignCreator/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/BeatSaberCampaignCreator/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/BeatSaberCampaignCreator/BeatSaberCampaignCreator.csproj b/BeatSaberCampaignCreator/BeatSaberCampaignCreator.csproj new file mode 100644 index 0000000..e256f49 --- /dev/null +++ b/BeatSaberCampaignCreator/BeatSaberCampaignCreator.csproj @@ -0,0 +1,94 @@ + + + + + Debug + AnyCPU + {698B09A1-EF72-4619-B367-DC9C37296826} + WinExe + BeatSaberCampaignCreator + BeatSaberCampaignCreator + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + E:\Program Files (x86)\Steam\steamapps\common\Beat Saber\Beat Saber_Data\Managed\Assembly-CSharp.dll + + + E:\Program Files (x86)\Steam\steamapps\common\Beat Saber\Plugins\BeatSaberChallenges.dll + + + E:\Program Files (x86)\Steam\steamapps\common\Beat Saber\Beat Saber_Data\Managed\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file diff --git a/BeatSaberCampaignCreator/Form1.Designer.cs b/BeatSaberCampaignCreator/Form1.Designer.cs new file mode 100644 index 0000000..72d9c85 --- /dev/null +++ b/BeatSaberCampaignCreator/Form1.Designer.cs @@ -0,0 +1,865 @@ +namespace BeatSaberCampaignCreator +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.toolStripDropDownButton1 = new System.Windows.Forms.ToolStripDropDownButton(); + this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.allUnlocked = new System.Windows.Forms.CheckBox(); + this.label3 = new System.Windows.Forms.Label(); + this.campaignDesc = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.campaignName = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.tabControl2 = new System.Windows.Forms.TabControl(); + this.tabPage3 = new System.Windows.Forms.TabPage(); + this.label12 = new System.Windows.Forms.Label(); + this.speedMul = new System.Windows.Forms.NumericUpDown(); + this.label11 = new System.Windows.Forms.Label(); + this.enabledObstacles = new System.Windows.Forms.ComboBox(); + this.label10 = new System.Windows.Forms.Label(); + this.batteryEnergy = new System.Windows.Forms.CheckBox(); + this.energyType = new System.Windows.Forms.ComboBox(); + this.noFail = new System.Windows.Forms.CheckBox(); + this.instaFail = new System.Windows.Forms.CheckBox(); + this.failOnSaberClash = new System.Windows.Forms.CheckBox(); + this.noBombs = new System.Windows.Forms.CheckBox(); + this.fastNotes = new System.Windows.Forms.CheckBox(); + this.strictAngles = new System.Windows.Forms.CheckBox(); + this.disappearingArrows = new System.Windows.Forms.CheckBox(); + this.tabPage4 = new System.Windows.Forms.TabPage(); + this.tabPage5 = new System.Windows.Forms.TabPage(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.difficulty = new System.Windows.Forms.ComboBox(); + this.customDownloadURL = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.songID = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.challengeDesc = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.challengeName = new System.Windows.Forms.TextBox(); + this.button2 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.listBox1 = new System.Windows.Forms.ListBox(); + this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); + this.remReq = new System.Windows.Forms.Button(); + this.addReq = new System.Windows.Forms.Button(); + this.reqList = new System.Windows.Forms.ListBox(); + this.label13 = new System.Windows.Forms.Label(); + this.requirementType = new System.Windows.Forms.ComboBox(); + this.label14 = new System.Windows.Forms.Label(); + this.requirementValue = new System.Windows.Forms.NumericUpDown(); + this.requirementIsMax = new System.Windows.Forms.CheckBox(); + this.externalModsList = new System.Windows.Forms.ListBox(); + this.remExtMod = new System.Windows.Forms.Button(); + this.addExtMod = new System.Windows.Forms.Button(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label15 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.toolStrip1.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.tabControl2.SuspendLayout(); + this.tabPage3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.speedMul)).BeginInit(); + this.tabPage4.SuspendLayout(); + this.tabPage5.SuspendLayout(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.requirementValue)).BeginInit(); + this.SuspendLayout(); + // + // toolStrip1 + // + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripDropDownButton1}); + this.toolStrip1.Location = new System.Drawing.Point(0, 0); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(618, 25); + this.toolStrip1.TabIndex = 0; + this.toolStrip1.Text = "toolStrip1"; + // + // toolStripDropDownButton1 + // + this.toolStripDropDownButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.toolStripDropDownButton1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.openToolStripMenuItem, + this.newToolStripMenuItem, + this.saveToolStripMenuItem}); + this.toolStripDropDownButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripDropDownButton1.Image"))); + this.toolStripDropDownButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripDropDownButton1.Name = "toolStripDropDownButton1"; + this.toolStripDropDownButton1.Size = new System.Drawing.Size(38, 22); + this.toolStripDropDownButton1.Text = "File"; + // + // openToolStripMenuItem + // + this.openToolStripMenuItem.Name = "openToolStripMenuItem"; + this.openToolStripMenuItem.Size = new System.Drawing.Size(103, 22); + this.openToolStripMenuItem.Text = "Open"; + this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); + // + // newToolStripMenuItem + // + this.newToolStripMenuItem.Name = "newToolStripMenuItem"; + this.newToolStripMenuItem.Size = new System.Drawing.Size(103, 22); + this.newToolStripMenuItem.Text = "New"; + this.newToolStripMenuItem.Click += new System.EventHandler(this.newToolStripMenuItem_Click); + // + // saveToolStripMenuItem + // + this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; + this.saveToolStripMenuItem.Size = new System.Drawing.Size(103, 22); + this.saveToolStripMenuItem.Text = "Save"; + this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Enabled = false; + this.tabControl1.Location = new System.Drawing.Point(12, 37); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(577, 538); + this.tabControl1.TabIndex = 1; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.allUnlocked); + this.tabPage1.Controls.Add(this.label3); + this.tabPage1.Controls.Add(this.campaignDesc); + this.tabPage1.Controls.Add(this.label2); + this.tabPage1.Controls.Add(this.campaignName); + this.tabPage1.Controls.Add(this.label1); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(569, 512); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Campaign Info"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // allUnlocked + // + this.allUnlocked.AutoSize = true; + this.allUnlocked.Location = new System.Drawing.Point(105, 117); + this.allUnlocked.Name = "allUnlocked"; + this.allUnlocked.Size = new System.Drawing.Size(409, 17); + this.allUnlocked.TabIndex = 2; + this.allUnlocked.Text = "allUnclocked (useful for testing but you should disable before releasing camapgin" + + ")"; + this.allUnlocked.UseVisualStyleBackColor = true; + this.allUnlocked.CheckedChanged += new System.EventHandler(this.CampaignDataValueChange); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(102, 94); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(110, 13); + this.label3.TabIndex = 4; + this.label3.Text = "Campaign Description"; + // + // campaignDesc + // + this.campaignDesc.Location = new System.Drawing.Point(218, 91); + this.campaignDesc.Name = "campaignDesc"; + this.campaignDesc.Size = new System.Drawing.Size(218, 20); + this.campaignDesc.TabIndex = 3; + this.campaignDesc.TextChanged += new System.EventHandler(this.CampaignDataValueChange); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(127, 68); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(85, 13); + this.label2.TabIndex = 2; + this.label2.Text = "Campaign Name"; + // + // campaignName + // + this.campaignName.Location = new System.Drawing.Point(218, 65); + this.campaignName.Name = "campaignName"; + this.campaignName.Size = new System.Drawing.Size(218, 20); + this.campaignName.TabIndex = 1; + this.campaignName.TextChanged += new System.EventHandler(this.CampaignDataValueChange); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(127, 17); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(287, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Don\'t forget to put a nice cover.png in your campaign folder"; + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.tabControl2); + this.tabPage2.Controls.Add(this.groupBox1); + this.tabPage2.Controls.Add(this.label5); + this.tabPage2.Controls.Add(this.challengeDesc); + this.tabPage2.Controls.Add(this.label4); + this.tabPage2.Controls.Add(this.challengeName); + this.tabPage2.Controls.Add(this.button2); + this.tabPage2.Controls.Add(this.button1); + this.tabPage2.Controls.Add(this.listBox1); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(569, 512); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Challenges"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // tabControl2 + // + this.tabControl2.Controls.Add(this.tabPage3); + this.tabControl2.Controls.Add(this.tabPage4); + this.tabControl2.Controls.Add(this.tabPage5); + this.tabControl2.Location = new System.Drawing.Point(92, 215); + this.tabControl2.Name = "tabControl2"; + this.tabControl2.SelectedIndex = 0; + this.tabControl2.Size = new System.Drawing.Size(465, 282); + this.tabControl2.TabIndex = 12; + // + // tabPage3 + // + this.tabPage3.Controls.Add(this.label12); + this.tabPage3.Controls.Add(this.speedMul); + this.tabPage3.Controls.Add(this.label11); + this.tabPage3.Controls.Add(this.enabledObstacles); + this.tabPage3.Controls.Add(this.label10); + this.tabPage3.Controls.Add(this.batteryEnergy); + this.tabPage3.Controls.Add(this.energyType); + this.tabPage3.Controls.Add(this.noFail); + this.tabPage3.Controls.Add(this.instaFail); + this.tabPage3.Controls.Add(this.failOnSaberClash); + this.tabPage3.Controls.Add(this.noBombs); + this.tabPage3.Controls.Add(this.fastNotes); + this.tabPage3.Controls.Add(this.strictAngles); + this.tabPage3.Controls.Add(this.disappearingArrows); + this.tabPage3.Location = new System.Drawing.Point(4, 22); + this.tabPage3.Name = "tabPage3"; + this.tabPage3.Padding = new System.Windows.Forms.Padding(3); + this.tabPage3.Size = new System.Drawing.Size(457, 256); + this.tabPage3.TabIndex = 0; + this.tabPage3.Text = "Modifiers"; + this.tabPage3.UseVisualStyleBackColor = true; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(136, 62); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(82, 13); + this.label12.TabIndex = 19; + this.label12.Text = "Speed Multiplier"; + // + // speedMul + // + this.speedMul.DecimalPlaces = 2; + this.speedMul.Location = new System.Drawing.Point(226, 60); + this.speedMul.Name = "speedMul"; + this.speedMul.Size = new System.Drawing.Size(120, 20); + this.speedMul.TabIndex = 18; + this.speedMul.ValueChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(123, 36); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(96, 13); + this.label11.TabIndex = 17; + this.label11.Text = "Enabled Obstacles"; + // + // enabledObstacles + // + this.enabledObstacles.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.enabledObstacles.FormattingEnabled = true; + this.enabledObstacles.Items.AddRange(new object[] { + "All", + "Full Height Only", + "No Obstacles"}); + this.enabledObstacles.Location = new System.Drawing.Point(225, 33); + this.enabledObstacles.Name = "enabledObstacles"; + this.enabledObstacles.Size = new System.Drawing.Size(121, 21); + this.enabledObstacles.TabIndex = 16; + this.enabledObstacles.SelectedIndexChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(152, 9); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(67, 13); + this.label10.TabIndex = 15; + this.label10.Text = "Energy Type"; + // + // batteryEnergy + // + this.batteryEnergy.AutoSize = true; + this.batteryEnergy.Location = new System.Drawing.Point(6, 167); + this.batteryEnergy.Name = "batteryEnergy"; + this.batteryEnergy.Size = new System.Drawing.Size(95, 17); + this.batteryEnergy.TabIndex = 9; + this.batteryEnergy.Text = "Battery Energy"; + this.batteryEnergy.UseVisualStyleBackColor = true; + this.batteryEnergy.CheckedChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // energyType + // + this.energyType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.energyType.FormattingEnabled = true; + this.energyType.Items.AddRange(new object[] { + "Bar", + "Battery"}); + this.energyType.Location = new System.Drawing.Point(225, 6); + this.energyType.Name = "energyType"; + this.energyType.Size = new System.Drawing.Size(121, 21); + this.energyType.TabIndex = 14; + this.energyType.SelectedIndexChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // noFail + // + this.noFail.AutoSize = true; + this.noFail.Location = new System.Drawing.Point(6, 144); + this.noFail.Name = "noFail"; + this.noFail.Size = new System.Drawing.Size(59, 17); + this.noFail.TabIndex = 8; + this.noFail.Text = "No Fail"; + this.noFail.UseVisualStyleBackColor = true; + this.noFail.CheckedChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // instaFail + // + this.instaFail.AutoSize = true; + this.instaFail.Location = new System.Drawing.Point(6, 121); + this.instaFail.Name = "instaFail"; + this.instaFail.Size = new System.Drawing.Size(77, 17); + this.instaFail.TabIndex = 7; + this.instaFail.Text = "Instant Fail"; + this.instaFail.UseVisualStyleBackColor = true; + this.instaFail.CheckedChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // failOnSaberClash + // + this.failOnSaberClash.AutoSize = true; + this.failOnSaberClash.Location = new System.Drawing.Point(6, 98); + this.failOnSaberClash.Name = "failOnSaberClash"; + this.failOnSaberClash.Size = new System.Drawing.Size(119, 17); + this.failOnSaberClash.TabIndex = 6; + this.failOnSaberClash.Text = "Fail On Saber Clash"; + this.failOnSaberClash.UseVisualStyleBackColor = true; + this.failOnSaberClash.CheckedChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // noBombs + // + this.noBombs.AutoSize = true; + this.noBombs.Location = new System.Drawing.Point(6, 75); + this.noBombs.Name = "noBombs"; + this.noBombs.Size = new System.Drawing.Size(75, 17); + this.noBombs.TabIndex = 5; + this.noBombs.Text = "No Bombs"; + this.noBombs.UseVisualStyleBackColor = true; + this.noBombs.CheckedChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // fastNotes + // + this.fastNotes.AutoSize = true; + this.fastNotes.Location = new System.Drawing.Point(6, 52); + this.fastNotes.Name = "fastNotes"; + this.fastNotes.Size = new System.Drawing.Size(77, 17); + this.fastNotes.TabIndex = 4; + this.fastNotes.Text = "Fast Notes"; + this.fastNotes.UseVisualStyleBackColor = true; + this.fastNotes.CheckedChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // strictAngles + // + this.strictAngles.AutoSize = true; + this.strictAngles.Location = new System.Drawing.Point(6, 29); + this.strictAngles.Name = "strictAngles"; + this.strictAngles.Size = new System.Drawing.Size(85, 17); + this.strictAngles.TabIndex = 3; + this.strictAngles.Text = "Strict Angles"; + this.strictAngles.UseVisualStyleBackColor = true; + this.strictAngles.CheckedChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // disappearingArrows + // + this.disappearingArrows.AutoSize = true; + this.disappearingArrows.Location = new System.Drawing.Point(6, 6); + this.disappearingArrows.Name = "disappearingArrows"; + this.disappearingArrows.Size = new System.Drawing.Size(123, 17); + this.disappearingArrows.TabIndex = 2; + this.disappearingArrows.Text = "Disappearing Arrows"; + this.disappearingArrows.UseVisualStyleBackColor = true; + this.disappearingArrows.CheckedChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // tabPage4 + // + this.tabPage4.Controls.Add(this.label14); + this.tabPage4.Controls.Add(this.requirementValue); + this.tabPage4.Controls.Add(this.requirementIsMax); + this.tabPage4.Controls.Add(this.label13); + this.tabPage4.Controls.Add(this.remReq); + this.tabPage4.Controls.Add(this.requirementType); + this.tabPage4.Controls.Add(this.addReq); + this.tabPage4.Controls.Add(this.reqList); + this.tabPage4.Location = new System.Drawing.Point(4, 22); + this.tabPage4.Name = "tabPage4"; + this.tabPage4.Padding = new System.Windows.Forms.Padding(3); + this.tabPage4.Size = new System.Drawing.Size(457, 256); + this.tabPage4.TabIndex = 1; + this.tabPage4.Text = "Requirements"; + this.tabPage4.UseVisualStyleBackColor = true; + // + // tabPage5 + // + this.tabPage5.Controls.Add(this.label16); + this.tabPage5.Controls.Add(this.label15); + this.tabPage5.Controls.Add(this.textBox1); + this.tabPage5.Controls.Add(this.remExtMod); + this.tabPage5.Controls.Add(this.addExtMod); + this.tabPage5.Controls.Add(this.externalModsList); + this.tabPage5.Location = new System.Drawing.Point(4, 22); + this.tabPage5.Name = "tabPage5"; + this.tabPage5.Size = new System.Drawing.Size(457, 256); + this.tabPage5.TabIndex = 2; + this.tabPage5.Text = "External Modifiers"; + this.tabPage5.UseVisualStyleBackColor = true; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.label9); + this.groupBox1.Controls.Add(this.label8); + this.groupBox1.Controls.Add(this.difficulty); + this.groupBox1.Controls.Add(this.customDownloadURL); + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.label7); + this.groupBox1.Controls.Add(this.songID); + this.groupBox1.Location = new System.Drawing.Point(91, 77); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(472, 131); + this.groupBox1.TabIndex = 11; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Song Data"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(143, 16); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(323, 26); + this.label9.TabIndex = 13; + this.label9.Text = "If you don\'t use a custom URL the id is a beatsaver id and if you do\r\nsong id sho" + + "uld be the song name"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(92, 102); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(47, 13); + this.label8.TabIndex = 12; + this.label8.Text = "Difficulty"; + // + // difficulty + // + this.difficulty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.difficulty.FormattingEnabled = true; + this.difficulty.Items.AddRange(new object[] { + "Easy", + "Normal", + "Hard", + "Expert", + "ExpertPlus"}); + this.difficulty.Location = new System.Drawing.Point(144, 99); + this.difficulty.Name = "difficulty"; + this.difficulty.Size = new System.Drawing.Size(121, 21); + this.difficulty.TabIndex = 11; + this.difficulty.SelectedIndexChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // customDownloadURL + // + this.customDownloadURL.Location = new System.Drawing.Point(144, 73); + this.customDownloadURL.Name = "customDownloadURL"; + this.customDownloadURL.Size = new System.Drawing.Size(322, 20); + this.customDownloadURL.TabIndex = 9; + this.customDownloadURL.TextChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(92, 50); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(46, 13); + this.label6.TabIndex = 8; + this.label6.Text = "Song ID"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(20, 76); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(118, 13); + this.label7.TabIndex = 10; + this.label7.Text = "Custom Download URL"; + // + // songID + // + this.songID.Location = new System.Drawing.Point(144, 47); + this.songID.Name = "songID"; + this.songID.Size = new System.Drawing.Size(322, 20); + this.songID.TabIndex = 7; + this.songID.TextChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(99, 54); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(110, 13); + this.label5.TabIndex = 6; + this.label5.Text = "Challenge Description"; + // + // challengeDesc + // + this.challengeDesc.Location = new System.Drawing.Point(217, 51); + this.challengeDesc.Name = "challengeDesc"; + this.challengeDesc.Size = new System.Drawing.Size(346, 20); + this.challengeDesc.TabIndex = 5; + this.challengeDesc.TextChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(124, 28); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(85, 13); + this.label4.TabIndex = 4; + this.label4.Text = "Challenge Name"; + // + // challengeName + // + this.challengeName.Location = new System.Drawing.Point(217, 25); + this.challengeName.Name = "challengeName"; + this.challengeName.Size = new System.Drawing.Size(346, 20); + this.challengeName.TabIndex = 3; + this.challengeName.TextChanged += new System.EventHandler(this.ChallengeDataValueChange); + // + // button2 + // + this.button2.Location = new System.Drawing.Point(6, 3); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(29, 20); + this.button2.TabIndex = 2; + this.button2.Text = "-"; + this.button2.UseVisualStyleBackColor = true; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(56, 3); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(29, 20); + this.button1.TabIndex = 1; + this.button1.Text = "+"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // listBox1 + // + this.listBox1.DisplayMember = "1"; + this.listBox1.FormattingEnabled = true; + this.listBox1.Location = new System.Drawing.Point(6, 25); + this.listBox1.Name = "listBox1"; + this.listBox1.Size = new System.Drawing.Size(79, 472); + this.listBox1.TabIndex = 0; + this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged); + // + // folderBrowserDialog1 + // + this.folderBrowserDialog1.RootFolder = System.Environment.SpecialFolder.MyComputer; + // + // remReq + // + this.remReq.Location = new System.Drawing.Point(6, 6); + this.remReq.Name = "remReq"; + this.remReq.Size = new System.Drawing.Size(29, 20); + this.remReq.TabIndex = 5; + this.remReq.Text = "-"; + this.remReq.UseVisualStyleBackColor = true; + this.remReq.Click += new System.EventHandler(this.remReq_Click); + // + // addReq + // + this.addReq.Location = new System.Drawing.Point(56, 6); + this.addReq.Name = "addReq"; + this.addReq.Size = new System.Drawing.Size(29, 20); + this.addReq.TabIndex = 4; + this.addReq.Text = "+"; + this.addReq.UseVisualStyleBackColor = true; + this.addReq.Click += new System.EventHandler(this.addReq_Click); + // + // reqList + // + this.reqList.DisplayMember = "1"; + this.reqList.FormattingEnabled = true; + this.reqList.Location = new System.Drawing.Point(6, 32); + this.reqList.Name = "reqList"; + this.reqList.Size = new System.Drawing.Size(79, 212); + this.reqList.TabIndex = 3; + this.reqList.SelectedIndexChanged += new System.EventHandler(this.reqList_SelectedIndexChanged); + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(104, 35); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(31, 13); + this.label13.TabIndex = 15; + this.label13.Text = "Type"; + // + // requirementType + // + this.requirementType.FormattingEnabled = true; + this.requirementType.Items.AddRange(new object[] { + "score", + "bombsHit", + "blocksMissed", + "saberDistance", + "perfectCuts"}); + this.requirementType.Location = new System.Drawing.Point(141, 32); + this.requirementType.Name = "requirementType"; + this.requirementType.Size = new System.Drawing.Size(121, 21); + this.requirementType.TabIndex = 14; + this.requirementType.SelectedValueChanged += new System.EventHandler(this.RequirementValueChanged); + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(101, 61); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(34, 13); + this.label14.TabIndex = 22; + this.label14.Text = "Value"; + // + // requirementValue + // + this.requirementValue.Location = new System.Drawing.Point(141, 59); + this.requirementValue.Maximum = new decimal(new int[] { + 100000000, + 0, + 0, + 0}); + this.requirementValue.Name = "requirementValue"; + this.requirementValue.Size = new System.Drawing.Size(120, 20); + this.requirementValue.TabIndex = 21; + this.requirementValue.ValueChanged += new System.EventHandler(this.RequirementValueChanged); + // + // requirementIsMax + // + this.requirementIsMax.AutoSize = true; + this.requirementIsMax.Location = new System.Drawing.Point(98, 85); + this.requirementIsMax.Name = "requirementIsMax"; + this.requirementIsMax.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.requirementIsMax.Size = new System.Drawing.Size(57, 17); + this.requirementIsMax.TabIndex = 20; + this.requirementIsMax.Text = "Is Max"; + this.requirementIsMax.UseVisualStyleBackColor = true; + this.requirementIsMax.CheckedChanged += new System.EventHandler(this.RequirementValueChanged); + // + // externalModsList + // + this.externalModsList.FormattingEnabled = true; + this.externalModsList.Location = new System.Drawing.Point(6, 27); + this.externalModsList.Name = "externalModsList"; + this.externalModsList.Size = new System.Drawing.Size(107, 212); + this.externalModsList.TabIndex = 0; + this.externalModsList.SelectedIndexChanged += new System.EventHandler(this.externalModsList_SelectedIndexChanged); + // + // remExtMod + // + this.remExtMod.Location = new System.Drawing.Point(6, 3); + this.remExtMod.Name = "remExtMod"; + this.remExtMod.Size = new System.Drawing.Size(29, 20); + this.remExtMod.TabIndex = 7; + this.remExtMod.Text = "-"; + this.remExtMod.UseVisualStyleBackColor = true; + this.remExtMod.Click += new System.EventHandler(this.remExtMod_Click); + // + // addExtMod + // + this.addExtMod.Location = new System.Drawing.Point(84, 3); + this.addExtMod.Name = "addExtMod"; + this.addExtMod.Size = new System.Drawing.Size(29, 20); + this.addExtMod.TabIndex = 6; + this.addExtMod.Text = "+"; + this.addExtMod.UseVisualStyleBackColor = true; + this.addExtMod.Click += new System.EventHandler(this.addExtMod_Click); + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(141, 60); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(310, 193); + this.textBox1.TabIndex = 8; + this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(136, 7); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(315, 13); + this.label15.TabIndex = 9; + this.label15.Text = "This is where you put info for other mods to be used in challenges"; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Location = new System.Drawing.Point(139, 44); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(241, 13); + this.label16.TabIndex = 10; + this.label16.Text = "Seperate items for the selected mod by a new line"; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(618, 587); + this.Controls.Add(this.tabControl1); + this.Controls.Add(this.toolStrip1); + this.Name = "Form1"; + this.Text = "Form1"; + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); + this.tabPage2.ResumeLayout(false); + this.tabPage2.PerformLayout(); + this.tabControl2.ResumeLayout(false); + this.tabPage3.ResumeLayout(false); + this.tabPage3.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.speedMul)).EndInit(); + this.tabPage4.ResumeLayout(false); + this.tabPage4.PerformLayout(); + this.tabPage5.ResumeLayout(false); + this.tabPage5.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.requirementValue)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton1; + private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox campaignDesc; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox campaignName; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.ListBox listBox1; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox challengeDesc; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox challengeName; + private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem; + private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; + private System.Windows.Forms.CheckBox allUnlocked; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.ComboBox difficulty; + private System.Windows.Forms.TextBox customDownloadURL; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox songID; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TabControl tabControl2; + private System.Windows.Forms.TabPage tabPage3; + private System.Windows.Forms.TabPage tabPage4; + private System.Windows.Forms.TabPage tabPage5; + private System.Windows.Forms.CheckBox disappearingArrows; + private System.Windows.Forms.CheckBox strictAngles; + private System.Windows.Forms.CheckBox batteryEnergy; + private System.Windows.Forms.CheckBox noFail; + private System.Windows.Forms.CheckBox instaFail; + private System.Windows.Forms.CheckBox failOnSaberClash; + private System.Windows.Forms.CheckBox noBombs; + private System.Windows.Forms.CheckBox fastNotes; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.ComboBox enabledObstacles; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.ComboBox energyType; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.NumericUpDown speedMul; + private System.Windows.Forms.Button remReq; + private System.Windows.Forms.Button addReq; + private System.Windows.Forms.ListBox reqList; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.NumericUpDown requirementValue; + private System.Windows.Forms.CheckBox requirementIsMax; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.ComboBox requirementType; + private System.Windows.Forms.ListBox externalModsList; + private System.Windows.Forms.Button remExtMod; + private System.Windows.Forms.Button addExtMod; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label label15; + } +} + diff --git a/BeatSaberCampaignCreator/Form1.cs b/BeatSaberCampaignCreator/Form1.cs new file mode 100644 index 0000000..1128cd8 --- /dev/null +++ b/BeatSaberCampaignCreator/Form1.cs @@ -0,0 +1,331 @@ +using BeatSaberDailyChallenges; +using BeatSaberDailyChallenges.campaign; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using static PlayerDataModelSaveData.GameplayModifiers; + +namespace BeatSaberCampaignCreator +{ + public partial class Form1 : Form + { + Campaign campaign = null; + string currentDirectory; + int currentChallenge = 0; + bool isLoading = false; + public Form1() + { + InitializeComponent(); + } + + private void button1_Click(object sender, EventArgs e) + { + AddChallenge(); + } + + private void listBox1_SelectedIndexChanged(object sender, EventArgs e) + { + currentChallenge = listBox1.SelectedIndex; + SetDataToCurrentSelected(); + } + private void AddChallenge() + { + listBox1.Items.Add(listBox1.Items.Count); + Challenge challenge = new Challenge(); + challenge.modifiers = new ChallengeModifiers(); + challenge.modifiers.speedMul = 1; + challenge.requirements = new ChallengeRequirement[0]; + campaign.challenges.Add(challenge); + } + public void SetDataToCurrentSelected() + { + if (campaign == null) return; + isLoading = true; + Challenge challenge = campaign.challenges[currentChallenge]; + challengeName.Text = challenge.name; + challengeDesc.Text = challenge.desc; + songID.Text = challenge.songid; + customDownloadURL.Text = challenge.customDownloadURL; + difficulty.SelectedIndex = (int)challenge.difficulty; + disappearingArrows.Checked = challenge.modifiers.disappearingArrows; + strictAngles.Checked = challenge.modifiers.strictAngles; + fastNotes.Checked = challenge.modifiers.fastNotes; + noBombs.Checked = challenge.modifiers.noBombs; + failOnSaberClash.Checked = challenge.modifiers.failOnSaberClash; + instaFail.Checked = challenge.modifiers.instaFail; + noFail.Checked = challenge.modifiers.noFail; + batteryEnergy.Checked = challenge.modifiers.batteryEnergy; + speedMul.Value = (decimal)challenge.modifiers.speedMul; + energyType.SelectedIndex = (int)challenge.modifiers.energyType; + enabledObstacles.SelectedIndex = (int)challenge.modifiers.enabledObstacleType; + + + reqList.Items.Clear(); + foreach(ChallengeRequirement req in challenge.requirements) + { + reqList.Items.Add(reqList.Items.Count); + } + if (reqList.Items.Count > 0) reqList.SelectedIndex = 0; + externalModsList.Items.Clear(); + foreach(KeyValuePair pair in challenge.externalModifiers) + { + externalModsList.Items.Add(pair.Key); + } + if (externalModsList.Items.Count > 0) externalModsList.SelectedIndex = 0; + isLoading = false; + } + private void ChallengeDataValueChange(object sender, EventArgs e) + { + if (isLoading) return; + UpdateChallengeInfo(); + } + private void CampaignDataValueChange(object sender, EventArgs e) + { + if (updatingCampaign) return; + UpdateCampaignInfo(); + } + public void UpdateChallengeInfo() + { + if (campaign == null) return; + Challenge challenge = campaign.challenges[currentChallenge]; + challenge.name = challengeName.Text; + challenge.desc = challengeDesc.Text; + challenge.songid = songID.Text; + challenge.customDownloadURL = customDownloadURL.Text; + challenge.difficulty = (BeatmapDifficulty)difficulty.SelectedIndex; + challenge.modifiers.disappearingArrows = disappearingArrows.Checked; + challenge.modifiers.strictAngles = strictAngles.Checked; + challenge.modifiers.fastNotes = fastNotes.Checked; + challenge.modifiers.noBombs = noBombs.Checked; + challenge.modifiers.failOnSaberClash = failOnSaberClash.Checked; + challenge.modifiers.instaFail = instaFail.Checked; + challenge.modifiers.noFail = noFail.Checked; + challenge.modifiers.batteryEnergy = batteryEnergy.Checked; + challenge.modifiers.speedMul = (float)speedMul.Value; + challenge.modifiers.energyType = (GameplayModifiers.EnergyType)energyType.SelectedIndex; + challenge.modifiers.enabledObstacleType = (GameplayModifiers.EnabledObstacleType)enabledObstacles.SelectedIndex; + } + bool updatingCampaign = false; + public void SetCampaignInfoData() + { + updatingCampaign = true; + campaignName.Text = campaign.info.name; + campaignDesc.Text = campaign.info.desc; + allUnlocked.Checked = campaign.info.allUnlocked; + updatingCampaign = false; + } + public void UpdateCampaignInfo() + { + campaign.info.name = campaignName.Text; + campaign.info.desc = campaignDesc.Text; + campaign.info.allUnlocked = allUnlocked.Checked; + } + + //Header + private void newToolStripMenuItem_Click(object sender, EventArgs e) + { + if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) + { + string path = folderBrowserDialog1.SelectedPath; + currentDirectory = path; + campaign = new Campaign(); + campaign.info = new CampaignInfo(); + campaign.info.version = "0.1"; + campaign.challenges = new List(); + listBox1.Items.Clear(); + AddChallenge(); + currentChallenge = 0; + tabControl1.Enabled = true; + SetCampaignInfoData(); + SetDataToCurrentSelected(); + } + } + + private void openToolStripMenuItem_Click(object sender, EventArgs e) + { + if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) + { + string path = folderBrowserDialog1.SelectedPath; + currentDirectory = path; + campaign = new Campaign(); + campaign.info = JsonConvert.DeserializeObject(File.ReadAllText(path + "/info.json")); + campaign.challenges = new List(); + currentChallenge = 0; + int i = 0; + listBox1.Items.Clear(); + while (File.Exists(path + "/" + i + ".json")) + { + campaign.challenges.Add(JsonConvert.DeserializeObject(File.ReadAllText(path + "/" + i + ".json").Replace("\n", ""))); + listBox1.Items.Add(listBox1.Items.Count); + i++; + } + SetCampaignInfoData(); + SetDataToCurrentSelected(); + SetRequirementToSelected(); + tabControl1.Enabled = true; + } + } + + private void saveToolStripMenuItem_Click(object sender, EventArgs e) + { + if (campaign == null) return; + File.WriteAllText(currentDirectory + "/info.json", JsonConvert.SerializeObject(campaign.info)); + for(int i = 0; i < campaign.challenges.Count; i++) + { + File.WriteAllText(currentDirectory + "/" + i + ".json", JsonConvert.SerializeObject(campaign.challenges[i])); + } + } + + //requirement stuff + int curRequirementIndex; + bool reqUpdating = false; + private void addReq_Click(object sender, EventArgs e) + { + reqList.Items.Add(reqList.Items.Count); + Challenge challenge = campaign.challenges[currentChallenge]; + List tempList = new List(); + foreach(ChallengeRequirement req in challenge.requirements) + { + tempList.Add(req); + } + tempList.Add(new ChallengeRequirement()); + challenge.requirements = tempList.ToArray(); + } + + private void remReq_Click(object sender, EventArgs e) + { + Challenge challenge = campaign.challenges[currentChallenge]; + List tempList = new List(); + foreach (ChallengeRequirement req in challenge.requirements) + { + tempList.Add(req); + } + tempList.RemoveAt(curRequirementIndex); + challenge.requirements = tempList.ToArray(); + reqList.Items.Clear(); + foreach (ChallengeRequirement req in challenge.requirements) + { + reqList.Items.Add(reqList.Items.Count); + } + if (reqList.Items.Count > 0) reqList.SelectedIndex = 0; + } + + private void reqList_SelectedIndexChanged(object sender, EventArgs e) + { + curRequirementIndex = reqList.SelectedIndex; + SetRequirementToSelected(); + } + private void RequirementValueChanged(object sender, EventArgs e) + { + if (reqUpdating) return; + UpdateRequirementInfo(); + } + public void UpdateRequirementInfo() + { + if (campaign == null) return; + Challenge challenge = campaign.challenges[currentChallenge]; + if (challenge.requirements.Count() == 0 || curRequirementIndex >= challenge.requirements.Count()) return; + ChallengeRequirement requirement = challenge.requirements[curRequirementIndex]; + requirement.type = requirementType.Text; + requirement.count = (int)requirementValue.Value; + requirement.isMax = requirementIsMax.Checked; + } + public void SetRequirementToSelected() + { + if (campaign == null) return; + Challenge challenge = campaign.challenges[currentChallenge]; + if (challenge.requirements.Count() == 0 || curRequirementIndex >= challenge.requirements.Count()) return; + reqUpdating = true; + ChallengeRequirement requirement = challenge.requirements[curRequirementIndex]; + requirementType.Text = requirement.type; + requirementValue.Value = requirement.count; + requirementIsMax.Checked = requirement.isMax; + reqUpdating = false; + } + + + //External Modifier stuff + private void addExtMod_Click(object sender, EventArgs e) + { + if (campaign == null) return; + Challenge challenge = campaign.challenges[currentChallenge]; + string modName = ShowDialog("Mod Name (ex GameplayModifiersPlus)", "External Modifier Mod Name"); + challenge.externalModifiers.Add(modName, new string[0]); + externalModsList.Items.Add(modName); + externalModsList.SelectedIndex = externalModsList.Items.Count - 1; + } + + private void remExtMod_Click(object sender, EventArgs e) + { + if (campaign == null) return; + Challenge challenge = campaign.challenges[currentChallenge]; + challenge.externalModifiers.Remove((string)externalModsList.SelectedItem); + externalModsList.Items.Clear(); + foreach (KeyValuePair pair in challenge.externalModifiers) + { + externalModsList.Items.Add(pair.Key); + } + if (externalModsList.Items.Count > 0) externalModsList.SelectedIndex = 0; + } + bool isExtLoading = false; + private void externalModsList_SelectedIndexChanged(object sender, EventArgs e) + { + if (campaign == null) return; + Challenge challenge = campaign.challenges[currentChallenge]; + isExtLoading = true; + textBox1.Text = ""; + foreach (string line in challenge.externalModifiers[(string)externalModsList.SelectedItem]) + { + textBox1.Text += line + "\r\n"; + } + textBox1.Text = textBox1.Text.TrimEnd('\n'); + textBox1.Text = textBox1.Text.TrimEnd('\r'); + isExtLoading = false; + } + + private void textBox1_TextChanged(object sender, EventArgs e) + { + if (isExtLoading) return; + if (campaign == null) return; + Challenge challenge = campaign.challenges[currentChallenge]; + challenge.externalModifiers.Remove((string)externalModsList.SelectedItem); + string[] lines = textBox1.Text.Split('\n'); + for(int i = 0; i < lines.Count(); i++) + { + lines[i] = lines[i].Trim('\r'); + } + challenge.externalModifiers.Add((string)externalModsList.SelectedItem,lines); + } + + + public static string ShowDialog(string text, string caption) + { + Form prompt = new Form() + { + Width = 500, + Height = 150, + FormBorderStyle = FormBorderStyle.FixedDialog, + Text = caption, + StartPosition = FormStartPosition.CenterScreen + }; + Label textLabel = new Label() { Left = 50, Top = 20, Width = 1000, Text = text }; + TextBox textBox = new TextBox() { Left = 50, Top = 50, Width = 400 }; + Button confirmation = new Button() { Text = "Ok", Left = 350, Width = 100, Top = 70, DialogResult = DialogResult.OK }; + confirmation.Click += (sender, e) => { prompt.Close(); }; + prompt.Controls.Add(textBox); + prompt.Controls.Add(confirmation); + prompt.Controls.Add(textLabel); + prompt.AcceptButton = confirmation; + + return prompt.ShowDialog() == DialogResult.OK ? textBox.Text : ""; + } + } +} diff --git a/BeatSaberCampaignCreator/Form1.resx b/BeatSaberCampaignCreator/Form1.resx new file mode 100644 index 0000000..4ae3ee6 --- /dev/null +++ b/BeatSaberCampaignCreator/Form1.resx @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + 262, 17 + + \ No newline at end of file diff --git a/BeatSaberCampaignCreator/Program.cs b/BeatSaberCampaignCreator/Program.cs new file mode 100644 index 0000000..fb4ecf3 --- /dev/null +++ b/BeatSaberCampaignCreator/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace BeatSaberCampaignCreator +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/BeatSaberCampaignCreator/Properties/AssemblyInfo.cs b/BeatSaberCampaignCreator/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..95d7a7b --- /dev/null +++ b/BeatSaberCampaignCreator/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("BeatSaberCampaignCreator")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("BeatSaberCampaignCreator")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("698b09a1-ef72-4619-b367-dc9c37296826")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/BeatSaberCampaignCreator/Properties/Resources.Designer.cs b/BeatSaberCampaignCreator/Properties/Resources.Designer.cs new file mode 100644 index 0000000..2c0e4e4 --- /dev/null +++ b/BeatSaberCampaignCreator/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace BeatSaberCampaignCreator.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BeatSaberCampaignCreator.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/BeatSaberCampaignCreator/Properties/Resources.resx b/BeatSaberCampaignCreator/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/BeatSaberCampaignCreator/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/BeatSaberCampaignCreator/Properties/Settings.Designer.cs b/BeatSaberCampaignCreator/Properties/Settings.Designer.cs new file mode 100644 index 0000000..acf5bd5 --- /dev/null +++ b/BeatSaberCampaignCreator/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace BeatSaberCampaignCreator.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/BeatSaberCampaignCreator/Properties/Settings.settings b/BeatSaberCampaignCreator/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/BeatSaberCampaignCreator/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + +