diff --git a/BeatSaberCampaignCreator/App.config b/BeatSaberCampaignCreator/App.config index 731f6de..2b67add 100644 --- a/BeatSaberCampaignCreator/App.config +++ b/BeatSaberCampaignCreator/App.config @@ -1,6 +1,7 @@ - + - + - \ No newline at end of file + + diff --git a/BeatSaberCampaignCreator/BeatSaberCampaignCreator.csproj b/BeatSaberCampaignCreator/BeatSaberCampaignCreator.csproj index b2dfd22..4b3d33f 100644 --- a/BeatSaberCampaignCreator/BeatSaberCampaignCreator.csproj +++ b/BeatSaberCampaignCreator/BeatSaberCampaignCreator.csproj @@ -8,10 +8,11 @@ WinExe BeatSaberCampaignCreator BeatSaberCampaignCreator - v4.6.1 + v4.7.2 512 true true + AnyCPU @@ -33,18 +34,19 @@ 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 + + False + ..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Beat Saber\Beat Saber_Data\Managed\Assembly-CSharp.dll - + False - E:\Program Files (x86)\Steam\steamapps\common\Beat Saber\Plugins\BeatSaberCustomUI.dll + ..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Beat Saber\Plugins\BeatSaberCustomUI.dll + + + ..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Beat Saber\Plugins\Custom Campaigns.dll - E:\Program Files (x86)\Steam\steamapps\common\Beat Saber\Beat Saber_Data\Managed\Newtonsoft.Json.dll + C:\Program Files (x86)\Steam\steamapps\common\Beat Saber\Beat Saber_Data\Managed\Newtonsoft.Json.dll False @@ -111,6 +113,7 @@ True Resources.resx + True SettingsSingleFileGenerator @@ -123,7 +126,12 @@ - + + Designer + + + + \ No newline at end of file diff --git a/BeatSaberCampaignCreator/Form1.Designer.cs b/BeatSaberCampaignCreator/Form1.Designer.cs index 19b89f7..8f5fb8d 100644 --- a/BeatSaberCampaignCreator/Form1.Designer.cs +++ b/BeatSaberCampaignCreator/Form1.Designer.cs @@ -130,6 +130,9 @@ private void InitializeComponent() this.panel1 = new System.Windows.Forms.Panel(); this.mapArea = new System.Windows.Forms.Panel(); this.timer1 = new System.Windows.Forms.Timer(this.components); + this.label24 = new System.Windows.Forms.Label(); + this.backgroundAlpha = new System.Windows.Forms.NumericUpDown(); + this.label25 = new System.Windows.Forms.Label(); this.toolStrip1.SuspendLayout(); this.tabControl1.SuspendLayout(); this.tabPage1.SuspendLayout(); @@ -153,6 +156,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); this.groupBox2.SuspendLayout(); this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.backgroundAlpha)).BeginInit(); this.SuspendLayout(); // // toolStrip1 @@ -878,7 +882,8 @@ private void InitializeComponent() this.unlockableType.Items.AddRange(new object[] { "Saber", "Avatar", - "Platform"}); + "Platform", + "Note"}); this.unlockableType.Location = new System.Drawing.Point(67, 3); this.unlockableType.Name = "unlockableType"; this.unlockableType.Size = new System.Drawing.Size(126, 21); @@ -1098,6 +1103,7 @@ private void InitializeComponent() // // tabPage6 // + this.tabPage6.Controls.Add(this.label25); this.tabPage6.Controls.Add(this.tableLayoutPanel4); this.tabPage6.Controls.Add(this.moveGates); this.tabPage6.Controls.Add(this.editGates); @@ -1124,13 +1130,16 @@ private void InitializeComponent() this.tableLayoutPanel4.ColumnCount = 2; this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel4.Controls.Add(this.backgroundAlpha, 1, 1); + this.tableLayoutPanel4.Controls.Add(this.label24, 0, 1); this.tableLayoutPanel4.Controls.Add(this.label18, 0, 0); this.tableLayoutPanel4.Controls.Add(this.numericUpDown1, 1, 0); this.tableLayoutPanel4.Location = new System.Drawing.Point(354, 106); this.tableLayoutPanel4.Name = "tableLayoutPanel4"; - this.tableLayoutPanel4.RowCount = 1; + this.tableLayoutPanel4.RowCount = 2; this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel4.Size = new System.Drawing.Size(200, 27); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F)); + this.tableLayoutPanel4.Size = new System.Drawing.Size(200, 60); this.tableLayoutPanel4.TabIndex = 32; // // label18 @@ -1139,7 +1148,7 @@ private void InitializeComponent() this.label18.Dock = System.Windows.Forms.DockStyle.Right; this.label18.Location = new System.Drawing.Point(35, 0); this.label18.Name = "label18"; - this.label18.Size = new System.Drawing.Size(62, 27); + this.label18.Size = new System.Drawing.Size(62, 31); this.label18.TabIndex = 6; this.label18.Text = "Map Height"; // @@ -1200,7 +1209,7 @@ private void InitializeComponent() // label19 // this.label19.AutoSize = true; - this.label19.Location = new System.Drawing.Point(333, 136); + this.label19.Location = new System.Drawing.Point(351, 229); this.label19.Name = "label19"; this.label19.Size = new System.Drawing.Size(261, 182); this.label19.TabIndex = 27; @@ -1298,10 +1307,43 @@ private void InitializeComponent() this.timer1.Interval = 20; this.timer1.Tick += new System.EventHandler(this.timer1_Tick); // + // label24 + // + this.label24.AutoSize = true; + this.label24.Dock = System.Windows.Forms.DockStyle.Right; + this.label24.Location = new System.Drawing.Point(25, 31); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(72, 29); + this.label24.TabIndex = 20; + this.label24.Text = "Background Transparency"; + // + // backgroundAlpha + // + this.backgroundAlpha.DecimalPlaces = 2; + this.backgroundAlpha.Location = new System.Drawing.Point(103, 34); + this.backgroundAlpha.Maximum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.backgroundAlpha.Name = "backgroundAlpha"; + this.backgroundAlpha.Size = new System.Drawing.Size(94, 20); + this.backgroundAlpha.TabIndex = 21; + this.backgroundAlpha.ValueChanged += new System.EventHandler(this.CampaignDataValueChange); + // + // label25 + // + this.label25.AutoSize = true; + this.label25.Location = new System.Drawing.Point(351, 169); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(269, 26); + this.label25.TabIndex = 33; + this.label25.Text = "If you want a background put a \"map background.png\"\r\nin the campaign\'s folder"; + // // Form1 // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.ClientSize = new System.Drawing.Size(650, 587); this.Controls.Add(this.tabControl1); this.Controls.Add(this.toolStrip1); @@ -1347,6 +1389,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); this.groupBox2.ResumeLayout(false); this.panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.backgroundAlpha)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -1454,6 +1497,9 @@ private void InitializeComponent() private System.Windows.Forms.Button removeUnlockable; private System.Windows.Forms.ListBox unlockableListBox; private System.Windows.Forms.Button addUnlockable; + private System.Windows.Forms.NumericUpDown backgroundAlpha; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.Label label25; } } diff --git a/BeatSaberCampaignCreator/Form1.cs b/BeatSaberCampaignCreator/Form1.cs index f563a1a..72bd577 100644 --- a/BeatSaberCampaignCreator/Form1.cs +++ b/BeatSaberCampaignCreator/Form1.cs @@ -1,5 +1,5 @@ -using BeatSaberDailyChallenges; -using BeatSaberDailyChallenges.campaign; +using BeatSaberCustomCampaigns; +using BeatSaberCustomCampaigns.campaign; using Newtonsoft.Json; using System; using System.Collections.Generic; @@ -8,10 +8,10 @@ using System.Drawing; using System.IO; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; -using static PlayerDataModelSaveData.GameplayModifiers; namespace BeatSaberCampaignCreator { @@ -19,6 +19,7 @@ public partial class Form1 : Form { Ookii.Dialogs.Wpf.VistaFolderBrowserDialog folderBrowserDialog1; Campaign campaign = null; + Bitmap backgroundBitmap = null; string currentDirectory; int currentChallenge = 0; bool isLoading = false; @@ -138,6 +139,7 @@ public void SetCampaignInfoData() campaignDesc.Text = campaign.info.desc; allUnlocked.Checked = campaign.info.allUnlocked; numericUpDown1.Value = campaign.info.mapHeight; + backgroundAlpha.Value = (decimal)campaign.info.backgroundAlpha; updatingCampaign = false; } public void UpdateCampaignInfo() @@ -145,6 +147,7 @@ public void UpdateCampaignInfo() campaign.info.name = campaignName.Text; campaign.info.desc = campaignDesc.Text; campaign.info.allUnlocked = allUnlocked.Checked; + campaign.info.backgroundAlpha = (float)backgroundAlpha.Value; } //Header @@ -152,11 +155,12 @@ private void newToolStripMenuItem_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog().Value) { + Location = new Point(Location.X+1, Location.Y); string path = folderBrowserDialog1.SelectedPath; currentDirectory = path; campaign = new Campaign(); campaign.info = new CampaignInfo(); - campaign.challenges = new List(); + campaign.challenges = new List(); listBox1.Items.Clear(); AddChallenge(); currentChallenge = 0; @@ -171,11 +175,12 @@ private void openToolStripMenuItem_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog().Value) { + Location = new Point(Location.X + 1, Location.Y); string path = folderBrowserDialog1.SelectedPath; currentDirectory = path; campaign = new Campaign(); campaign.info = JsonConvert.DeserializeObject(File.ReadAllText(path + "/info.json")); - campaign.challenges = new List(); + campaign.challenges = new List(); currentChallenge = 0; int i = 0; listBox1.Items.Clear(); @@ -190,6 +195,13 @@ private void openToolStripMenuItem_Click(object sender, EventArgs e) SetRequirementToSelected(); PrepareMap(); tabControl1.Enabled = true; + if (File.Exists(path + "/map background.png")) + { + backgroundBitmap = new Bitmap(path + "/map background.png"); + } else + { + backgroundBitmap = null; + } } } @@ -375,10 +387,16 @@ public void UpdateMapHeight(int height) } Pen pen = new Pen(Brushes.Red, 8); + private void panel1_Paint(object sender, PaintEventArgs e) { //Draw arrows Graphics g = e.Graphics; + if (backgroundBitmap != null) + { + int renderedHeight = mapArea.Width * backgroundBitmap.Height / backgroundBitmap.Width; + g.DrawImage(backgroundBitmap, 0, mapArea.Height-renderedHeight, mapArea.Width, renderedHeight); + } pen.StartCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor; foreach(NodeButton node in nodes) { @@ -495,7 +513,7 @@ private void clickNode(object sender, EventArgs e) setState(MapState.MOVE); break; case MapState.EDIT: - new FormEditNode(((NodeButton)sender).mapPosition).ShowDialog(); + new FormEditNode(((NodeButton)sender)).ShowDialog(); break; } } @@ -591,11 +609,11 @@ private void moveGates_Click(object sender, EventArgs e) if (!CanSwitchState()) return; setState(MapState.MOVE_GATES); } - private void Form1_Load(object sender, EventArgs e) { folderBrowserDialog1 = new Ookii.Dialogs.Wpf.VistaFolderBrowserDialog(); + typeof(Panel).InvokeMember("DoubleBuffered", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty, null, mapArea, new object[] { true }); } //Unlockable stuff int curUnlockableIndex; diff --git a/BeatSaberCampaignCreator/Form1.resx b/BeatSaberCampaignCreator/Form1.resx index 293af23..8062a90 100644 --- a/BeatSaberCampaignCreator/Form1.resx +++ b/BeatSaberCampaignCreator/Form1.resx @@ -151,6 +151,11 @@ Unlock gates prevent the player from playing any challenges ABOVE the unlock gate until they have completed the number of challenges required for that gate + + + If you don't use a custom download url then just put the song's version number from beatsaver +in song version #. If you do you need to make Song Version # something unique as this is how +the plugin finds the song as well as being the name of the folder it puts it in. 460, 17 diff --git a/BeatSaberCampaignCreator/FormEditGate.Designer.cs b/BeatSaberCampaignCreator/FormEditGate.Designer.cs index b38b380..4dc4f7f 100644 --- a/BeatSaberCampaignCreator/FormEditGate.Designer.cs +++ b/BeatSaberCampaignCreator/FormEditGate.Designer.cs @@ -62,14 +62,14 @@ private void InitializeComponent() // // FormEditGate // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.ClientSize = new System.Drawing.Size(534, 247); this.Controls.Add(this.button1); this.Controls.Add(this.label2); this.Controls.Add(this.clearsToPass); this.Name = "FormEditGate"; - this.Text = "FormEditGate"; + this.Text = "Edit Gate"; this.Load += new System.EventHandler(this.FormEditGate_Load); ((System.ComponentModel.ISupportInitialize)(this.clearsToPass)).EndInit(); this.ResumeLayout(false); diff --git a/BeatSaberCampaignCreator/FormEditGate.cs b/BeatSaberCampaignCreator/FormEditGate.cs index 880c1bb..0a99ab3 100644 --- a/BeatSaberCampaignCreator/FormEditGate.cs +++ b/BeatSaberCampaignCreator/FormEditGate.cs @@ -1,4 +1,4 @@ -using BeatSaberDailyChallenges.campaign; +using BeatSaberCustomCampaigns.campaign; using System; using System.Collections.Generic; using System.ComponentModel; diff --git a/BeatSaberCampaignCreator/FormEditNode.Designer.cs b/BeatSaberCampaignCreator/FormEditNode.Designer.cs index 4ffdf52..29c2f76 100644 --- a/BeatSaberCampaignCreator/FormEditNode.Designer.cs +++ b/BeatSaberCampaignCreator/FormEditNode.Designer.cs @@ -35,8 +35,14 @@ private void InitializeComponent() this.label3 = new System.Windows.Forms.Label(); this.nodeScale = new System.Windows.Forms.NumericUpDown(); this.button1 = new System.Windows.Forms.Button(); + this.label4 = new System.Windows.Forms.Label(); + this.xPositon = new System.Windows.Forms.NumericUpDown(); + this.label5 = new System.Windows.Forms.Label(); + this.yPosition = new System.Windows.Forms.NumericUpDown(); ((System.ComponentModel.ISupportInitialize)(this.numberPortion)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nodeScale)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.xPositon)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.yPosition)).BeginInit(); this.SuspendLayout(); // // letterPortion @@ -90,7 +96,7 @@ private void InitializeComponent() // // button1 // - this.button1.Location = new System.Drawing.Point(162, 126); + this.button1.Location = new System.Drawing.Point(162, 164); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 6; @@ -98,11 +104,67 @@ private void InitializeComponent() this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(102, 113); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(54, 13); + this.label4.TabIndex = 8; + this.label4.Text = "X Position"; + // + // xPositon + // + this.xPositon.Location = new System.Drawing.Point(162, 111); + this.xPositon.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.xPositon.Minimum = new decimal(new int[] { + 10000, + 0, + 0, + -2147483648}); + this.xPositon.Name = "xPositon"; + this.xPositon.Size = new System.Drawing.Size(120, 20); + this.xPositon.TabIndex = 7; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(102, 139); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(54, 13); + this.label5.TabIndex = 10; + this.label5.Text = "Y Position"; + // + // yPosition + // + this.yPosition.Location = new System.Drawing.Point(162, 137); + this.yPosition.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.yPosition.Minimum = new decimal(new int[] { + 10000, + 0, + 0, + -2147483648}); + this.yPosition.Name = "yPosition"; + this.yPosition.Size = new System.Drawing.Size(120, 20); + this.yPosition.TabIndex = 9; + // // FormEditNode // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.ClientSize = new System.Drawing.Size(431, 199); + this.Controls.Add(this.label5); + this.Controls.Add(this.yPosition); + this.Controls.Add(this.label4); + this.Controls.Add(this.xPositon); this.Controls.Add(this.button1); this.Controls.Add(this.label3); this.Controls.Add(this.nodeScale); @@ -111,10 +173,12 @@ private void InitializeComponent() this.Controls.Add(this.label1); this.Controls.Add(this.letterPortion); this.Name = "FormEditNode"; - this.Text = "FormEditNode"; + this.Text = "Edit Node"; this.Load += new System.EventHandler(this.FormEditNode_Load); ((System.ComponentModel.ISupportInitialize)(this.numberPortion)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nodeScale)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.xPositon)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.yPosition)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -129,5 +193,9 @@ private void InitializeComponent() private System.Windows.Forms.Label label3; private System.Windows.Forms.NumericUpDown nodeScale; private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.NumericUpDown xPositon; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.NumericUpDown yPosition; } } \ No newline at end of file diff --git a/BeatSaberCampaignCreator/FormEditNode.cs b/BeatSaberCampaignCreator/FormEditNode.cs index 3eaa399..294fe18 100644 --- a/BeatSaberCampaignCreator/FormEditNode.cs +++ b/BeatSaberCampaignCreator/FormEditNode.cs @@ -1,4 +1,4 @@ -using BeatSaberDailyChallenges.campaign; +using BeatSaberCustomCampaigns.campaign; using System; using System.Collections.Generic; using System.ComponentModel; @@ -13,11 +13,14 @@ namespace BeatSaberCampaignCreator { public partial class FormEditNode : Form { + const int CENTER_OFFSET = 121; public CampainMapPosition mapPosition; - public FormEditNode(CampainMapPosition mapPosition) + public NodeButton nodeButton; + public FormEditNode(NodeButton nodeButton) { InitializeComponent(); - this.mapPosition = mapPosition; + this.mapPosition = nodeButton.mapPosition; + this.nodeButton = nodeButton; } private void FormEditNode_Load(object sender, EventArgs e) @@ -25,6 +28,8 @@ private void FormEditNode_Load(object sender, EventArgs e) nodeScale.Value = (decimal)mapPosition.scale; numberPortion.Value = mapPosition.numberPortion; letterPortion.Text = mapPosition.letterPortion; + xPositon.Value = nodeButton.Location.X- CENTER_OFFSET; + yPosition.Value = nodeButton.Location.Y; } private void button1_Click(object sender, EventArgs e) @@ -32,6 +37,7 @@ private void button1_Click(object sender, EventArgs e) mapPosition.scale = (float)nodeScale.Value; mapPosition.numberPortion = (int)numberPortion.Value; mapPosition.letterPortion = letterPortion.Text; + nodeButton.SetPosition(new Point((int)xPositon.Value+CENTER_OFFSET, (int)yPosition.Value)); Close(); } } diff --git a/BeatSaberCampaignCreator/GateButton.cs b/BeatSaberCampaignCreator/GateButton.cs index 00fc420..ab766b6 100644 --- a/BeatSaberCampaignCreator/GateButton.cs +++ b/BeatSaberCampaignCreator/GateButton.cs @@ -1,4 +1,4 @@ -using BeatSaberDailyChallenges.campaign; +using BeatSaberCustomCampaigns.campaign; using System; using System.Collections.Generic; using System.Drawing; diff --git a/BeatSaberCampaignCreator/NodeButton.cs b/BeatSaberCampaignCreator/NodeButton.cs index 096c571..d5547a8 100644 --- a/BeatSaberCampaignCreator/NodeButton.cs +++ b/BeatSaberCampaignCreator/NodeButton.cs @@ -1,4 +1,4 @@ -using BeatSaberDailyChallenges.campaign; +using BeatSaberCustomCampaigns.campaign; using System; using System.Collections.Generic; using System.Drawing; diff --git a/BeatSaberCampaignCreator/Properties/Resources.resx b/BeatSaberCampaignCreator/Properties/Resources.resx index af7dbeb..2f96abe 100644 --- a/BeatSaberCampaignCreator/Properties/Resources.resx +++ b/BeatSaberCampaignCreator/Properties/Resources.resx @@ -46,7 +46,7 @@ mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 @@ -60,6 +60,7 @@ : and then encoded with base64 encoding. --> + @@ -68,9 +69,10 @@ - + + @@ -85,9 +87,10 @@ - + + @@ -109,9 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file