mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Created IncludeGenericGamePlugin
This commit is contained in:
parent
3a2a5918b6
commit
4ed7ab1aa1
60
Wabbajack.Lib/CompilationSteps/IncludeGenericGamePlugin.cs
Normal file
60
Wabbajack.Lib/CompilationSteps/IncludeGenericGamePlugin.cs
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
using System;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Wabbajack.Common;
|
||||||
|
|
||||||
|
namespace Wabbajack.Lib.CompilationSteps
|
||||||
|
{
|
||||||
|
public class IncludeGenericGamePlugin : ACompilationStep
|
||||||
|
{
|
||||||
|
private readonly bool _validGame;
|
||||||
|
private readonly string _pluginsFolder = string.Empty;
|
||||||
|
private readonly string _gameName = string.Empty;
|
||||||
|
|
||||||
|
public IncludeGenericGamePlugin(ACompiler compiler) : base(compiler)
|
||||||
|
{
|
||||||
|
if (!(compiler is MO2Compiler mo2Compiler))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (mo2Compiler.CompilingGame.NexusName == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_validGame = mo2Compiler.CompilingGame.IsGenericMO2Plugin;
|
||||||
|
_pluginsFolder = mo2Compiler.MO2Folder.Combine("plugins").ToString();
|
||||||
|
_gameName = $"game_{mo2Compiler.CompilingGame.NexusName}.py";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Regex regex = new Regex(@"^game_$");
|
||||||
|
|
||||||
|
public override async ValueTask<Directive?> Run(RawSourceFile source)
|
||||||
|
{
|
||||||
|
if (!_validGame)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (!source.AbsolutePath.ToString().StartsWith(_pluginsFolder))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if(!source.AbsolutePath.FileName.ToString().Equals(_gameName, StringComparison.InvariantCultureIgnoreCase))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var res = source.EvolveTo<InlineFile>();
|
||||||
|
res.SourceDataID = await _compiler.IncludeFile(await source.AbsolutePath.ReadAllBytesAsync());
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override IState GetState()
|
||||||
|
{
|
||||||
|
return new State();
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonObject("IncludeGenericGamePlugin")]
|
||||||
|
public class State : IState
|
||||||
|
{
|
||||||
|
public ICompilationStep CreateStep(ACompiler compiler)
|
||||||
|
{
|
||||||
|
return new IncludeGenericGamePlugin(compiler);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -176,7 +176,6 @@ namespace Wabbajack.Lib
|
|||||||
await VFS.AddRoot(MO2DownloadsFolder);
|
await VFS.AddRoot(MO2DownloadsFolder);
|
||||||
await VFS.WriteToFile(VFSCacheName);
|
await VFS.WriteToFile(VFSCacheName);
|
||||||
|
|
||||||
|
|
||||||
if (cancel.IsCancellationRequested) return false;
|
if (cancel.IsCancellationRequested) return false;
|
||||||
UpdateTracker.NextStep("Pre-validating Archives");
|
UpdateTracker.NextStep("Pre-validating Archives");
|
||||||
|
|
||||||
@ -194,7 +193,10 @@ namespace Wabbajack.Lib
|
|||||||
|
|
||||||
var stockGameFolder = CompilingGame.GameLocation();
|
var stockGameFolder = CompilingGame.GameLocation();
|
||||||
|
|
||||||
foreach (var (relativePath, hash) in await ClientAPI.GetGameFiles(CompilingGame.Game, Version.Parse(CompilingGame.InstalledVersion)))
|
var installedVersion = CompilingGame.InstalledVersion;
|
||||||
|
if (installedVersion != null)
|
||||||
|
{
|
||||||
|
foreach (var (relativePath, hash) in await ClientAPI.GetGameFiles(CompilingGame.Game, Version.Parse(installedVersion)))
|
||||||
{
|
{
|
||||||
if (!VFS.Index.ByRootPath.TryGetValue(relativePath.RelativeTo(stockGameFolder), out var virtualFile))
|
if (!VFS.Index.ByRootPath.TryGetValue(relativePath.RelativeTo(stockGameFolder), out var virtualFile))
|
||||||
continue;
|
continue;
|
||||||
@ -207,7 +209,9 @@ namespace Wabbajack.Lib
|
|||||||
|
|
||||||
var state = new GameFileSourceDownloader.State
|
var state = new GameFileSourceDownloader.State
|
||||||
{
|
{
|
||||||
Game = CompilingGame.Game, GameVersion = CompilingGame.InstalledVersion, GameFile = relativePath
|
Game = CompilingGame.Game,
|
||||||
|
GameVersion = CompilingGame.InstalledVersion,
|
||||||
|
GameFile = relativePath
|
||||||
};
|
};
|
||||||
|
|
||||||
Utils.Log($"Adding Game file: {relativePath}");
|
Utils.Log($"Adding Game file: {relativePath}");
|
||||||
@ -218,8 +222,7 @@ namespace Wabbajack.Lib
|
|||||||
Meta = state.GetMetaIniString()
|
Meta = state.GetMetaIniString()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
await CleanInvalidArchives();
|
await CleanInvalidArchives();
|
||||||
|
|
||||||
@ -550,6 +553,7 @@ namespace Wabbajack.Lib
|
|||||||
{
|
{
|
||||||
new IgnoreGameFilesIfGameFolderFilesExist(this),
|
new IgnoreGameFilesIfGameFolderFilesExist(this),
|
||||||
new IncludePropertyFiles(this),
|
new IncludePropertyFiles(this),
|
||||||
|
new IncludeGenericGamePlugin(this),
|
||||||
new IgnoreStartsWith(this,"logs\\"),
|
new IgnoreStartsWith(this,"logs\\"),
|
||||||
new IgnoreStartsWith(this, "downloads\\"),
|
new IgnoreStartsWith(this, "downloads\\"),
|
||||||
new IgnoreStartsWith(this,"webcache\\"),
|
new IgnoreStartsWith(this,"webcache\\"),
|
||||||
|
Loading…
Reference in New Issue
Block a user