diff --git a/Fo76ini/Fo76ini.csproj b/Fo76ini/Fo76ini.csproj
index b989f19..a305980 100644
--- a/Fo76ini/Fo76ini.csproj
+++ b/Fo76ini/Fo76ini.csproj
@@ -202,6 +202,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Fo76ini/Form1.Designer.cs b/Fo76ini/Form1.Designer.cs
index 16cde99..d823c30 100644
--- a/Fo76ini/Form1.Designer.cs
+++ b/Fo76ini/Form1.Designer.cs
@@ -168,10 +168,17 @@ private void InitializeComponent()
this.groupBoxInterface = new System.Windows.Forms.GroupBox();
this.groupBoxMainMenu = new System.Windows.Forms.GroupBox();
this.groupBoxGameEdition = new System.Windows.Forms.GroupBox();
+ this.pictureBoxMSStore = new System.Windows.Forms.PictureBox();
+ this.pictureBoxSteam = new System.Windows.Forms.PictureBox();
+ this.pictureBoxBethesdaNetPTS = new System.Windows.Forms.PictureBox();
+ this.pictureBoxBethesdaNet = new System.Windows.Forms.PictureBox();
+ this.radioButtonEditionMSStore = new System.Windows.Forms.RadioButton();
this.radioButtonEditionBethesdaNetPTS = new System.Windows.Forms.RadioButton();
this.radioButtonEditionSteam = new System.Windows.Forms.RadioButton();
this.radioButtonEditionBethesdaNet = new System.Windows.Forms.RadioButton();
this.tabPageInfo = new System.Windows.Forms.TabPage();
+ this.labelGameEdition = new System.Windows.Forms.Label();
+ this.pictureBoxGameEdition = new System.Windows.Forms.PictureBox();
this.groupBoxUpdate = new System.Windows.Forms.GroupBox();
this.labelNewVersion = new System.Windows.Forms.Label();
this.buttonUpdateNow = new System.Windows.Forms.Button();
@@ -190,6 +197,7 @@ private void InitializeComponent()
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPageSettings = new System.Windows.Forms.TabPage();
this.groupBoxLaunchOptions = new System.Windows.Forms.GroupBox();
+ this.labelLaunchOptionMSStoreNotice = new System.Windows.Forms.Label();
this.labelLaunchOptionTip = new System.Windows.Forms.Label();
this.radioButtonLaunchViaExecutable = new System.Windows.Forms.RadioButton();
this.radioButtonLaunchViaLink = new System.Windows.Forms.RadioButton();
@@ -249,7 +257,12 @@ private void InitializeComponent()
this.groupBoxInterface.SuspendLayout();
this.groupBoxMainMenu.SuspendLayout();
this.groupBoxGameEdition.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxMSStore)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxSteam)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxBethesdaNetPTS)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxBethesdaNet)).BeginInit();
this.tabPageInfo.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxGameEdition)).BeginInit();
this.groupBoxUpdate.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
@@ -618,7 +631,7 @@ private void InitializeComponent()
this.sliderShadowDistance.Location = new System.Drawing.Point(10, 94);
this.sliderShadowDistance.Maximum = 200000;
this.sliderShadowDistance.Name = "sliderShadowDistance";
- this.sliderShadowDistance.Size = new System.Drawing.Size(273, 23);
+ this.sliderShadowDistance.Size = new System.Drawing.Size(281, 23);
this.sliderShadowDistance.SmallChange = 1000;
this.sliderShadowDistance.TabIndex = 27;
this.sliderShadowDistance.Text = "metroTrackBar1";
@@ -659,7 +672,7 @@ private void InitializeComponent()
this.sliderLODObjects.Location = new System.Drawing.Point(103, 41);
this.sliderLODObjects.Maximum = 600;
this.sliderLODObjects.Name = "sliderLODObjects";
- this.sliderLODObjects.Size = new System.Drawing.Size(202, 23);
+ this.sliderLODObjects.Size = new System.Drawing.Size(210, 23);
this.sliderLODObjects.SmallChange = 5;
this.sliderLODObjects.TabIndex = 29;
this.sliderLODObjects.Text = "metroTrackBar1";
@@ -676,7 +689,7 @@ private void InitializeComponent()
this.sliderLODItems.Location = new System.Drawing.Point(104, 70);
this.sliderLODItems.Maximum = 600;
this.sliderLODItems.Name = "sliderLODItems";
- this.sliderLODItems.Size = new System.Drawing.Size(201, 23);
+ this.sliderLODItems.Size = new System.Drawing.Size(209, 23);
this.sliderLODItems.SmallChange = 5;
this.sliderLODItems.TabIndex = 30;
this.sliderLODItems.Text = "metroTrackBar2";
@@ -693,7 +706,7 @@ private void InitializeComponent()
this.sliderLODActors.Location = new System.Drawing.Point(103, 99);
this.sliderLODActors.Maximum = 600;
this.sliderLODActors.Name = "sliderLODActors";
- this.sliderLODActors.Size = new System.Drawing.Size(202, 23);
+ this.sliderLODActors.Size = new System.Drawing.Size(210, 23);
this.sliderLODActors.SmallChange = 5;
this.sliderLODActors.TabIndex = 32;
this.sliderLODActors.Text = "metroTrackBar3";
@@ -724,7 +737,7 @@ private void InitializeComponent()
this.sliderGrassFadeDistance.Location = new System.Drawing.Point(9, 66);
this.sliderGrassFadeDistance.Maximum = 14000;
this.sliderGrassFadeDistance.Name = "sliderGrassFadeDistance";
- this.sliderGrassFadeDistance.Size = new System.Drawing.Size(274, 23);
+ this.sliderGrassFadeDistance.Size = new System.Drawing.Size(282, 23);
this.sliderGrassFadeDistance.SmallChange = 500;
this.sliderGrassFadeDistance.TabIndex = 24;
this.sliderGrassFadeDistance.Text = "metroTrackBar1";
@@ -975,7 +988,7 @@ private void InitializeComponent()
this.sliderTAAPostOverlay.LargeChange = 1;
this.sliderTAAPostOverlay.Location = new System.Drawing.Point(9, 41);
this.sliderTAAPostOverlay.Name = "sliderTAAPostOverlay";
- this.sliderTAAPostOverlay.Size = new System.Drawing.Size(274, 23);
+ this.sliderTAAPostOverlay.Size = new System.Drawing.Size(282, 23);
this.sliderTAAPostOverlay.TabIndex = 27;
this.sliderTAAPostOverlay.Text = "metroTrackBar1";
this.toolTip.SetToolTip(this.sliderTAAPostOverlay, "Sharpens the image.\r\n\r\nRecommended: 0.2\r\nDefault: 0.2\r\n\r\nAffected values: fTAAPos" +
@@ -991,7 +1004,7 @@ private void InitializeComponent()
this.sliderTAAPostSharpen.Location = new System.Drawing.Point(9, 93);
this.sliderTAAPostSharpen.Maximum = 200;
this.sliderTAAPostSharpen.Name = "sliderTAAPostSharpen";
- this.sliderTAAPostSharpen.Size = new System.Drawing.Size(274, 23);
+ this.sliderTAAPostSharpen.Size = new System.Drawing.Size(282, 23);
this.sliderTAAPostSharpen.TabIndex = 30;
this.sliderTAAPostSharpen.Text = "metroTrackBar2";
this.toolTip.SetToolTip(this.sliderTAAPostSharpen, "Sharpens the image.\r\n\r\nDefault: 0.2\r\nRecommended: 0.4\r\n\r\nAffected values: fTAAPos" +
@@ -1451,7 +1464,7 @@ private void InitializeComponent()
this.groupBoxTAASharpening.Controls.Add(this.sliderTAAPostOverlay);
this.groupBoxTAASharpening.Location = new System.Drawing.Point(9, 655);
this.groupBoxTAASharpening.Name = "groupBoxTAASharpening";
- this.groupBoxTAASharpening.Size = new System.Drawing.Size(369, 134);
+ this.groupBoxTAASharpening.Size = new System.Drawing.Size(377, 134);
this.groupBoxTAASharpening.TabIndex = 25;
this.groupBoxTAASharpening.TabStop = false;
this.groupBoxTAASharpening.Text = "TAA Sharpening";
@@ -1465,7 +1478,7 @@ private void InitializeComponent()
0,
0,
65536});
- this.numTAAPostSharpen.Location = new System.Drawing.Point(289, 93);
+ this.numTAAPostSharpen.Location = new System.Drawing.Point(297, 93);
this.numTAAPostSharpen.Maximum = new decimal(new int[] {
9999999,
0,
@@ -1498,7 +1511,7 @@ private void InitializeComponent()
0,
0,
65536});
- this.numTAAPostOverlay.Location = new System.Drawing.Point(289, 41);
+ this.numTAAPostOverlay.Location = new System.Drawing.Point(297, 41);
this.numTAAPostOverlay.Maximum = new decimal(new int[] {
9999999,
0,
@@ -1532,7 +1545,7 @@ private void InitializeComponent()
this.groupBoxGrass.Controls.Add(this.checkBoxGrass);
this.groupBoxGrass.Location = new System.Drawing.Point(9, 555);
this.groupBoxGrass.Name = "groupBoxGrass";
- this.groupBoxGrass.Size = new System.Drawing.Size(369, 94);
+ this.groupBoxGrass.Size = new System.Drawing.Size(377, 94);
this.groupBoxGrass.TabIndex = 23;
this.groupBoxGrass.TabStop = false;
this.groupBoxGrass.Text = "Grass";
@@ -1545,7 +1558,7 @@ private void InitializeComponent()
0,
0,
0});
- this.numGrassFadeDistance.Location = new System.Drawing.Point(289, 68);
+ this.numGrassFadeDistance.Location = new System.Drawing.Point(297, 68);
this.numGrassFadeDistance.Maximum = new decimal(new int[] {
9999999,
0,
@@ -1585,7 +1598,7 @@ private void InitializeComponent()
this.groupBoxLOD.Controls.Add(this.labelLODObjects);
this.groupBoxLOD.Location = new System.Drawing.Point(9, 419);
this.groupBoxLOD.Name = "groupBoxLOD";
- this.groupBoxLOD.Size = new System.Drawing.Size(369, 130);
+ this.groupBoxLOD.Size = new System.Drawing.Size(377, 130);
this.groupBoxLOD.TabIndex = 24;
this.groupBoxLOD.TabStop = false;
this.groupBoxLOD.Text = "LOD";
@@ -1603,7 +1616,7 @@ private void InitializeComponent()
//
this.numLODActors.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.numLODActors.DecimalPlaces = 1;
- this.numLODActors.Location = new System.Drawing.Point(310, 100);
+ this.numLODActors.Location = new System.Drawing.Point(318, 100);
this.numLODActors.Maximum = new decimal(new int[] {
9999999,
0,
@@ -1622,7 +1635,7 @@ private void InitializeComponent()
//
this.numLODItems.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.numLODItems.DecimalPlaces = 1;
- this.numLODItems.Location = new System.Drawing.Point(310, 71);
+ this.numLODItems.Location = new System.Drawing.Point(318, 71);
this.numLODItems.Maximum = new decimal(new int[] {
9999999,
0,
@@ -1641,7 +1654,7 @@ private void InitializeComponent()
//
this.numLODObjects.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.numLODObjects.DecimalPlaces = 1;
- this.numLODObjects.Location = new System.Drawing.Point(310, 41);
+ this.numLODObjects.Location = new System.Drawing.Point(318, 41);
this.numLODObjects.Maximum = new decimal(new int[] {
9999999,
0,
@@ -1690,7 +1703,7 @@ private void InitializeComponent()
this.groupBoxLighting.Controls.Add(this.checkBoxGodrays);
this.groupBoxLighting.Location = new System.Drawing.Point(9, 233);
this.groupBoxLighting.Name = "groupBoxLighting";
- this.groupBoxLighting.Size = new System.Drawing.Size(369, 46);
+ this.groupBoxLighting.Size = new System.Drawing.Size(377, 46);
this.groupBoxLighting.TabIndex = 15;
this.groupBoxLighting.TabStop = false;
this.groupBoxLighting.Text = "Lighting";
@@ -1708,7 +1721,7 @@ private void InitializeComponent()
this.groupBoxShadows.Controls.Add(this.labelShadowTextureResolution);
this.groupBoxShadows.Location = new System.Drawing.Point(9, 285);
this.groupBoxShadows.Name = "groupBoxShadows";
- this.groupBoxShadows.Size = new System.Drawing.Size(369, 128);
+ this.groupBoxShadows.Size = new System.Drawing.Size(377, 128);
this.groupBoxShadows.TabIndex = 16;
this.groupBoxShadows.TabStop = false;
this.groupBoxShadows.Text = "Shadows";
@@ -1721,7 +1734,7 @@ private void InitializeComponent()
this.comboBoxShadowBlurriness.FormattingEnabled = true;
this.comboBoxShadowBlurriness.Location = new System.Drawing.Point(134, 47);
this.comboBoxShadowBlurriness.Name = "comboBoxShadowBlurriness";
- this.comboBoxShadowBlurriness.Size = new System.Drawing.Size(229, 21);
+ this.comboBoxShadowBlurriness.Size = new System.Drawing.Size(237, 21);
this.comboBoxShadowBlurriness.TabIndex = 30;
//
// numShadowDistance
@@ -1732,7 +1745,7 @@ private void InitializeComponent()
0,
0,
0});
- this.numShadowDistance.Location = new System.Drawing.Point(289, 97);
+ this.numShadowDistance.Location = new System.Drawing.Point(297, 97);
this.numShadowDistance.Maximum = new decimal(new int[] {
9999999,
0,
@@ -1764,7 +1777,7 @@ private void InitializeComponent()
this.comboBoxShadowTextureResolution.FormattingEnabled = true;
this.comboBoxShadowTextureResolution.Location = new System.Drawing.Point(134, 20);
this.comboBoxShadowTextureResolution.Name = "comboBoxShadowTextureResolution";
- this.comboBoxShadowTextureResolution.Size = new System.Drawing.Size(229, 21);
+ this.comboBoxShadowTextureResolution.Size = new System.Drawing.Size(237, 21);
this.comboBoxShadowTextureResolution.TabIndex = 1;
//
// groupBoxWater
@@ -1774,7 +1787,7 @@ private void InitializeComponent()
this.groupBoxWater.Controls.Add(this.checkBoxWaterDisplacement);
this.groupBoxWater.Location = new System.Drawing.Point(196, 89);
this.groupBoxWater.Name = "groupBoxWater";
- this.groupBoxWater.Size = new System.Drawing.Size(182, 44);
+ this.groupBoxWater.Size = new System.Drawing.Size(190, 44);
this.groupBoxWater.TabIndex = 17;
this.groupBoxWater.TabStop = false;
this.groupBoxWater.Text = "Water";
@@ -1802,7 +1815,7 @@ private void InitializeComponent()
this.groupBoxWeather.Controls.Add(this.checkBoxWeatherRainOcclusion);
this.groupBoxWeather.Location = new System.Drawing.Point(196, 139);
this.groupBoxWeather.Name = "groupBoxWeather";
- this.groupBoxWeather.Size = new System.Drawing.Size(182, 88);
+ this.groupBoxWeather.Size = new System.Drawing.Size(190, 88);
this.groupBoxWeather.TabIndex = 18;
this.groupBoxWeather.TabStop = false;
this.groupBoxWeather.Text = "Weather";
@@ -1815,7 +1828,7 @@ private void InitializeComponent()
this.comboBoxAnisotropicFiltering.FormattingEnabled = true;
this.comboBoxAnisotropicFiltering.Location = new System.Drawing.Point(152, 33);
this.comboBoxAnisotropicFiltering.Name = "comboBoxAnisotropicFiltering";
- this.comboBoxAnisotropicFiltering.Size = new System.Drawing.Size(226, 21);
+ this.comboBoxAnisotropicFiltering.Size = new System.Drawing.Size(234, 21);
this.comboBoxAnisotropicFiltering.TabIndex = 23;
//
// comboBoxAntiAliasing
@@ -1826,7 +1839,7 @@ private void InitializeComponent()
this.comboBoxAntiAliasing.FormattingEnabled = true;
this.comboBoxAntiAliasing.Location = new System.Drawing.Point(152, 6);
this.comboBoxAntiAliasing.Name = "comboBoxAntiAliasing";
- this.comboBoxAntiAliasing.Size = new System.Drawing.Size(226, 21);
+ this.comboBoxAntiAliasing.Size = new System.Drawing.Size(234, 21);
this.comboBoxAntiAliasing.TabIndex = 8;
//
// tabPageDisplay
@@ -2015,18 +2028,19 @@ private void InitializeComponent()
this.labelCredentialsExplanation.AutoSize = true;
this.labelCredentialsExplanation.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelCredentialsExplanation.ForeColor = System.Drawing.Color.DimGray;
- this.labelCredentialsExplanation.Location = new System.Drawing.Point(6, 93);
+ this.labelCredentialsExplanation.Location = new System.Drawing.Point(6, 85);
this.labelCredentialsExplanation.Name = "labelCredentialsExplanation";
- this.labelCredentialsExplanation.Size = new System.Drawing.Size(262, 39);
+ this.labelCredentialsExplanation.Size = new System.Drawing.Size(273, 52);
this.labelCredentialsExplanation.TabIndex = 5;
this.labelCredentialsExplanation.Text = "Your credentials are saved into Fallout76Custom.ini\r\nThis way, you don\'t have to " +
- "login if you start Fallout 76\r\nwithout the launcher.";
+ "login if you start Fallout 76\r\nwithout the launcher.\r\nMight only work if the gam" +
+ "e is installed via Bethesda.net.";
//
// textBoxPassword
//
this.textBoxPassword.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.textBoxPassword.Location = new System.Drawing.Point(92, 47);
+ this.textBoxPassword.Location = new System.Drawing.Point(92, 41);
this.textBoxPassword.Name = "textBoxPassword";
this.textBoxPassword.PasswordChar = '•';
this.textBoxPassword.Size = new System.Drawing.Size(272, 20);
@@ -2037,7 +2051,7 @@ private void InitializeComponent()
//
this.textBoxUserName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.textBoxUserName.Location = new System.Drawing.Point(92, 22);
+ this.textBoxUserName.Location = new System.Drawing.Point(92, 16);
this.textBoxUserName.Name = "textBoxUserName";
this.textBoxUserName.Size = new System.Drawing.Size(272, 20);
this.textBoxUserName.TabIndex = 3;
@@ -2045,7 +2059,7 @@ private void InitializeComponent()
// checkBoxShowPassword
//
this.checkBoxShowPassword.AutoSize = true;
- this.checkBoxShowPassword.Location = new System.Drawing.Point(92, 73);
+ this.checkBoxShowPassword.Location = new System.Drawing.Point(92, 67);
this.checkBoxShowPassword.Name = "checkBoxShowPassword";
this.checkBoxShowPassword.Size = new System.Drawing.Size(101, 17);
this.checkBoxShowPassword.TabIndex = 2;
@@ -2056,7 +2070,7 @@ private void InitializeComponent()
// labelPassword
//
this.labelPassword.AutoSize = true;
- this.labelPassword.Location = new System.Drawing.Point(6, 50);
+ this.labelPassword.Location = new System.Drawing.Point(6, 44);
this.labelPassword.Name = "labelPassword";
this.labelPassword.Size = new System.Drawing.Size(56, 13);
this.labelPassword.TabIndex = 1;
@@ -2065,7 +2079,7 @@ private void InitializeComponent()
// labelUserName
//
this.labelUserName.AutoSize = true;
- this.labelUserName.Location = new System.Drawing.Point(6, 25);
+ this.labelUserName.Location = new System.Drawing.Point(6, 19);
this.labelUserName.Name = "labelUserName";
this.labelUserName.Size = new System.Drawing.Size(61, 13);
this.labelUserName.TabIndex = 0;
@@ -2105,20 +2119,76 @@ private void InitializeComponent()
//
this.groupBoxGameEdition.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBoxGameEdition.Controls.Add(this.pictureBoxMSStore);
+ this.groupBoxGameEdition.Controls.Add(this.pictureBoxSteam);
+ this.groupBoxGameEdition.Controls.Add(this.pictureBoxBethesdaNetPTS);
+ this.groupBoxGameEdition.Controls.Add(this.pictureBoxBethesdaNet);
+ this.groupBoxGameEdition.Controls.Add(this.radioButtonEditionMSStore);
this.groupBoxGameEdition.Controls.Add(this.radioButtonEditionBethesdaNetPTS);
this.groupBoxGameEdition.Controls.Add(this.radioButtonEditionSteam);
this.groupBoxGameEdition.Controls.Add(this.radioButtonEditionBethesdaNet);
this.groupBoxGameEdition.Location = new System.Drawing.Point(6, 123);
this.groupBoxGameEdition.Name = "groupBoxGameEdition";
- this.groupBoxGameEdition.Size = new System.Drawing.Size(376, 93);
+ this.groupBoxGameEdition.Size = new System.Drawing.Size(383, 144);
this.groupBoxGameEdition.TabIndex = 12;
this.groupBoxGameEdition.TabStop = false;
this.groupBoxGameEdition.Text = "Game edition";
//
+ // pictureBoxMSStore
+ //
+ this.pictureBoxMSStore.BackColor = System.Drawing.Color.Transparent;
+ this.pictureBoxMSStore.Image = global::Fo76ini.Properties.Resources.msstore_24px;
+ this.pictureBoxMSStore.Location = new System.Drawing.Point(11, 109);
+ this.pictureBoxMSStore.Name = "pictureBoxMSStore";
+ this.pictureBoxMSStore.Size = new System.Drawing.Size(24, 24);
+ this.pictureBoxMSStore.TabIndex = 29;
+ this.pictureBoxMSStore.TabStop = false;
+ //
+ // pictureBoxSteam
+ //
+ this.pictureBoxSteam.BackColor = System.Drawing.Color.Transparent;
+ this.pictureBoxSteam.Image = global::Fo76ini.Properties.Resources.steam_24px;
+ this.pictureBoxSteam.Location = new System.Drawing.Point(11, 79);
+ this.pictureBoxSteam.Name = "pictureBoxSteam";
+ this.pictureBoxSteam.Size = new System.Drawing.Size(24, 24);
+ this.pictureBoxSteam.TabIndex = 28;
+ this.pictureBoxSteam.TabStop = false;
+ //
+ // pictureBoxBethesdaNetPTS
+ //
+ this.pictureBoxBethesdaNetPTS.BackColor = System.Drawing.Color.Transparent;
+ this.pictureBoxBethesdaNetPTS.Image = global::Fo76ini.Properties.Resources.bethesda_24px;
+ this.pictureBoxBethesdaNetPTS.Location = new System.Drawing.Point(11, 49);
+ this.pictureBoxBethesdaNetPTS.Name = "pictureBoxBethesdaNetPTS";
+ this.pictureBoxBethesdaNetPTS.Size = new System.Drawing.Size(24, 24);
+ this.pictureBoxBethesdaNetPTS.TabIndex = 27;
+ this.pictureBoxBethesdaNetPTS.TabStop = false;
+ //
+ // pictureBoxBethesdaNet
+ //
+ this.pictureBoxBethesdaNet.BackColor = System.Drawing.Color.Transparent;
+ this.pictureBoxBethesdaNet.Image = global::Fo76ini.Properties.Resources.bethesda_24px;
+ this.pictureBoxBethesdaNet.Location = new System.Drawing.Point(11, 19);
+ this.pictureBoxBethesdaNet.Name = "pictureBoxBethesdaNet";
+ this.pictureBoxBethesdaNet.Size = new System.Drawing.Size(24, 24);
+ this.pictureBoxBethesdaNet.TabIndex = 26;
+ this.pictureBoxBethesdaNet.TabStop = false;
+ //
+ // radioButtonEditionMSStore
+ //
+ this.radioButtonEditionMSStore.AutoSize = true;
+ this.radioButtonEditionMSStore.Location = new System.Drawing.Point(43, 112);
+ this.radioButtonEditionMSStore.Name = "radioButtonEditionMSStore";
+ this.radioButtonEditionMSStore.Size = new System.Drawing.Size(188, 17);
+ this.radioButtonEditionMSStore.TabIndex = 3;
+ this.radioButtonEditionMSStore.Text = "Microsoft Store / Xbox Game Pass";
+ this.radioButtonEditionMSStore.UseVisualStyleBackColor = true;
+ this.radioButtonEditionMSStore.CheckedChanged += new System.EventHandler(this.radioButtonEditionMSStore_CheckedChanged);
+ //
// radioButtonEditionBethesdaNetPTS
//
this.radioButtonEditionBethesdaNetPTS.AutoSize = true;
- this.radioButtonEditionBethesdaNetPTS.Location = new System.Drawing.Point(10, 41);
+ this.radioButtonEditionBethesdaNetPTS.Location = new System.Drawing.Point(43, 52);
this.radioButtonEditionBethesdaNetPTS.Name = "radioButtonEditionBethesdaNetPTS";
this.radioButtonEditionBethesdaNetPTS.Size = new System.Drawing.Size(118, 17);
this.radioButtonEditionBethesdaNetPTS.TabIndex = 2;
@@ -2129,7 +2199,7 @@ private void InitializeComponent()
// radioButtonEditionSteam
//
this.radioButtonEditionSteam.AutoSize = true;
- this.radioButtonEditionSteam.Location = new System.Drawing.Point(10, 64);
+ this.radioButtonEditionSteam.Location = new System.Drawing.Point(43, 82);
this.radioButtonEditionSteam.Name = "radioButtonEditionSteam";
this.radioButtonEditionSteam.Size = new System.Drawing.Size(55, 17);
this.radioButtonEditionSteam.TabIndex = 1;
@@ -2140,7 +2210,7 @@ private void InitializeComponent()
// radioButtonEditionBethesdaNet
//
this.radioButtonEditionBethesdaNet.AutoSize = true;
- this.radioButtonEditionBethesdaNet.Location = new System.Drawing.Point(10, 18);
+ this.radioButtonEditionBethesdaNet.Location = new System.Drawing.Point(43, 22);
this.radioButtonEditionBethesdaNet.Name = "radioButtonEditionBethesdaNet";
this.radioButtonEditionBethesdaNet.Size = new System.Drawing.Size(88, 17);
this.radioButtonEditionBethesdaNet.TabIndex = 0;
@@ -2150,6 +2220,8 @@ private void InitializeComponent()
//
// tabPageInfo
//
+ this.tabPageInfo.Controls.Add(this.labelGameEdition);
+ this.tabPageInfo.Controls.Add(this.pictureBoxGameEdition);
this.tabPageInfo.Controls.Add(this.groupBoxUpdate);
this.tabPageInfo.Controls.Add(this.pictureBox1);
this.tabPageInfo.Controls.Add(this.pictureBox2);
@@ -2169,6 +2241,30 @@ private void InitializeComponent()
this.tabPageInfo.Text = "Info";
this.tabPageInfo.UseVisualStyleBackColor = true;
//
+ // labelGameEdition
+ //
+ this.labelGameEdition.BackColor = System.Drawing.Color.Black;
+ this.labelGameEdition.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.labelGameEdition.ForeColor = System.Drawing.Color.White;
+ this.labelGameEdition.Location = new System.Drawing.Point(0, 434);
+ this.labelGameEdition.Name = "labelGameEdition";
+ this.labelGameEdition.Size = new System.Drawing.Size(73, 36);
+ this.labelGameEdition.TabIndex = 22;
+ this.labelGameEdition.Text = "Unknown";
+ this.labelGameEdition.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ //
+ // pictureBoxGameEdition
+ //
+ this.pictureBoxGameEdition.BackColor = System.Drawing.Color.Black;
+ this.pictureBoxGameEdition.Image = global::Fo76ini.Properties.Resources.question_mark;
+ this.pictureBoxGameEdition.Location = new System.Drawing.Point(6, 367);
+ this.pictureBoxGameEdition.Name = "pictureBoxGameEdition";
+ this.pictureBoxGameEdition.Size = new System.Drawing.Size(60, 60);
+ this.pictureBoxGameEdition.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+ this.pictureBoxGameEdition.TabIndex = 21;
+ this.pictureBoxGameEdition.TabStop = false;
+ this.pictureBoxGameEdition.Click += new System.EventHandler(this.pictureBoxGameEdition_Click);
+ //
// groupBoxUpdate
//
this.groupBoxUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
@@ -2176,7 +2272,7 @@ private void InitializeComponent()
this.groupBoxUpdate.Controls.Add(this.labelNewVersion);
this.groupBoxUpdate.Controls.Add(this.buttonUpdateNow);
this.groupBoxUpdate.Controls.Add(this.linkLabelManualDownloadPage);
- this.groupBoxUpdate.Location = new System.Drawing.Point(93, 215);
+ this.groupBoxUpdate.Location = new System.Drawing.Point(93, 367);
this.groupBoxUpdate.Name = "groupBoxUpdate";
this.groupBoxUpdate.Size = new System.Drawing.Size(279, 94);
this.groupBoxUpdate.TabIndex = 20;
@@ -2271,9 +2367,10 @@ private void InitializeComponent()
// labelConfigVersion
//
this.labelConfigVersion.AutoSize = true;
+ this.labelConfigVersion.Font = new System.Drawing.Font("Microsoft YaHei", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelConfigVersion.Location = new System.Drawing.Point(178, 128);
this.labelConfigVersion.Name = "labelConfigVersion";
- this.labelConfigVersion.Size = new System.Drawing.Size(13, 13);
+ this.labelConfigVersion.Size = new System.Drawing.Size(13, 16);
this.labelConfigVersion.TabIndex = 9;
this.labelConfigVersion.Text = "?";
//
@@ -2367,16 +2464,28 @@ private void InitializeComponent()
//
this.groupBoxLaunchOptions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBoxLaunchOptions.Controls.Add(this.labelLaunchOptionMSStoreNotice);
this.groupBoxLaunchOptions.Controls.Add(this.labelLaunchOptionTip);
this.groupBoxLaunchOptions.Controls.Add(this.radioButtonLaunchViaExecutable);
this.groupBoxLaunchOptions.Controls.Add(this.radioButtonLaunchViaLink);
- this.groupBoxLaunchOptions.Location = new System.Drawing.Point(6, 391);
+ this.groupBoxLaunchOptions.Location = new System.Drawing.Point(6, 446);
this.groupBoxLaunchOptions.Name = "groupBoxLaunchOptions";
- this.groupBoxLaunchOptions.Size = new System.Drawing.Size(376, 93);
+ this.groupBoxLaunchOptions.Size = new System.Drawing.Size(383, 93);
this.groupBoxLaunchOptions.TabIndex = 25;
this.groupBoxLaunchOptions.TabStop = false;
this.groupBoxLaunchOptions.Text = "Launch options";
//
+ // labelLaunchOptionMSStoreNotice
+ //
+ this.labelLaunchOptionMSStoreNotice.AutoSize = true;
+ this.labelLaunchOptionMSStoreNotice.ForeColor = System.Drawing.Color.Red;
+ this.labelLaunchOptionMSStoreNotice.Location = new System.Drawing.Point(12, 67);
+ this.labelLaunchOptionMSStoreNotice.Name = "labelLaunchOptionMSStoreNotice";
+ this.labelLaunchOptionMSStoreNotice.Size = new System.Drawing.Size(344, 13);
+ this.labelLaunchOptionMSStoreNotice.TabIndex = 3;
+ this.labelLaunchOptionMSStoreNotice.Text = "Fallout 76 cannot be run directly, if installed through the Microsoft Store.";
+ this.labelLaunchOptionMSStoreNotice.Visible = false;
+ //
// labelLaunchOptionTip
//
this.labelLaunchOptionTip.AutoSize = true;
@@ -2405,10 +2514,10 @@ private void InitializeComponent()
this.radioButtonLaunchViaLink.AutoSize = true;
this.radioButtonLaunchViaLink.Location = new System.Drawing.Point(10, 20);
this.radioButtonLaunchViaLink.Name = "radioButtonLaunchViaLink";
- this.radioButtonLaunchViaLink.Size = new System.Drawing.Size(261, 17);
+ this.radioButtonLaunchViaLink.Size = new System.Drawing.Size(316, 17);
this.radioButtonLaunchViaLink.TabIndex = 0;
this.radioButtonLaunchViaLink.TabStop = true;
- this.radioButtonLaunchViaLink.Text = "Launch via Steam / Bethesda.net (recommended)";
+ this.radioButtonLaunchViaLink.Text = "Launch via Steam / Bethesda.net / MS Store (recommended)";
this.radioButtonLaunchViaLink.UseVisualStyleBackColor = true;
//
// groupBoxGamePaths
@@ -2418,9 +2527,9 @@ private void InitializeComponent()
this.groupBoxGamePaths.Controls.Add(this.labelGamePath);
this.groupBoxGamePaths.Controls.Add(this.textBoxGamePath);
this.groupBoxGamePaths.Controls.Add(this.buttonPickGamePath);
- this.groupBoxGamePaths.Location = new System.Drawing.Point(6, 218);
+ this.groupBoxGamePaths.Location = new System.Drawing.Point(6, 273);
this.groupBoxGamePaths.Name = "groupBoxGamePaths";
- this.groupBoxGamePaths.Size = new System.Drawing.Size(376, 45);
+ this.groupBoxGamePaths.Size = new System.Drawing.Size(383, 45);
this.groupBoxGamePaths.TabIndex = 24;
this.groupBoxGamePaths.TabStop = false;
this.groupBoxGamePaths.Text = "Paths";
@@ -2440,14 +2549,14 @@ private void InitializeComponent()
| System.Windows.Forms.AnchorStyles.Right)));
this.textBoxGamePath.Location = new System.Drawing.Point(111, 16);
this.textBoxGamePath.Name = "textBoxGamePath";
- this.textBoxGamePath.Size = new System.Drawing.Size(224, 20);
+ this.textBoxGamePath.Size = new System.Drawing.Size(231, 20);
this.textBoxGamePath.TabIndex = 18;
this.textBoxGamePath.TextChanged += new System.EventHandler(this.textBoxGamePath_TextChanged);
//
// buttonPickGamePath
//
this.buttonPickGamePath.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.buttonPickGamePath.Location = new System.Drawing.Point(341, 14);
+ this.buttonPickGamePath.Location = new System.Drawing.Point(348, 14);
this.buttonPickGamePath.Name = "buttonPickGamePath";
this.buttonPickGamePath.Size = new System.Drawing.Size(28, 23);
this.buttonPickGamePath.TabIndex = 19;
@@ -2459,9 +2568,9 @@ private void InitializeComponent()
//
this.buttonForceUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.buttonForceUpdate.Location = new System.Drawing.Point(6, 628);
+ this.buttonForceUpdate.Location = new System.Drawing.Point(6, 683);
this.buttonForceUpdate.Name = "buttonForceUpdate";
- this.buttonForceUpdate.Size = new System.Drawing.Size(376, 23);
+ this.buttonForceUpdate.Size = new System.Drawing.Size(383, 23);
this.buttonForceUpdate.TabIndex = 23;
this.buttonForceUpdate.Text = "Force auto-update";
this.buttonForceUpdate.UseVisualStyleBackColor = true;
@@ -2476,9 +2585,9 @@ private void InitializeComponent()
this.groupBoxBehavior.Controls.Add(this.checkBoxQuitOnGameLaunch);
this.groupBoxBehavior.Controls.Add(this.checkBoxSkipBackupQuestion);
this.groupBoxBehavior.Controls.Add(this.checkBoxAutoApply);
- this.groupBoxBehavior.Location = new System.Drawing.Point(6, 490);
+ this.groupBoxBehavior.Location = new System.Drawing.Point(6, 545);
this.groupBoxBehavior.Name = "groupBoxBehavior";
- this.groupBoxBehavior.Size = new System.Drawing.Size(376, 132);
+ this.groupBoxBehavior.Size = new System.Drawing.Size(383, 132);
this.groupBoxBehavior.TabIndex = 22;
this.groupBoxBehavior.TabStop = false;
this.groupBoxBehavior.Text = "Behavior";
@@ -2493,7 +2602,7 @@ private void InitializeComponent()
this.groupBoxLocalization.Controls.Add(this.comboBoxLanguage);
this.groupBoxLocalization.Location = new System.Drawing.Point(6, 6);
this.groupBoxLocalization.Name = "groupBoxLocalization";
- this.groupBoxLocalization.Size = new System.Drawing.Size(376, 111);
+ this.groupBoxLocalization.Size = new System.Drawing.Size(383, 111);
this.groupBoxLocalization.TabIndex = 21;
this.groupBoxLocalization.TabStop = false;
this.groupBoxLocalization.Text = "Localization";
@@ -2523,7 +2632,7 @@ private void InitializeComponent()
| System.Windows.Forms.AnchorStyles.Right)));
this.buttonDownloadLanguages.Location = new System.Drawing.Point(98, 49);
this.buttonDownloadLanguages.Name = "buttonDownloadLanguages";
- this.buttonDownloadLanguages.Size = new System.Drawing.Size(271, 23);
+ this.buttonDownloadLanguages.Size = new System.Drawing.Size(278, 23);
this.buttonDownloadLanguages.TabIndex = 20;
this.buttonDownloadLanguages.Text = "Download / update language files";
this.buttonDownloadLanguages.UseVisualStyleBackColor = true;
@@ -2537,7 +2646,7 @@ private void InitializeComponent()
this.comboBoxLanguage.FormattingEnabled = true;
this.comboBoxLanguage.Location = new System.Drawing.Point(98, 22);
this.comboBoxLanguage.Name = "comboBoxLanguage";
- this.comboBoxLanguage.Size = new System.Drawing.Size(271, 21);
+ this.comboBoxLanguage.Size = new System.Drawing.Size(278, 21);
this.comboBoxLanguage.TabIndex = 17;
this.comboBoxLanguage.SelectedIndexChanged += new System.EventHandler(this.comboBoxLanguage_SelectedIndexChanged);
//
@@ -2549,9 +2658,9 @@ private void InitializeComponent()
this.groupBoxOptions.Controls.Add(this.checkBoxMultipleGameEditionsUsed);
this.groupBoxOptions.Controls.Add(this.checkBoxNWMode);
this.groupBoxOptions.Controls.Add(this.checkBoxReadOnly);
- this.groupBoxOptions.Location = new System.Drawing.Point(6, 269);
+ this.groupBoxOptions.Location = new System.Drawing.Point(6, 324);
this.groupBoxOptions.Name = "groupBoxOptions";
- this.groupBoxOptions.Size = new System.Drawing.Size(376, 116);
+ this.groupBoxOptions.Size = new System.Drawing.Size(383, 116);
this.groupBoxOptions.TabIndex = 15;
this.groupBoxOptions.TabStop = false;
this.groupBoxOptions.Text = "Options";
@@ -2560,9 +2669,9 @@ private void InitializeComponent()
//
this.buttonFixIssuesEarlierVersion.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.buttonFixIssuesEarlierVersion.Location = new System.Drawing.Point(6, 657);
+ this.buttonFixIssuesEarlierVersion.Location = new System.Drawing.Point(6, 712);
this.buttonFixIssuesEarlierVersion.Name = "buttonFixIssuesEarlierVersion";
- this.buttonFixIssuesEarlierVersion.Size = new System.Drawing.Size(376, 23);
+ this.buttonFixIssuesEarlierVersion.Size = new System.Drawing.Size(383, 23);
this.buttonFixIssuesEarlierVersion.TabIndex = 19;
this.buttonFixIssuesEarlierVersion.Text = "Fix settings from v1.3.1 and earlier";
this.buttonFixIssuesEarlierVersion.UseVisualStyleBackColor = true;
@@ -2576,7 +2685,8 @@ private void InitializeComponent()
// openFileDialogGamePath
//
this.openFileDialogGamePath.FileName = "Fallout76.exe";
- this.openFileDialogGamePath.Filter = "Fallout76.exe|Fallout76.exe";
+ this.openFileDialogGamePath.Filter = "Fallout 76 executable|Fallout76.exe;Project76_GamePass.exe";
+ this.openFileDialogGamePath.FilterIndex = 2;
//
// Form1
//
@@ -2655,8 +2765,13 @@ private void InitializeComponent()
this.groupBoxMainMenu.PerformLayout();
this.groupBoxGameEdition.ResumeLayout(false);
this.groupBoxGameEdition.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxMSStore)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxSteam)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxBethesdaNetPTS)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxBethesdaNet)).EndInit();
this.tabPageInfo.ResumeLayout(false);
this.tabPageInfo.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxGameEdition)).EndInit();
this.groupBoxUpdate.ResumeLayout(false);
this.groupBoxUpdate.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
@@ -2831,7 +2946,6 @@ private void InitializeComponent()
private System.Windows.Forms.Button buttonFixIssuesEarlierVersion;
private System.Windows.Forms.Label labelLanguage;
private System.Windows.Forms.ComboBox comboBoxLanguage;
- private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.PictureBox pictureBox2;
private System.Windows.Forms.CheckBox checkBoxAutoApply;
private System.Windows.Forms.CheckBox checkBoxSkipBackupQuestion;
@@ -2856,6 +2970,15 @@ private void InitializeComponent()
private System.Windows.Forms.Label labelLaunchOptionTip;
private System.Windows.Forms.OpenFileDialog openFileDialogGamePath;
private System.Windows.Forms.CheckBox checkBoxDenyNTFSWritePermission;
+ private System.Windows.Forms.RadioButton radioButtonEditionMSStore;
+ private System.Windows.Forms.PictureBox pictureBoxGameEdition;
+ private System.Windows.Forms.PictureBox pictureBoxBethesdaNet;
+ private System.Windows.Forms.PictureBox pictureBoxMSStore;
+ private System.Windows.Forms.PictureBox pictureBoxSteam;
+ private System.Windows.Forms.PictureBox pictureBoxBethesdaNetPTS;
+ private System.Windows.Forms.Label labelGameEdition;
+ private System.Windows.Forms.PictureBox pictureBox1;
+ private System.Windows.Forms.Label labelLaunchOptionMSStoreNotice;
}
}
diff --git a/Fo76ini/Form1.Language.cs b/Fo76ini/Form1.Language.cs
index 3f0ab0a..18258f5 100644
--- a/Fo76ini/Form1.Language.cs
+++ b/Fo76ini/Form1.Language.cs
@@ -101,7 +101,8 @@ private int SerializeControlText(XElement element, ToolTip toolTip, Control cont
subControl.Name != "labelTranslationAuthor" &&
subControl.Name != "groupBoxWIP" &&
subControl.Name != "labelNewVersion" &&
- subControl.Name != "labelModsDeploy")
+ subControl.Name != "labelModsDeploy" &&
+ subControl.Name != "labelGameEdition")
{
// Get XElement name:
String type = "Element";
@@ -313,7 +314,7 @@ private void SerializeXMLFile(String name = null, String iso = null, String auth
if (iso == null)
iso = this.languageISOs[index];
if (author == null)
- author = this.labelAuthorName.Text.Trim();
+ author = this.labelTranslationAuthor.Text.Trim();
if (fileName == null)
fileName = iso + ".template.xml";
@@ -366,43 +367,6 @@ private void SerializeXMLFile(String name = null, String iso = null, String auth
private void GenerateEnglishXMLFile()
{
SerializeXMLFile("English (USA)", "en-US", "", "en-US.xml");
- /*// Create document and root:
- XDocument xmlDoc = new XDocument();
- XElement xmlRoot = new XElement("Language");
- xmlRoot.Add(new XAttribute("name", "English (USA)"));
- xmlRoot.Add(new XAttribute("iso", "en-US"));
- xmlDoc.AddFirst(new XComment("\n This file is auto-generated on program start.\n Therefore any changes made to this file will be overriden.\n You can use this as a template for your own translation, though.\n"));
- xmlDoc.Add(xmlRoot);
-
- // Serialize miscellaneous strings:
- XElement xmlStrings = new XElement("Strings");
- foreach (KeyValuePair pair in Translation.localizedStrings)
- xmlStrings.Add(new XElement("String",
- new XAttribute("text", pair.Value),
- new XAttribute("id", pair.Key)));
- xmlRoot.Add(xmlStrings);
-
- // Create dropdowns:
- XElement xmlDropDowns = new XElement("Dropdowns");
- foreach (KeyValuePair pair in this.comboBoxes)
- SerializeDropDownOptions(xmlDropDowns, pair.Key, pair.Value.Items);
- xmlRoot.Add(xmlDropDowns);
-
- // Create messageboxes:
- xmlRoot.Add(MsgBox.Serialize());
-
- // Serialize all control elements:
- XElement xmlForm1 = new XElement("Form1", new XAttribute("title", this.Text));
- XElement xmlFormMods = new XElement("FormMods", new XAttribute("title", this.formMods.Text));
- SerializeControlText(xmlForm1, this.toolTip, this);
- SerializeControlText(xmlFormMods, this.formMods.toolTip, this.formMods);
- xmlRoot.Add(xmlForm1);
- xmlRoot.Add(xmlFormMods);
-
- // Save it:
- xmlDoc.Save(Path.Combine(languageFolder, "en-US.xml"));
- //using (XmlTextWriter writer = new XmlTextWriter(Path.Combine(languageFolder, "en-US.xml"), new UTF8Encoding(false)))
- // xmlDoc.Save(writer); */
}
private void ChangeLanguage(string langFile)
diff --git a/Fo76ini/Form1.cs b/Fo76ini/Form1.cs
index 0f9b7b8..f5ea9ae 100644
--- a/Fo76ini/Form1.cs
+++ b/Fo76ini/Form1.cs
@@ -15,7 +15,7 @@ namespace Fo76ini
{
public partial class Form1 : Form
{
- public const String VERSION = "1.6.3";
+ public const String VERSION = "1.7.0";
protected System.Globalization.CultureInfo enUS = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");
@@ -161,7 +161,9 @@ private void Form1_Load(object sender, EventArgs e)
// Load *.ini files:
try
{
+ IniFiles.Instance.GameEdition = (GameEdition)IniFiles.Instance.GetInt(IniFile.Config, "Preferences", "uGameEdition", 0);
IniFiles.Instance.LoadGameInis();
+ IniFiles.Instance.Set(IniFile.Config, "Preferences", "uGameEdition", (int)IniFiles.Instance.GameEdition);
}
catch (IniParser.Exceptions.ParsingException exc)
{
@@ -171,7 +173,7 @@ private void Form1_Load(object sender, EventArgs e)
}
catch (FileNotFoundException exc)
{
- MsgBox.Get("runGameToGenerateINI").Show(MessageBoxButtons.OK, MessageBoxIcon.Error);
+ MsgBox.Get("runGameToGenerateINI").FormatTitle(IniFiles.Instance.GetIniName(IniFile.F76), IniFiles.Instance.GetIniName(IniFile.F76Prefs)).Show(MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
return;
}
@@ -300,8 +302,8 @@ private void AddAllEventHandler()
// Game Edition
uiLoader.LinkList(
- new RadioButton[] { this.radioButtonEditionBethesdaNet, this.radioButtonEditionSteam, this.radioButtonEditionBethesdaNetPTS },
- new String[] { "1", "2", "3" },
+ new RadioButton[] { this.radioButtonEditionBethesdaNet, this.radioButtonEditionSteam, this.radioButtonEditionBethesdaNetPTS, this.radioButtonEditionMSStore },
+ new String[] { "1", "2", "3", "4" },
IniFile.Config, "Preferences", "uGameEdition",
"0"
);
@@ -831,6 +833,9 @@ private void buttonLaunchGame_Click(object sender, EventArgs e)
case (uint)GameEdition.BethesdaNetPTS:
process = "bethesdanet://run/57";
break;
+ case (uint)GameEdition.MSStore:
+ process = "ms-windows-store://pdp/?ProductId=9nkgnmnk3k3z";
+ break;
default:
MsgBox.Get("chooseGameEdition").Show(MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
@@ -843,15 +848,26 @@ private void buttonLaunchGame_Click(object sender, EventArgs e)
MsgBox.Get("modsGamePathNotSet").Show(MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
- process = Path.GetFullPath(Path.Combine(ManagedMods.Instance.GamePath, "Fallout76.exe"));
+ process = Path.GetFullPath(Path.Combine(ManagedMods.Instance.GamePath, ManagedMods.Instance.GameEdition == GameEdition.MSStore ? "Project76_GamePass.exe" : "Fallout76.exe"));
}
if (process != null)
{
if (IniFiles.Instance.GetBool(IniFile.Config, "Preferences", "bAutoApply", false))
ApplyChanges();
- System.Diagnostics.Process.Start(process);
- if (IniFiles.Instance.GetBool(IniFile.Config, "Preferences", "bQuitOnLaunch", false))
- this.Close();
+ try
+ {
+ System.Diagnostics.Process.Start(process);
+ if (IniFiles.Instance.GetBool(IniFile.Config, "Preferences", "bQuitOnLaunch", false))
+ this.Close();
+ }
+ catch (Exception ex)
+ {
+ if (ManagedMods.Instance.GameEdition == GameEdition.MSStore)
+ {
+ MsgBox.Get("msstoreRunExecutableFailed").FormatTitle(ex.Message).Show(MessageBoxIcon.Error);
+ return;
+ }
+ }
}
}
@@ -924,31 +940,102 @@ private void buttonFixIssuesEarlierVersion_Click(object sender, EventArgs e)
* Game edition
*/
- private void radioButtonEditionSteam_CheckedChanged(object sender, EventArgs e)
+ private void ChangeGameEdition(GameEdition edition)
{
- if (this.radioButtonEditionSteam.Checked)
+ bool restartRequired = ManagedMods.Instance.GameEdition != GameEdition.Unknown && ((ManagedMods.Instance.GameEdition == GameEdition.MSStore && edition != GameEdition.MSStore) || (ManagedMods.Instance.GameEdition != GameEdition.MSStore && edition == GameEdition.MSStore));
+
+ if (restartRequired && MsgBox.Get("msstoreRestartRequired").Show(MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
+ {
+ switch (ManagedMods.Instance.GameEdition)
+ {
+ case GameEdition.Steam:
+ this.radioButtonEditionSteam.Checked = true;
+ break;
+ case GameEdition.BethesdaNet:
+ this.radioButtonEditionBethesdaNet.Checked = true;
+ break;
+ case GameEdition.BethesdaNetPTS:
+ this.radioButtonEditionBethesdaNetPTS.Checked = true;
+ break;
+ case GameEdition.MSStore:
+ this.radioButtonEditionMSStore.Checked = true;
+ break;
+ }
+ return;
+ }
+
+ // Change image
+ switch (edition)
+ {
+ case GameEdition.Steam:
+ this.pictureBoxGameEdition.Image = Properties.Resources.steam;
+ this.labelGameEdition.Text = "Steam";
+ break;
+ case GameEdition.BethesdaNet:
+ this.pictureBoxGameEdition.Image = Properties.Resources.bethesda;
+ this.labelGameEdition.Text = "Bethesda";
+ break;
+ case GameEdition.BethesdaNetPTS:
+ this.pictureBoxGameEdition.Image = Properties.Resources.bethesda_pts;
+ this.labelGameEdition.Text = "Bethesda\n(PTS)";
+ break;
+ case GameEdition.MSStore:
+ this.pictureBoxGameEdition.Image = Properties.Resources.msstore;
+ this.labelGameEdition.Text = "Microsoft\nStore";
+ break;
+ default:
+ this.pictureBoxGameEdition.Image = Properties.Resources.question_mark;
+ this.labelGameEdition.Text = "Unknown";
+ break;
+ }
+
+ // Currently, no way to launch game executable, if installed via MS Store:
+ /*if (edition == GameEdition.MSStore)
+ {
+ IniFiles.Instance.Set(IniFile.Config, "Preferences", "uLaunchOption", 1);
+
+ this.radioButtonLaunchViaExecutable.Checked = false;
+ this.radioButtonLaunchViaExecutable.Enabled = false;
+ this.radioButtonLaunchViaLink.Checked = true;
+ }
+ else
+ {
+ this.radioButtonLaunchViaExecutable.Enabled = true;
+ }*/
+
+ IniFiles.Instance.ChangeGameEdition(edition);
+ this.formMods.ChangeGameEdition(edition);
+ this.textBoxGamePath.Text = ManagedMods.Instance.GamePath;
+
+ if (restartRequired)
{
- this.formMods.ChangeGameEdition(GameEdition.Steam);
- this.textBoxGamePath.Text = ManagedMods.Instance.GamePath;
+ IniFiles.Instance.SaveWindowState("Form1", this);
+ Application.Restart();
}
}
+ private void radioButtonEditionSteam_CheckedChanged(object sender, EventArgs e)
+ {
+ if (this.radioButtonEditionSteam.Checked)
+ ChangeGameEdition(GameEdition.Steam);
+ }
+
private void radioButtonEditionBethesdaNet_CheckedChanged(object sender, EventArgs e)
{
if (this.radioButtonEditionBethesdaNet.Checked)
- {
- this.formMods.ChangeGameEdition(GameEdition.BethesdaNet);
- this.textBoxGamePath.Text = ManagedMods.Instance.GamePath;
- }
+ ChangeGameEdition(GameEdition.BethesdaNet);
}
private void radioButtonEditionBethesdaNetPTS_CheckedChanged(object sender, EventArgs e)
{
if (this.radioButtonEditionBethesdaNetPTS.Checked)
- {
- this.formMods.ChangeGameEdition(GameEdition.BethesdaNetPTS);
- this.textBoxGamePath.Text = ManagedMods.Instance.GamePath;
- }
+ ChangeGameEdition(GameEdition.BethesdaNetPTS);
+ }
+
+ private void radioButtonEditionMSStore_CheckedChanged(object sender, EventArgs e)
+ {
+ if (this.radioButtonEditionMSStore.Checked)
+ ChangeGameEdition(GameEdition.MSStore);
}
// Nuclear Winter mode
@@ -959,13 +1046,30 @@ private void checkBoxNWMode_CheckedChanged(object sender, EventArgs e)
{
if (MsgBox.ShowID("nwModeEnabledButModsAreDeployed", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
- ManagedMods.Instance.nuclearWinterMode = IniFiles.Instance.nuclearWinterMode;
+ // Disable mods:
+ ManagedMods.Instance.nuclearWinterMode = true;
+ this.formMods.OpenUI();
+ this.formMods.Deploy();
+ }
+ }
+ else if (!IniFiles.Instance.nuclearWinterMode && ManagedMods.Instance.nuclearWinterMode && ManagedMods.Instance.Mods.Count() > 0)
+ {
+ if (MsgBox.ShowID("nwModeDisabledAndModsAreStillDisabled", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
+ {
+ // Enable mods:
+ ManagedMods.Instance.nuclearWinterMode = false;
this.formMods.OpenUI();
this.formMods.Deploy();
}
}
}
+ private void pictureBoxGameEdition_Click(object sender, EventArgs e)
+ {
+ this.tabControl1.SelectTab(this.tabPageSettings);
+ this.groupBoxGameEdition.Focus();
+ }
+
private void checkBoxShowPassword_CheckedChanged(object sender, EventArgs e)
{
// https://stackoverflow.com/questions/8185747/how-can-i-unmask-password-text-box-and-mask-it-back-to-password
@@ -1131,7 +1235,14 @@ private void textBoxGamePath_TextChanged(object sender, EventArgs e)
private void radioButtonLaunchViaExecutable_CheckedChanged(object sender, EventArgs e)
{
- this.labelLaunchOptionTip.Visible = this.radioButtonLaunchViaExecutable.Checked;
+ this.labelLaunchOptionTip.Visible = false;
+ this.labelLaunchOptionMSStoreNotice.Visible = false;
+
+ if (ManagedMods.Instance.GameEdition == GameEdition.BethesdaNet || ManagedMods.Instance.GameEdition == GameEdition.BethesdaNetPTS)
+ this.labelLaunchOptionTip.Visible = this.radioButtonLaunchViaExecutable.Checked;
+
+ else if (ManagedMods.Instance.GameEdition == GameEdition.MSStore)
+ this.labelLaunchOptionMSStoreNotice.Visible = this.radioButtonLaunchViaExecutable.Checked;
}
}
}
diff --git a/Fo76ini/FormMods.Designer.cs b/Fo76ini/FormMods.Designer.cs
index c5f9e53..00734ea 100644
--- a/Fo76ini/FormMods.Designer.cs
+++ b/Fo76ini/FormMods.Designer.cs
@@ -549,9 +549,9 @@ private void InitializeComponent()
this.checkBoxModsUseHardlinks.AutoSize = true;
this.checkBoxModsUseHardlinks.Location = new System.Drawing.Point(6, 42);
this.checkBoxModsUseHardlinks.Name = "checkBoxModsUseHardlinks";
- this.checkBoxModsUseHardlinks.Size = new System.Drawing.Size(327, 17);
+ this.checkBoxModsUseHardlinks.Size = new System.Drawing.Size(258, 17);
this.checkBoxModsUseHardlinks.TabIndex = 1;
- this.checkBoxModsUseHardlinks.Text = "[Experimental] Make hard links instead of copying files manually.";
+ this.checkBoxModsUseHardlinks.Text = "Make hard links instead of copying files manually.";
this.toolTip.SetToolTip(this.checkBoxModsUseHardlinks, "May reduce disk space and deployment time.\r\nDoes not apply to bundled archives.");
this.checkBoxModsUseHardlinks.UseVisualStyleBackColor = true;
this.checkBoxModsUseHardlinks.CheckedChanged += new System.EventHandler(this.checkBoxModsUseHardlinks_CheckedChanged);
@@ -676,8 +676,7 @@ private void InitializeComponent()
//
// openFileDialogGamePath
//
- this.openFileDialogGamePath.FileName = "Fallout76.exe";
- this.openFileDialogGamePath.Filter = "Fallout76.exe|Fallout76.exe";
+ this.openFileDialogGamePath.Filter = "Fallout 76 executable|Fallout76.exe,Project76_GamePass.exe";
//
// panel1
//
diff --git a/Fo76ini/FormMods.resx b/Fo76ini/FormMods.resx
index c0381ac..ba0bdb5 100644
--- a/Fo76ini/FormMods.resx
+++ b/Fo76ini/FormMods.resx
@@ -139,9 +139,6 @@
h+r6rFy4sEMHYIfq+sTbnbmhCbFDdX1mX7AoymZRlM0fKDLmARhb1lLZqDWmAAAAAElFTkSuQmCC
-
- 132, 17
-
327, 17
diff --git a/Fo76ini/IniFiles.cs b/Fo76ini/IniFiles.cs
index a6a37eb..50d7a70 100644
--- a/Fo76ini/IniFiles.cs
+++ b/Fo76ini/IniFiles.cs
@@ -25,7 +25,8 @@ public enum GameEdition
Unknown = 0,
BethesdaNet = 1,
Steam = 2,
- BethesdaNetPTS = 3
+ BethesdaNetPTS = 3,
+ MSStore = 4
}
public class IniFiles
@@ -37,9 +38,9 @@ public class IniFiles
protected IniData fo76CustomData = null;
protected IniData configData = null;
- protected String fo76Path;
+ /*protected String fo76Path;
protected String fo76PrefsPath;
- protected String fo76CustomPath;
+ protected String fo76CustomPath;*/
protected String configPath;
protected DateTime fo76ModTime;
@@ -57,6 +58,8 @@ public class IniFiles
public bool nuclearWinterMode = false;
+ public GameEdition GameEdition;
+
public static IniFiles Instance
{
get
@@ -72,6 +75,69 @@ public static IniFiles Instance
}
}
+ public String GetIniName(IniFile iniFile, GameEdition edition = GameEdition.Unknown)
+ {
+ if (edition == GameEdition.Unknown)
+ edition = this.GameEdition;
+ bool msstore = edition == GameEdition.MSStore;
+ switch (iniFile)
+ {
+ case IniFile.F76:
+ return msstore ? "Project76.ini" : "Fallout76.ini";
+ case IniFile.F76Prefs:
+ return msstore ? "Project76Prefs.ini" : "Fallout76Prefs.ini";
+ case IniFile.F76Custom:
+ return msstore ? "Project76Custom.ini" : "Fallout76Custom.ini";
+ case IniFile.Config:
+ return "QuickConfiguration.ini";
+ }
+ return null;
+ }
+
+ public String GetIniPath(IniFile iniFile, GameEdition edition)
+ {
+ switch (iniFile)
+ {
+ case IniFile.F76:
+ case IniFile.F76Prefs:
+ case IniFile.F76Custom:
+ return Path.Combine(this.iniParentPath, GetIniName(iniFile, edition));
+ case IniFile.Config:
+ return this.configPath;
+ }
+ return null;
+ }
+
+ public String GetIniPath(IniFile iniFile)
+ {
+ switch (iniFile)
+ {
+ case IniFile.F76:
+ case IniFile.F76Prefs:
+ case IniFile.F76Custom:
+ return Path.Combine(this.iniParentPath, GetIniName(iniFile));
+ case IniFile.Config:
+ return this.configPath;
+ }
+ return null;
+ }
+
+ protected IniData GetIniData(IniFile iniFile)
+ {
+ switch (iniFile)
+ {
+ case IniFile.F76:
+ return this.fo76Data;
+ case IniFile.F76Prefs:
+ return this.fo76PrefsData;
+ case IniFile.F76Custom:
+ return this.fo76CustomData;
+ case IniFile.Config:
+ return this.configData;
+ }
+ return null;
+ }
+
private IniFiles()
{
// Get the paths:
@@ -80,9 +146,9 @@ private IniFiles()
@"My Games\Fallout 76\"
);
- this.fo76Path = Path.Combine(this.iniParentPath, "Fallout76.ini");
- this.fo76PrefsPath = Path.Combine(this.iniParentPath, "Fallout76Prefs.ini");
- this.fo76CustomPath = Path.Combine(this.iniParentPath, "Fallout76Custom.ini");
+ /*this.GetIniName(IniFile.F76) = Path.Combine(this.iniParentPath, "Fallout76.ini");
+ this.GetIniName(IniFile.F76Prefs) = Path.Combine(this.iniParentPath, "Fallout76Prefs.ini");
+ this.GetIniName(IniFile.F76Custom) = Path.Combine(this.iniParentPath, "Fallout76Custom.ini");*/
String oldConfigPath = Path.Combine(this.iniParentPath, "QuickConfiguration.ini");
this.configPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Fallout 76 Quick Configuration", "config.ini");
@@ -116,22 +182,39 @@ public void LoadGameInis()
// Parse all INI files, if existing:
// Do Fallout76.ini and Fallout76Prefs.ini exist?
- if (!File.Exists(this.fo76Path) || !File.Exists(this.fo76PrefsPath))
- throw new FileNotFoundException("Fallout76.ini and Fallout76Prefs.ini not found");
+ if (!File.Exists(GetIniPath(IniFile.F76)) || !File.Exists(GetIniPath(IniFile.F76Prefs)))
+ {
+ if (this.GameEdition == GameEdition.MSStore)
+ {
+ // Do Fallout76.ini and Fallout76Prefs.ini exist?
+ if (File.Exists(GetIniPath(IniFile.F76, GameEdition.Steam)) && File.Exists(GetIniPath(IniFile.F76Prefs, GameEdition.Steam)))
+ this.GameEdition = GameEdition.Steam;
+ else
+ throw new FileNotFoundException($"{GetIniName(IniFile.F76)} and {GetIniName(IniFile.F76Prefs)} not found");
+ }
+ else
+ {
+ // Do Project76.ini and Project76Prefs.ini exist?
+ if (File.Exists(GetIniPath(IniFile.F76, GameEdition.MSStore)) && File.Exists(GetIniPath(IniFile.F76Prefs, GameEdition.MSStore)))
+ this.GameEdition = GameEdition.MSStore;
+ else
+ throw new FileNotFoundException($"{GetIniName(IniFile.F76)} and {GetIniName(IniFile.F76Prefs)} not found");
+ }
+ }
// Does Fallout76Custom.ini exist? If not, create it.
- /*if (!File.Exists(this.fo76CustomPath))
- File.CreateText(this.fo76CustomPath).Close();*/
+ /*if (!File.Exists(this.GetIniPath(IniFile.F76Custom)))
+ File.CreateText(this.GetIniPath(IniFile.F76Custom)).Close();*/
// Parse *.ini files:
- this.fo76Data = LoadIni(this.fo76Path, false);
- this.fo76ModTime = File.GetLastWriteTime(this.fo76Path);
- this.fo76PrefsData = LoadIni(this.fo76PrefsPath, false);
- this.fo76PrefsModTime = File.GetLastWriteTime(this.fo76PrefsPath);
- if (File.Exists(this.fo76CustomPath))
- this.fo76CustomData = LoadIni(this.fo76CustomPath, false);
- else if (File.Exists(this.fo76CustomPath + ".nwmodebak"))
- this.fo76CustomData = LoadIni(this.fo76CustomPath + ".nwmodebak", false);
+ this.fo76Data = LoadIni(GetIniPath(IniFile.F76), false);
+ this.fo76ModTime = File.GetLastWriteTime(GetIniPath(IniFile.F76));
+ this.fo76PrefsData = LoadIni(GetIniPath(IniFile.F76Prefs), false);
+ this.fo76PrefsModTime = File.GetLastWriteTime(GetIniPath(IniFile.F76Prefs));
+ if (File.Exists(GetIniPath(IniFile.F76Custom)))
+ this.fo76CustomData = LoadIni(GetIniPath(IniFile.F76Custom), false);
+ else if (File.Exists(GetIniPath(IniFile.F76Custom) + ".nwmodebak"))
+ this.fo76CustomData = LoadIni(GetIniPath(IniFile.F76Custom) + ".nwmodebak", false);
else
this.fo76CustomData = new IniData();
@@ -149,53 +232,66 @@ public bool IsLoaded()
this.configData != null;
}
+ public void ChangeGameEdition(GameEdition edition)
+ {
+ //bool reloadRequired = (this.GameEdition == GameEdition.MSStore && edition != GameEdition.MSStore) || (this.GameEdition != GameEdition.MSStore && edition == GameEdition.MSStore);
+ this.GameEdition = edition;
+ /*if (reloadRequired)
+ LoadGameInis();*/
+ UpdateLastModifiedDates();
+ }
+
public void SaveGameInis(bool readOnly = false)
{
- SaveIni(this.fo76Path, this.fo76Data, readOnly);
- SaveIni(this.fo76PrefsPath, this.fo76PrefsData, readOnly);
+ SaveIni(this.GetIniPath(IniFile.F76), this.fo76Data, readOnly);
+ SaveIni(this.GetIniPath(IniFile.F76Prefs), this.fo76PrefsData, readOnly);
if (this.nuclearWinterMode)
- SaveIni(this.fo76CustomPath + ".nwmodebak", this.fo76CustomData, readOnly);
+ SaveIni(this.GetIniPath(IniFile.F76Custom) + ".nwmodebak", this.fo76CustomData, readOnly);
else
- SaveIni(this.fo76CustomPath, this.fo76CustomData, readOnly);
+ SaveIni(this.GetIniPath(IniFile.F76Custom), this.fo76CustomData, readOnly);
UpdateLastModifiedDates();
}
public void ResolveNWMode()
{
+ SetNTFSWritePermission(true);
if (this.nuclearWinterMode)
{
- if (!File.Exists(this.fo76CustomPath))
+ if (!File.Exists(this.GetIniPath(IniFile.F76Custom)))
return;
- if (!File.Exists(this.fo76CustomPath + ".nwmodebak"))
- File.Copy(this.fo76CustomPath, this.fo76CustomPath + ".nwmodebak");
- Utils.DeleteFile(this.fo76CustomPath);
+ if (!File.Exists(this.GetIniPath(IniFile.F76Custom) + ".nwmodebak"))
+ File.Copy(this.GetIniPath(IniFile.F76Custom), this.GetIniPath(IniFile.F76Custom) + ".nwmodebak");
+ Utils.DeleteFile(this.GetIniPath(IniFile.F76Custom));
}
else
{
- if (!File.Exists(this.fo76CustomPath + ".nwmodebak"))
+ if (!File.Exists(this.GetIniPath(IniFile.F76Custom) + ".nwmodebak"))
return;
- if (!File.Exists(this.fo76CustomPath))
- File.Copy(this.fo76CustomPath + ".nwmodebak", this.fo76CustomPath);
- Utils.DeleteFile(this.fo76CustomPath + ".nwmodebak");
+ if (!File.Exists(this.GetIniPath(IniFile.F76Custom)))
+ File.Copy(this.GetIniPath(IniFile.F76Custom) + ".nwmodebak", this.GetIniPath(IniFile.F76Custom));
+ Utils.DeleteFile(this.GetIniPath(IniFile.F76Custom) + ".nwmodebak");
}
UpdateLastModifiedDates();
+
+ if (this.GetBool(IniFile.Config, "Preferences", "bDenyNTFSWritePermission", false))
+ SetNTFSWritePermission(false);
}
public bool FilesHaveBeenModified()
{
- if (this.fo76ModTime != File.GetLastWriteTime(this.fo76Path))
+ if (this.fo76ModTime != File.GetLastWriteTime(this.GetIniPath(IniFile.F76)))
return true;
- if (this.fo76PrefsModTime != File.GetLastWriteTime(this.fo76PrefsPath))
+ if (this.fo76PrefsModTime != File.GetLastWriteTime(this.GetIniPath(IniFile.F76Prefs)))
return true;
- if (File.Exists(this.fo76CustomPath))
+ if (File.Exists(this.GetIniPath(IniFile.F76Custom)))
{
- if (this.fo76CustomModTime != File.GetLastWriteTime(this.fo76CustomPath))
+ if (this.fo76CustomModTime != File.GetLastWriteTime(this.GetIniPath(IniFile.F76Custom)))
return true;
}
- else if (File.Exists(this.fo76CustomPath + ".nwmodebak"))
+ else if (File.Exists(this.GetIniPath(IniFile.F76Custom) + ".nwmodebak"))
{
- if (this.fo76CustomModTime != File.GetLastWriteTime(this.fo76CustomPath + ".nwmodebak"))
+ if (this.fo76CustomModTime != File.GetLastWriteTime(this.GetIniPath(IniFile.F76Custom) + ".nwmodebak"))
return true;
}
return false;
@@ -203,13 +299,13 @@ public bool FilesHaveBeenModified()
public void UpdateLastModifiedDates()
{
- this.fo76ModTime = File.GetLastWriteTime(this.fo76Path);
- this.fo76PrefsModTime = File.GetLastWriteTime(this.fo76PrefsPath);
+ this.fo76ModTime = File.GetLastWriteTime(this.GetIniPath(IniFile.F76));
+ this.fo76PrefsModTime = File.GetLastWriteTime(this.GetIniPath(IniFile.F76Prefs));
- if (File.Exists(this.fo76CustomPath))
- this.fo76CustomModTime = File.GetLastWriteTime(this.fo76CustomPath);
- else if (File.Exists(this.fo76CustomPath + ".nwmodebak"))
- this.fo76CustomModTime = File.GetLastWriteTime(this.fo76CustomPath + ".nwmodebak");
+ if (File.Exists(this.GetIniPath(IniFile.F76Custom)))
+ this.fo76CustomModTime = File.GetLastWriteTime(this.GetIniPath(IniFile.F76Custom));
+ else if (File.Exists(this.GetIniPath(IniFile.F76Custom) + ".nwmodebak"))
+ this.fo76CustomModTime = File.GetLastWriteTime(this.GetIniPath(IniFile.F76Custom) + ".nwmodebak");
}
public void LoadConfig()
@@ -249,84 +345,35 @@ public void BackupAll(String backupFolder = null)
Directory.CreateDirectory(backupPath);
- if (File.Exists(this.fo76Path))
+ if (File.Exists(this.GetIniPath(IniFile.F76)))
{
tempPath = Path.Combine(backupPath, "Fallout76.ini");
- File.Copy(this.fo76Path, tempPath);
+ File.Copy(this.GetIniPath(IniFile.F76), tempPath);
SetFileReadOnlyAttribute(tempPath, false);
}
- if (File.Exists(this.fo76PrefsPath))
+ if (File.Exists(this.GetIniPath(IniFile.F76Prefs)))
{
tempPath = Path.Combine(backupPath, "Fallout76Prefs.ini");
- File.Copy(this.fo76PrefsPath, tempPath);
+ File.Copy(this.GetIniPath(IniFile.F76Prefs), tempPath);
SetFileReadOnlyAttribute(tempPath, false);
}
- if (File.Exists(this.fo76CustomPath))
+ if (File.Exists(this.GetIniPath(IniFile.F76Custom)))
{
tempPath = Path.Combine(backupPath, "Fallout76Custom.ini");
- File.Copy(this.fo76CustomPath, tempPath);
+ File.Copy(this.GetIniPath(IniFile.F76Custom), tempPath);
SetFileReadOnlyAttribute(tempPath, false);
}
- if (File.Exists(this.fo76CustomPath + ".nwmodebak"))
+ if (File.Exists(this.GetIniPath(IniFile.F76Custom) + ".nwmodebak"))
{
tempPath = Path.Combine(backupPath, "Fallout76Custom.ini.nwmodebak");
- File.Copy(this.fo76CustomPath + ".nwmodebak", tempPath);
+ File.Copy(this.GetIniPath(IniFile.F76Custom) + ".nwmodebak", tempPath);
SetFileReadOnlyAttribute(tempPath, false);
}
}
-
- protected String GetIniName(IniFile iniFile)
- {
- switch (iniFile)
- {
- case IniFile.F76:
- return "Fallout76.ini";
- case IniFile.F76Prefs:
- return "Fallout76Prefs.ini";
- case IniFile.F76Custom:
- return "Fallout76Custom.ini";
- case IniFile.Config:
- return "QuickConfiguration.ini";
- }
- return null;
- }
-
- protected String GetIniPath(IniFile iniFile)
- {
- switch (iniFile)
- {
- case IniFile.F76:
- return this.fo76Path;
- case IniFile.F76Prefs:
- return this.fo76PrefsPath;
- case IniFile.F76Custom:
- return this.fo76CustomPath;
- case IniFile.Config:
- return this.configPath;
- }
- return null;
- }
-
- protected IniData GetIniData(IniFile iniFile)
- {
- switch (iniFile)
- {
- case IniFile.F76:
- return this.fo76Data;
- case IniFile.F76Prefs:
- return this.fo76PrefsData;
- case IniFile.F76Custom:
- return this.fo76CustomData;
- case IniFile.Config:
- return this.configData;
- }
- return null;
- }
-
protected void RemoveEmptySections(IniData data)
{
List sectionNames = new List();
@@ -412,17 +459,17 @@ protected void SetFileReadOnlyAttribute(String path, bool readOnly)
public void SetINIsReadOnly(bool readOnly)
{
- SetFileReadOnlyAttribute(this.fo76Path, readOnly);
- SetFileReadOnlyAttribute(this.fo76PrefsPath, readOnly);
- SetFileReadOnlyAttribute(this.fo76CustomPath, readOnly);
+ SetFileReadOnlyAttribute(this.GetIniPath(IniFile.F76), readOnly);
+ SetFileReadOnlyAttribute(this.GetIniPath(IniFile.F76Prefs), readOnly);
+ SetFileReadOnlyAttribute(this.GetIniPath(IniFile.F76Custom), readOnly);
}
public bool AreINIsReadOnly()
{
- if (File.Exists(this.fo76Path) && File.Exists(this.fo76PrefsPath))
+ if (File.Exists(this.GetIniPath(IniFile.F76)) && File.Exists(this.GetIniPath(IniFile.F76Prefs)))
{
- FileInfo fo76fi = new FileInfo(this.fo76Path);
- FileInfo fo76Prefsfi = new FileInfo(this.fo76PrefsPath);
+ FileInfo fo76fi = new FileInfo(this.GetIniPath(IniFile.F76));
+ FileInfo fo76Prefsfi = new FileInfo(this.GetIniPath(IniFile.F76Prefs));
return fo76fi.IsReadOnly && fo76Prefsfi.IsReadOnly;
}
return false;
@@ -453,17 +500,11 @@ public void SetNTFSWritePermission(bool writePermission)
{
dSecurity.RemoveAccessRule(new FileSystemAccessRule(sidUsers, rights, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Deny));
dSecurity.AddAccessRule(new FileSystemAccessRule(sidUsers, rights, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
-
- //dSecurity.RemoveAccessRule(new FileSystemAccessRule(sidAdmins, rights, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Deny));
- //dSecurity.AddAccessRule(new FileSystemAccessRule(sidAdmins, rights, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
}
else
{
dSecurity.AddAccessRule(new FileSystemAccessRule(sidUsers, rights, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Deny));
dSecurity.RemoveAccessRule(new FileSystemAccessRule(sidUsers, rights, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
-
- //dSecurity.AddAccessRule(new FileSystemAccessRule(sidAdmins, rights, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Deny));
- //dSecurity.RemoveAccessRule(new FileSystemAccessRule(sidAdmins, rights, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
}
dInfo.SetAccessControl(dSecurity);
}
@@ -758,7 +799,7 @@ protected void FixDuplicateResourceLists()
MergeLists(IniFile.F76Custom, "Archive", "sResourceArchive2List");
MergeLists(IniFile.F76Custom, "Archive", "sResourceDataDirsFinal");
- this.fo76CustomModTime = File.GetLastWriteTime(this.fo76CustomPath);
+ this.fo76CustomModTime = File.GetLastWriteTime(this.GetIniPath(IniFile.F76Custom));
}
diff --git a/Fo76ini/Mods.cs b/Fo76ini/Mods.cs
index 0551830..63b9c53 100644
--- a/Fo76ini/Mods.cs
+++ b/Fo76ini/Mods.cs
@@ -498,6 +498,8 @@ public static String GetEditionSuffix(GameEdition gameEdition)
return "BethesdaNet";
case GameEdition.BethesdaNetPTS:
return "BethesdaNetPTS";
+ case GameEdition.MSStore:
+ return "MSStore";
default:
return "";
}
@@ -862,9 +864,6 @@ public void InstallModArchiveFrozen(String filePath, Action updateP
return;
}
- if (!Directory.Exists(Path.Combine(this.gamePath, "Mods")))
- Directory.CreateDirectory(Path.Combine(this.gamePath, "Mods"));
-
if (!File.Exists(filePath))
{
// Path too long?
@@ -885,6 +884,10 @@ public void InstallModArchiveFrozen(String filePath, Action updateP
try
{
+ // Create Mods folder:
+ if (!Directory.Exists(Path.Combine(this.gamePath, "Mods")))
+ Directory.CreateDirectory(Path.Combine(this.gamePath, "Mods"));
+
// Get paths:
filePath = Path.GetFullPath(filePath);
String fileName = Path.GetFileNameWithoutExtension(filePath);
@@ -920,6 +923,14 @@ public void InstallModArchiveFrozen(String filePath, Action updateP
if (done != null)
done(true);
}
+ catch (UnauthorizedAccessException ex)
+ {
+ MsgBox.Get("modsAccessDenied").FormatText("UnauthorizedAccessException: " + ex.Message).Show(MessageBoxIcon.Error);
+ this.logFile.WriteLine($"UnauthorizedAccessException occured while importing a folder: {ex.Message}\n{ex.StackTrace}\n");
+ if (done != null)
+ done(false);
+ return;
+ }
catch (Exception ex)
{
this.logFile.WriteLine($"Unhandled exception occured while importing a *.ba2 file: {ex.Message}\n{ex.StackTrace}\n");
@@ -947,9 +958,6 @@ public void InstallModArchive(String filePath, Action updateProgres
return;
}
- if (!Directory.Exists(Path.Combine(this.gamePath, "Mods")))
- Directory.CreateDirectory(Path.Combine(this.gamePath, "Mods"));
-
if (!File.Exists(filePath))
{
// Path too long?
@@ -980,6 +988,10 @@ public void InstallModArchive(String filePath, Action updateProgres
try
{
+ // Create Mods folder:
+ if (!Directory.Exists(Path.Combine(this.gamePath, "Mods")))
+ Directory.CreateDirectory(Path.Combine(this.gamePath, "Mods"));
+
// Get paths:
filePath = Path.GetFullPath(filePath);
String fileName = Path.GetFileNameWithoutExtension(filePath);
@@ -1014,6 +1026,14 @@ public void InstallModArchive(String filePath, Action updateProgres
if (done != null)
done(true);
}
+ catch (UnauthorizedAccessException ex)
+ {
+ MsgBox.Get("modsAccessDenied").FormatText("UnauthorizedAccessException: " + ex.Message).Show(MessageBoxIcon.Error);
+ this.logFile.WriteLine($"UnauthorizedAccessException occured while importing a folder: {ex.Message}\n{ex.StackTrace}\n");
+ if (done != null)
+ done(false);
+ return;
+ }
catch (Exception ex)
{
this.logFile.WriteLine($"Unhandled exception occured while importing a *.ba2 file: {ex.Message}\n{ex.StackTrace}\n");
@@ -1041,9 +1061,6 @@ public void InstallModFolder(String folderPath, Action updateProgre
return;
}
- if (!Directory.Exists(Path.Combine(this.gamePath, "Mods")))
- Directory.CreateDirectory(Path.Combine(this.gamePath, "Mods"));
-
if (!Directory.Exists(folderPath))
{
// Path too long?
@@ -1074,6 +1091,10 @@ public void InstallModFolder(String folderPath, Action updateProgre
try
{
+ // Create Mods folder:
+ if (!Directory.Exists(Path.Combine(this.gamePath, "Mods")))
+ Directory.CreateDirectory(Path.Combine(this.gamePath, "Mods"));
+
// Get paths:
folderPath = Path.GetFullPath(folderPath);
String folderName = Path.GetFileName(folderPath);
@@ -1122,6 +1143,14 @@ public void InstallModFolder(String folderPath, Action updateProgre
if (done != null)
done(true);
}
+ catch (UnauthorizedAccessException ex)
+ {
+ MsgBox.Get("modsAccessDenied").FormatText("UnauthorizedAccessException: " + ex.Message).Show(MessageBoxIcon.Error);
+ this.logFile.WriteLine($"UnauthorizedAccessException occured while importing a folder: {ex.Message}\n{ex.StackTrace}\n");
+ if (done != null)
+ done(false);
+ return;
+ }
catch (Exception ex)
{
this.logFile.WriteLine($"Unhandled exception occured while importing a folder: {ex.Message}\n{ex.StackTrace}\n");
@@ -1945,6 +1974,13 @@ public void Deploy(Action updateProgress = null, Action done
if (done != null)
done(true);
}
+ catch (UnauthorizedAccessException ex)
+ {
+ MsgBox.Get("modsAccessDenied").FormatText("UnauthorizedAccessException: " + ex.Message).Show(MessageBoxIcon.Error);
+ this.logFile.WriteLine($"UnauthorizedAccessException occured while importing a folder: {ex.Message}\n{ex.StackTrace}\n");
+ if (done != null)
+ done(false);
+ }
catch (Exception ex)
{
this.logFile.WriteLine($"Unhandled exception occured: {ex.Message}\n{ex.StackTrace}");
diff --git a/Fo76ini/Properties/Resources.Designer.cs b/Fo76ini/Properties/Resources.Designer.cs
index 38f81b0..05d5d00 100644
--- a/Fo76ini/Properties/Resources.Designer.cs
+++ b/Fo76ini/Properties/Resources.Designer.cs
@@ -80,6 +80,36 @@ internal static System.Drawing.Bitmap arrow_up {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap bethesda {
+ get {
+ object obj = ResourceManager.GetObject("bethesda", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap bethesda_24px {
+ get {
+ object obj = ResourceManager.GetObject("bethesda_24px", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap bethesda_pts {
+ get {
+ object obj = ResourceManager.GetObject("bethesda_pts", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
@@ -170,6 +200,26 @@ internal static System.Drawing.Bitmap info {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap msstore {
+ get {
+ object obj = ResourceManager.GetObject("msstore", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap msstore_24px {
+ get {
+ object obj = ResourceManager.GetObject("msstore_24px", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
@@ -190,6 +240,36 @@ internal static System.Drawing.Bitmap plus {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap question_mark {
+ get {
+ object obj = ResourceManager.GetObject("question_mark", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap steam {
+ get {
+ object obj = ResourceManager.GetObject("steam", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap steam_24px {
+ get {
+ object obj = ResourceManager.GetObject("steam_24px", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
@@ -199,5 +279,25 @@ internal static System.Drawing.Bitmap warning {
return ((System.Drawing.Bitmap)(obj));
}
}
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap xbox {
+ get {
+ object obj = ResourceManager.GetObject("xbox", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap xbox_24px {
+ get {
+ object obj = ResourceManager.GetObject("xbox_24px", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
}
}
diff --git a/Fo76ini/Properties/Resources.resx b/Fo76ini/Properties/Resources.resx
index 2dac1b0..18fcc8d 100644
--- a/Fo76ini/Properties/Resources.resx
+++ b/Fo76ini/Properties/Resources.resx
@@ -160,4 +160,34 @@
..\icons\defrost.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\steam.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\xbox.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\bethesda-launcher.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\bethesda_24px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\bethesda-launcher-pts.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\msstore.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\msstore_24px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\question_mark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\steam_24px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\xbox_24px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
\ No newline at end of file
diff --git a/Fo76ini/Resources/bethesda-launcher-pts.png b/Fo76ini/Resources/bethesda-launcher-pts.png
new file mode 100644
index 0000000..416569e
Binary files /dev/null and b/Fo76ini/Resources/bethesda-launcher-pts.png differ
diff --git a/Fo76ini/Resources/bethesda-launcher.png b/Fo76ini/Resources/bethesda-launcher.png
new file mode 100644
index 0000000..c9a8f8a
Binary files /dev/null and b/Fo76ini/Resources/bethesda-launcher.png differ
diff --git a/Fo76ini/Resources/bethesda_24px.png b/Fo76ini/Resources/bethesda_24px.png
new file mode 100644
index 0000000..49fc28e
Binary files /dev/null and b/Fo76ini/Resources/bethesda_24px.png differ
diff --git a/Fo76ini/Resources/bethesdanet.png b/Fo76ini/Resources/bethesdanet.png
new file mode 100644
index 0000000..5b05a08
Binary files /dev/null and b/Fo76ini/Resources/bethesdanet.png differ
diff --git a/Fo76ini/Resources/msstore.png b/Fo76ini/Resources/msstore.png
new file mode 100644
index 0000000..de05ee6
Binary files /dev/null and b/Fo76ini/Resources/msstore.png differ
diff --git a/Fo76ini/Resources/msstore_24px.png b/Fo76ini/Resources/msstore_24px.png
new file mode 100644
index 0000000..819407f
Binary files /dev/null and b/Fo76ini/Resources/msstore_24px.png differ
diff --git a/Fo76ini/Resources/question_mark.png b/Fo76ini/Resources/question_mark.png
new file mode 100644
index 0000000..1bb0768
Binary files /dev/null and b/Fo76ini/Resources/question_mark.png differ
diff --git a/Fo76ini/Resources/steam.png b/Fo76ini/Resources/steam.png
new file mode 100644
index 0000000..10eaa80
Binary files /dev/null and b/Fo76ini/Resources/steam.png differ
diff --git a/Fo76ini/Resources/steam_24px.png b/Fo76ini/Resources/steam_24px.png
new file mode 100644
index 0000000..ce0e7e3
Binary files /dev/null and b/Fo76ini/Resources/steam_24px.png differ
diff --git a/Fo76ini/Resources/xbox.png b/Fo76ini/Resources/xbox.png
new file mode 100644
index 0000000..b5b2403
Binary files /dev/null and b/Fo76ini/Resources/xbox.png differ
diff --git a/Fo76ini/Resources/xbox_24px.png b/Fo76ini/Resources/xbox_24px.png
new file mode 100644
index 0000000..8ea7af3
Binary files /dev/null and b/Fo76ini/Resources/xbox_24px.png differ
diff --git a/Fo76ini/banner.png b/Fo76ini/banner.png
index d104967..3c861ff 100644
Binary files a/Fo76ini/banner.png and b/Fo76ini/banner.png differ
diff --git a/Fo76ini/banner_transparent.png b/Fo76ini/banner_transparent.png
new file mode 100644
index 0000000..d104967
Binary files /dev/null and b/Fo76ini/banner_transparent.png differ
diff --git a/Fo76ini/languages/de-DE.xml b/Fo76ini/languages/de-DE.xml
index c6b9adf..a5436fb 100644
--- a/Fo76ini/languages/de-DE.xml
+++ b/Fo76ini/languages/de-DE.xml
@@ -1,5 +1,5 @@
-
+
@@ -102,6 +102,8 @@ Einige UI-Elemente könnten unter Umständen nicht korrekt funktionieren.
Heruntergeladene Sprachdateien: {0}
Das Herunterladen von Sprachen ist fehlgeschlagen.
{0}
+ Das Wechseln von und zur Microsoft Store Edition erfordert einen Neustart des Tools.
+ Leider kann die Spiel aufgrund von "Sicherheitseinschränkungen" nicht direkt gestartet werden. Danke Microsoft, wir freuen uns. :(
Mods wurden deaktiviert und vom Spiel entfernt.
Mods wurden installiert.
Mods könnten nicht installiert worden sein.
@@ -140,8 +142,12 @@ Fehlermeldung: "{0}".
Das kann lange dauern, abhängig von Dateigröße und Anzahl an Dateien.
Möchtest du fortfahren?
*.dds Dateien wurden repariert.
- You've enabled the Nuclear Winter mode, but your mods are still deployed.
-Do you want to disable them now?
+ {0}
+Starte das Tool als Administrator und versuche es erneut.
+ Du hast den Nuclear Winter Modus aktiviert, aber deine Mods sind noch installiert.
+Möchtest du sie jetzt deinstallieren?
+ Du hast den Nuclear Winter Modus deaktiviert, aber deine Mods wurden dadurch nicht reaktiviert.
+Möchtest du sie jetzt wieder installieren?
Bitte lade Archive2 runter und setze den Pfad, um *.ba2 Archive zu extrahieren.
Ungültiger Pfad zu Archive2.
Bitte wähle Archive2.exe
@@ -164,6 +170,7 @@ Bitte wähle Archive2.exe
+
@@ -216,6 +223,7 @@ Betroffene Dateien: %UserProfile%\Documents\My Games\Fallout 76\*.ini
+
@@ -236,7 +244,7 @@ Betroffene Dateien: Fallout76Custom.ini
-
+
@@ -708,7 +716,7 @@ Betroffene Dateien: Fallout76Prefs.ini
-
+
Könnte Speicherplatz frei machen und beim Anwenden Zeit sparen.
Wirkt sich nicht auf gebündelte Archive aus.
diff --git a/Fo76ini/languages/en-US.xml b/Fo76ini/languages/en-US.xml
index a1c0061..1eb3870 100644
--- a/Fo76ini/languages/en-US.xml
+++ b/Fo76ini/languages/en-US.xml
@@ -4,7 +4,7 @@
Therefore any changes made to this file will be overriden.
You can use this as a template for your own translation, though.
-->
-
+
@@ -90,7 +90,7 @@
Press "Cancel" to abort.
Changes have been applied. You may start the game now.
Please pick your game edition under the Settings tab.
- Please run the game first before using this tool.
+ Please run the game first before using this tool.
The game will generate those files on first start-up.
Some values have been reset to default.
Only unstable values from previous versions are affected.
@@ -106,6 +106,8 @@ Some UI elements might not be functioning correctly.
Downloaded language files: {0}
Downloading languages failed.
{0}
+ Switching to or from the Microsoft Store edition requires a restart of the tool.
+ Unfortunately, it's not possible to launch the executable directly due to "security" restrictions. Thanks Microsoft, we hate it. :(
Mods have been disabled and removed from the game.
Mods are deployed.
Mods might not be deployed.
@@ -144,8 +146,12 @@ Error message: "{0}".
It can take a long time, depending on file size and number of files.
Are you sure you want to continue?
*.dds files have been repaired.
+ {0}
+Please start the tool as admin and try again.
You've enabled the Nuclear Winter mode, but your mods are still deployed.
Do you want to disable them now?
+ You've disabled the Nuclear Winter mode, but your mods are still disabled.
+Do you want to deploy them now?
@@ -165,9 +171,10 @@ Do you want to disable them now?
+
-
+
@@ -216,6 +223,7 @@ Affected files: %UserProfile%\Documents\My Games\Fallout 76\*.ini
+
@@ -236,7 +244,7 @@ Affected files: Fallout76Custom.ini
-
+
diff --git a/Fo76ini/msgbox.cs b/Fo76ini/msgbox.cs
index a98cdc5..687f369 100644
--- a/Fo76ini/msgbox.cs
+++ b/Fo76ini/msgbox.cs
@@ -52,7 +52,7 @@ public static void AddSharedMessageBoxes()
);
MsgBox.Add("runGameToGenerateINI",
- "Fallout76.ini and Fallout76Prefs.ini not found",
+ "{0} and {1} not found",
"Please run the game first before using this tool.\n" +
"The game will generate those files on first start-up."
);
@@ -89,6 +89,16 @@ public static void AddSharedMessageBoxes()
"Downloading languages failed.\n{0}"
);
+ MsgBox.Add("msstoreRestartRequired",
+ "Do you want to switch?",
+ "Switching to or from the Microsoft Store edition requires a restart of the tool."
+ );
+
+ MsgBox.Add("msstoreRunExecutableFailed",
+ "Couldn't launch game: {0}",
+ "Unfortunately, it's not possible to launch the executable directly due to \"security\" restrictions. Thanks Microsoft, we hate it. :("
+ );
+
// Mods:
MsgBox.Add("modsDisabledDone",
"Done",
@@ -219,11 +229,22 @@ public static void AddSharedMessageBoxes()
"*.dds files have been repaired."
);
+ MsgBox.Add("modsAccessDenied",
+ "Access denied",
+ "{0}\nPlease start the tool as admin and try again."
+ );
+
MsgBox.Add("nwModeEnabledButModsAreDeployed",
"Mods are still deployed",
"You've enabled the Nuclear Winter mode, but your mods are still deployed.\n" +
"Do you want to disable them now?"
);
+
+ MsgBox.Add("nwModeDisabledAndModsAreStillDisabled",
+ "Do you want to re-enable your mods again?",
+ "You've disabled the Nuclear Winter mode, but your mods are still disabled.\n" +
+ "Do you want to deploy them now?"
+ );
}
private static Dictionary msgBoxes = new Dictionary();
diff --git a/VERSION b/VERSION
index 0d216c0..c1a9811 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.6.3
+1.7.0
diff --git a/setup.iss b/setup.iss
index 10e16a5..5ce7394 100644
--- a/setup.iss
+++ b/setup.iss
@@ -2,12 +2,12 @@
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "Fallout 76 Quick Configuration"
-; #define MyAppVersion "1.6"
+; #define MyAppVersion "1.7"
#define MyAppPublisher "datasnake"
#define MyAppURL "https://www.nexusmods.com/fallout76/mods/546"
#define MyAppExeName "Fo76ini.exe"
-#define ProjectVersion "1.6.3"
+#define ProjectVersion "1.7.0"
#define ProjectBaseDir "C:\Users\Thomas\Documents\Fallout 76 Quick Configuration - Project files"
#define ProjectGitDir "C:\Users\Thomas\Documents\Fallout 76 Quick Configuration - Project files\Fallout76-QuickConfiguration"