mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Merge pull request #237 from wabbajack-tools/set-screen-size
Implement screen size auto-set for MO2 games
This commit is contained in:
commit
ceebe0b745
@ -3,6 +3,9 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using Alphaleonis.Win32.Filesystem;
|
||||
using IniParser;
|
||||
using IniParser.Parser;
|
||||
using Wabbajack.Common;
|
||||
using Wabbajack.Lib.CompilationSteps.CompilationErrors;
|
||||
using Wabbajack.Lib.Downloaders;
|
||||
@ -34,7 +37,7 @@ namespace Wabbajack.Lib
|
||||
|
||||
protected override bool _Begin()
|
||||
{
|
||||
ConfigureProcessor(17, RecommendQueueSize());
|
||||
ConfigureProcessor(18, RecommendQueueSize());
|
||||
var game = GameRegistry.Games[ModList.GameType];
|
||||
|
||||
if (GameFolder == null)
|
||||
@ -112,6 +115,9 @@ namespace Wabbajack.Lib
|
||||
UpdateTracker.NextStep("Generating Merges");
|
||||
zEditIntegration.GenerateMerges(this);
|
||||
|
||||
UpdateTracker.NextStep("Updating System-specific ini settings");
|
||||
SetScreenSizeInPrefs();
|
||||
|
||||
UpdateTracker.NextStep("Installation complete! You may exit the program.");
|
||||
return true;
|
||||
}
|
||||
@ -256,6 +262,23 @@ namespace Wabbajack.Lib
|
||||
}
|
||||
}
|
||||
|
||||
private void SetScreenSizeInPrefs()
|
||||
{
|
||||
foreach (var file in Directory.EnumerateFiles(Path.Combine(OutputFolder, "profiles"), "*refs.ini",
|
||||
DirectoryEnumerationOptions.Recursive))
|
||||
{
|
||||
var parser = new FileIniDataParser();
|
||||
var data = parser.ReadFile(file);
|
||||
if (data.Sections["Display"]["iSize W"] != null && data.Sections["Display"]["iSize H"] != null)
|
||||
{
|
||||
data.Sections["Display"]["iSize W"] = SystemParameters.PrimaryScreenWidth.ToString();
|
||||
data.Sections["Display"]["iSize H"] = SystemParameters.PrimaryScreenHeight.ToString();
|
||||
}
|
||||
|
||||
parser.WriteFile(file, data);
|
||||
}
|
||||
}
|
||||
|
||||
private void WriteRemappedFile(RemappedInlineFile directive)
|
||||
{
|
||||
var data = Encoding.UTF8.GetString(LoadBytesFromPath(directive.SourceDataID));
|
||||
|
@ -2,6 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Wabbajack.Common;
|
||||
using Wabbajack.Lib;
|
||||
using Wabbajack.Lib.CompilationSteps.CompilationErrors;
|
||||
using File = Alphaleonis.Win32.Filesystem.File;
|
||||
@ -109,7 +110,6 @@ namespace Wabbajack.Test
|
||||
[TestMethod]
|
||||
public void CleanedESMTest()
|
||||
{
|
||||
|
||||
var profile = utils.AddProfile();
|
||||
var mod = utils.AddMod("Cleaned ESMs");
|
||||
var update_esm = utils.AddModFile(mod, @"Update.esm", 10);
|
||||
@ -131,6 +131,29 @@ namespace Wabbajack.Test
|
||||
Assert.IsInstanceOfType(exception.InnerExceptions.First(), typeof(InvalidGameESMError));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void SetScreenSizeTest()
|
||||
{
|
||||
var profile = utils.AddProfile();
|
||||
var mod = utils.AddMod("dummy");
|
||||
|
||||
utils.Configure();
|
||||
File.WriteAllLines(Path.Combine(utils.MO2Folder, "profiles", profile, "somegameprefs.ini"),
|
||||
new List<string>
|
||||
{
|
||||
"[Display]",
|
||||
"iSize H=3",
|
||||
"iSize W=-200"
|
||||
});
|
||||
|
||||
var modlist = CompileAndInstall(profile);
|
||||
|
||||
var ini = Path.Combine(utils.InstallFolder, "profiles", profile, "somegameprefs.ini").LoadIniFile();
|
||||
|
||||
Assert.AreEqual(System.Windows.SystemParameters.PrimaryScreenHeight.ToString(), ini?.Display?["iSize H"]);
|
||||
Assert.AreEqual(System.Windows.SystemParameters.PrimaryScreenWidth.ToString(), ini?.Display?["iSize W"]);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void UnmodifiedInlinedFilesArePulledFromArchives()
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user