Archived
Private
Public Access
1
0

Reworked MloCombiner

This commit is contained in:
2022-10-26 17:28:27 +02:00
parent e71b87d9fa
commit a565b9287c
85 changed files with 711 additions and 16483 deletions

View File

@@ -59,7 +59,7 @@
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.401\\RuntimeIdentifierGraph.json"
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.402\\RuntimeIdentifierGraph.json"
}
}
}

View File

@@ -66,7 +66,7 @@
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.401\\RuntimeIdentifierGraph.json"
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.402\\RuntimeIdentifierGraph.json"
}
}
}

View File

@@ -1,6 +1,6 @@
{
"version": 2,
"dgSpecHash": "DIssHXs275wL7OF6SMPckcq6+zt2HKhkDbCax3MlxoVNiuU83gbDG0PmYtc3gtUdY/WnabZl09rmBJSUI1fHsw==",
"dgSpecHash": "mkUIdBvNuohYj8JyzbRWlNVnnldKEgdRlWTWdtGNEOUvwB0i0shF2eAanKziGt9GPCbuZyb4TP2EdJSiEqihlQ==",
"success": true,
"projectFilePath": "D:\\Programmierstuff\\FiveM\\BitComparer\\BitComparer\\BitComparer.csproj",
"expectedPackageFiles": [],

View File

@@ -1 +1 @@
"restore":{"projectUniqueName":"D:\\Programmierstuff\\FiveM\\BitComparer\\BitComparer\\BitComparer.csproj","projectName":"BitComparer","projectPath":"D:\\Programmierstuff\\FiveM\\BitComparer\\BitComparer\\BitComparer.csproj","outputPath":"D:\\Programmierstuff\\FiveM\\BitComparer\\BitComparer\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net5.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net5.0":{"targetAlias":"net5.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net5.0":{"targetAlias":"net5.0","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\6.0.401\\RuntimeIdentifierGraph.json"}}
"restore":{"projectUniqueName":"D:\\Programmierstuff\\FiveM\\BitComparer\\BitComparer\\BitComparer.csproj","projectName":"BitComparer","projectPath":"D:\\Programmierstuff\\FiveM\\BitComparer\\BitComparer\\BitComparer.csproj","outputPath":"D:\\Programmierstuff\\FiveM\\BitComparer\\BitComparer\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net5.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net5.0":{"targetAlias":"net5.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net5.0":{"targetAlias":"net5.0","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\6.0.402\\RuntimeIdentifierGraph.json"}}

View File

@@ -1 +1 @@
16640510030535680
16659238264472891

View File

@@ -93,8 +93,8 @@ namespace CarCombiner {
return info.CreateSubdirectory("stream").FullName;
}
private static void CopyStreamData(string streamFolder, string resourcesFolder) {
DirectoryInfo resources = new DirectoryInfo(resourcesFolder);
private static void CopyStreamData(string streamFolder, string rootFolder) {
DirectoryInfo resources = new DirectoryInfo(rootFolder);
foreach (DirectoryInfo resource in resources.EnumerateDirectories()) {
DirectoryInfo stream = new DirectoryInfo(resource.FullName + "/stream");

View File

@@ -59,7 +59,7 @@
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.401\\RuntimeIdentifierGraph.json"
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.402\\RuntimeIdentifierGraph.json"
}
}
}

View File

@@ -66,7 +66,7 @@
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.401\\RuntimeIdentifierGraph.json"
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.402\\RuntimeIdentifierGraph.json"
}
}
}

View File

@@ -1,6 +1,6 @@
{
"version": 2,
"dgSpecHash": "uW+u8Vn/1rsrV87fyIsbhtL2M/bVlJdGhehnNbEpRUHze7oxfPYY/CxipUNyDaIqwc2v5MaALjSic4CGfvSJxQ==",
"dgSpecHash": "BEEfhO31zIm2Dvr55HvPljfhtbtFVbk4xjOmWzX5QBX93L0SKomDbAkYxrNeLUnxKyRIjPNMDKeLAZL8iKSZeA==",
"success": true,
"projectFilePath": "D:\\Programmierstuff\\FiveM\\CarCombiner\\CarCombiner.csproj",
"expectedPackageFiles": [],

View File

@@ -1 +1 @@
"restore":{"projectUniqueName":"D:\\Programmierstuff\\FiveM\\CarCombiner\\CarCombiner.csproj","projectName":"CarCombiner","projectPath":"D:\\Programmierstuff\\FiveM\\CarCombiner\\CarCombiner.csproj","outputPath":"D:\\Programmierstuff\\FiveM\\CarCombiner\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net5.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net5.0":{"targetAlias":"net5.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net5.0":{"targetAlias":"net5.0","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\6.0.401\\RuntimeIdentifierGraph.json"}}
"restore":{"projectUniqueName":"D:\\Programmierstuff\\FiveM\\CarCombiner\\CarCombiner.csproj","projectName":"CarCombiner","projectPath":"D:\\Programmierstuff\\FiveM\\CarCombiner\\CarCombiner.csproj","outputPath":"D:\\Programmierstuff\\FiveM\\CarCombiner\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net5.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net5.0":{"targetAlias":"net5.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net5.0":{"targetAlias":"net5.0","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\6.0.402\\RuntimeIdentifierGraph.json"}}

View File

@@ -1 +1 @@
16635085020394965
16659238264472891

View File

@@ -5,7 +5,7 @@
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{731B2018-840C-43BF-AC9F-E18B73EB901D}</ProjectGuid>
<OutputType>Exe</OutputType>
<OutputType>WinExe</OutputType>
<RootNamespace>CarConverter</RootNamespace>
<AssemblyName>CarConverter</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>

View File

@@ -111,7 +111,7 @@
<Label Grid.Row="0" Content="RPF Explorer" Style="{StaticResource HeaderText}" />
<TreeView Grid.Row="1" AllowDrop="True" Drop="OnDrop" x:Name="FolderView"/>
<CheckBox Grid.Row="2" Content="Compress Files" x:Name="Compress" />
<CheckBox Grid.Row="2" Content="Compress Files" x:Name="Compress" IsChecked="True" />
</Grid>
<Grid Grid.Column="1">

View File

@@ -41,18 +41,16 @@ namespace CarConverter {
Clear(null, null);
string dlcFile = ((string[])e.Data.GetData(DataFormats.FileDrop))[0];
Utils.UnpackDlcFile(dlcFile, TempFolder, Compress.IsChecked.Value);
UpdateUi(TempFolder, "dlc.rpf");
UpdateUi(TempFolder);
}
private void UpdateUi(string folder, string rootFolderName) {
private void UpdateUi(string folder) {
var info = new DirectoryInfo(folder);
var root = new TreeViewItem { Header = rootFolderName, IsExpanded = true };
AddSubFiles(info, root);
FolderView.Items.Add(root);
AddSubFiles(info, FolderView);
UpdateOutLists();
}
private void AddSubFiles(DirectoryInfo info, TreeViewItem root) {
private void AddSubFiles(DirectoryInfo info, ItemsControl root) {
foreach (var dir in info.EnumerateDirectories()) {
var item = new TreeViewItem { Header = dir.Name, DataContext = dir.FullName };
AddSubFiles(dir, item);

View File

@@ -40,7 +40,7 @@ data_file 'VEHICLE_VARIATION_FILE' 'carvariations.meta'
var rrfe = fentry as RpfResourceFileEntry;
if (rrfe != null) {
if (compress && !entry.Name.EndsWith(".ytd")) {
if (compress) {
data = ResourceBuilder.Compress(data);
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@@ -13,11 +13,6 @@ D:\Programmierstuff\FiveM\CarConverter\obj\Release\CarConverter.csproj.GenerateR
D:\Programmierstuff\FiveM\CarConverter\obj\Release\CarConverter.csproj.CoreCompileInputs.cache
D:\Programmierstuff\FiveM\CarConverter\obj\Release\CarConverter.exe
D:\Programmierstuff\FiveM\CarConverter\obj\Release\CarConverter.pdb
D:\Programmierstuff\FiveM\CarConverter\bin\Release\SharpDX.dll
D:\Programmierstuff\FiveM\CarConverter\bin\Release\SharpDX.Mathematics.dll
D:\Programmierstuff\FiveM\CarConverter\bin\Release\SharpDX.pdb
D:\Programmierstuff\FiveM\CarConverter\bin\Release\SharpDX.Mathematics.pdb
D:\Programmierstuff\FiveM\CarConverter\bin\Release\SharpDX.Mathematics.xml
D:\Programmierstuff\FiveM\CarConverter\obj\Release\CarConverter.csproj.CopyComplete
D:\Programmierstuff\FiveM\CarConverter\bin\Release\Microsoft.WindowsAPICodePack.Shell.dll
D:\Programmierstuff\FiveM\CarConverter\bin\Release\Microsoft.WindowsAPICodePack.Shell.xml

View File

@@ -1,7 +1,7 @@
CarConverter
exe
winexe
C#
.cs
D:\Programmierstuff\FiveM\CarConverter\obj\Release\

View File

@@ -1,4 +1,4 @@
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "92A7595FF2470EF78D6DC9784E3659CC431C2B1300E7088B756F2970DEA0F9E5"
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "26D5852A653F3C0B765F46E0DA025F37C39146E2B494C92B2DB3BBFADA11F8E9"
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.

View File

@@ -1,4 +1,4 @@
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "92A7595FF2470EF78D6DC9784E3659CC431C2B1300E7088B756F2970DEA0F9E5"
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "26D5852A653F3C0B765F46E0DA025F37C39146E2B494C92B2DB3BBFADA11F8E9"
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.

View File

@@ -12,6 +12,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MloFinder", "MloFinder\MloF
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BitComparer", "BitComparer\BitComparer\BitComparer.csproj", "{345F97D7-5089-4FDB-862F-1B998E15ADA4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MloCombiner", "MloCombiner\MloCombiner.csproj", "{84CC694F-6D57-467B-94D3-F3BCB9951884}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -42,5 +44,9 @@ Global
{345F97D7-5089-4FDB-862F-1B998E15ADA4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{345F97D7-5089-4FDB-862F-1B998E15ADA4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{345F97D7-5089-4FDB-862F-1B998E15ADA4}.Release|Any CPU.Build.0 = Release|Any CPU
{84CC694F-6D57-467B-94D3-F3BCB9951884}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{84CC694F-6D57-467B-94D3-F3BCB9951884}.Debug|Any CPU.Build.0 = Debug|Any CPU
{84CC694F-6D57-467B-94D3-F3BCB9951884}.Release|Any CPU.ActiveCfg = Release|Any CPU
{84CC694F-6D57-467B-94D3-F3BCB9951884}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

102
MloCombiner/Combiner.cs Normal file
View File

@@ -0,0 +1,102 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using CarCombiner;
namespace MloCombiner {
public class Combiner {
public static string[] CheckMaps(string rootFolder) {
var root = new DirectoryInfo(rootFolder);
List<string> extraFiles = new();
foreach (var resource in root.EnumerateDirectories()) {
var extras = resource.EnumerateFiles()
.Where(info => !Constants.KnownMetaFiles.Contains(info.Name))
.ToArray();
if (extras.Length != 0)
extraFiles.AddRange(extras.Select(info => $"[{resource.Name}] => {info.Name}"));
}
return extraFiles.ToArray();
}
public static string CreateOutputResource(string name, string rootFolder) {
if (Directory.Exists(name)) {
Log.WriteError("That folder already exist!");
string delete = Log.RequestInput("Would you like to override the folder? (y/n)");
if (delete.Equals("y"))
Directory.Delete(name, true);
else
Environment.Exit(403);
}
DirectoryInfo info = Directory.CreateDirectory(name);
File.WriteAllText(info.FullName + "/fxmanifest.lua", Constants.ManifestContent);
var stream = info.CreateSubdirectory("stream");
var root = new DirectoryInfo(rootFolder);
foreach (var resource in root.EnumerateDirectories()) {
stream.CreateSubdirectory('[' + resource.Name + ']');
}
return stream.FullName;
}
public static void CopyOldCombiner(string name, string oldCombiner) {
var info = new DirectoryInfo(name);
File.WriteAllText(info.FullName + "/fxmanifest.lua", File.ReadAllText(oldCombiner + "/fxmanifest.lua"));
var oldStream = new DirectoryInfo(oldCombiner + "/stream");
oldStream.CopyFilesRecursively(info.FullName + "/stream");
foreach (var file in oldStream.Parent?.EnumerateFiles()) {
if (file.FullName.EndsWith("fxmanifest.lua")) continue;
file.CopyTo(info.FullName);
}
}
public static void CopyStreamData(string streamFolder, string rootFolder) {
DirectoryInfo resources = new DirectoryInfo(rootFolder);
foreach (DirectoryInfo resource in resources.EnumerateDirectories()) {
Log.Write("Copying " + resource.Name + "... ");
string destFolder = streamFolder + Path.DirectorySeparatorChar + "[" + resource.Name + ']';
resource.GetDirectories().Single(dir => dir.Name == "stream").CopyFilesRecursively(destFolder);
foreach (var file in Directory.GetFiles(streamFolder + "/[" + resource.Name + ']', "_manifest.ymf", SearchOption.AllDirectories).Select(path => new FileInfo(path))) {
file.MoveTo(file.Directory?.FullName + Path.DirectorySeparatorChar + "_manifest_" + resource.Name + ".ymf");
}
Log.CompleteWrite(Constants.DoneString);
}
}
public static void CopyDataFileEntrys(string name, string rootFolder) {
DirectoryInfo resources = new DirectoryInfo(rootFolder);
List<string> manifestLines = new List<string>();
manifestLines.AddRange(File.ReadAllLines(name + "/fxmanifest.lua"));
manifestLines.Add("");
foreach (DirectoryInfo resource in resources.EnumerateDirectories()) {
string manifest = resource.GetFiles().Any(file => file.FullName.EndsWith("fxmanifest.lua")) ? "fxmanifest.lua" : "__resource.lua";
string[] lines = File.ReadAllLines(resource.FullName + Path.DirectorySeparatorChar + manifest);
if (!lines.Any(line => line.StartsWith("data_file") && line.Contains("stream/"))) continue;
lines = lines.Where(line => line.StartsWith("data_file")).ToArray();
manifestLines.Add("");
manifestLines.Add($"-- [{resource.Name}]");
foreach (var line in lines) {
if (!line.Contains("stream/")) continue;
manifestLines.Add(line.Replace("stream/", $"stream/[{resource.Name}]/"));
}
}
File.WriteAllLines(name + "/fxmanifest.lua", manifestLines);
}
}
}

28
MloCombiner/Constants.cs Normal file
View File

@@ -0,0 +1,28 @@
namespace MloCombiner {
public class Constants {
public const string DoneString = "Done!";
public const string Motd = @"
___ ____ _____ _ _
| \/ | | / __ \ | | (_)
| . . | | ___ | / \/ ___ _ __ ___ | |__ _ _ __ ___ _ __
| |\/| | |/ _ \| | / _ \| '_ ` _ \| '_ \| | '_ \ / _ \ '__|
| | | | | (_) | \__/\ (_) | | | | | | |_) | | | | | __/ |
\_| |_/_|\___/ \____/\___/|_| |_| |_|_.__/|_|_| |_|\___|_|
";
public static readonly string[] KnownMetaFiles = { "__resource.lua", "fxmanifest.lua" };
public const string ManifestContent = @"
fx_version 'bodacious'
game 'gta5'
author 'prp'
version '1.0.0'
this_is_a_map 'yes'
";
}
}

View File

@@ -0,0 +1,17 @@
using System.IO;
namespace MloCombiner {
public static class DirectoryInfoExtensions {
public static void CopyFilesRecursively(this DirectoryInfo sourcePath, string targetPath) {
//Now Create all of the directories
foreach (string dirPath in Directory.GetDirectories(sourcePath.FullName, "*", SearchOption.AllDirectories)) {
Directory.CreateDirectory(dirPath.Replace(sourcePath.FullName, targetPath));
}
//Copy all the files & Replaces any files with the same name
foreach (string newPath in Directory.GetFiles(sourcePath.FullName, "*.*", SearchOption.AllDirectories)) {
File.Copy(newPath, newPath.Replace(sourcePath.FullName, targetPath), true);
}
}
}
}

76
MloCombiner/Log.cs Normal file
View File

@@ -0,0 +1,76 @@
using System;
using System.IO;
namespace CarCombiner {
public static class Log {
public static bool EnableLogging { get; set; } = true;
private static bool OpenWrite = false;
private static void WriteScaffolding(string text, ConsoleColor color, TextWriter stream) {
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write("[");
Console.ForegroundColor = color;
Console.Write(text);
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write("] >> ");
}
public static void WriteLine(object message, ConsoleColor color = ConsoleColor.Gray) {
if (!EnableLogging) return;
if (OpenWrite) Console.WriteLine();
WriteScaffolding("INFO", ConsoleColor.Cyan, Console.Out);
Console.ForegroundColor = color;
Console.WriteLine(message);
Console.ResetColor();
OpenWrite = false;
}
public static void Write(object message, ConsoleColor color = ConsoleColor.Gray) {
if (!EnableLogging) return;
if (OpenWrite) Console.WriteLine();
WriteScaffolding("INFO", ConsoleColor.Cyan, Console.Out);
Console.ForegroundColor = color;
Console.Write(message);
OpenWrite = true;
}
public static void CompleteWrite(object message) {
if (!EnableLogging || !OpenWrite) return;
Console.WriteLine(message);
Console.ResetColor();
OpenWrite = false;
}
public static void WriteWarning(object message, ConsoleColor color = ConsoleColor.Gray) {
if (!EnableLogging) return;
if (OpenWrite) Console.WriteLine();
WriteScaffolding("WARNING", ConsoleColor.Yellow, Console.Out);
Console.ForegroundColor = color;
Console.WriteLine(message);
Console.ResetColor();
OpenWrite = false;
}
public static void WriteError(object message, ConsoleColor color = ConsoleColor.Red) {
if (OpenWrite) Console.WriteLine();
WriteScaffolding("ERROR", ConsoleColor.Red, Console.Error);
Console.ForegroundColor = color;
Console.WriteLine(message);
Console.ResetColor();
OpenWrite = false;
}
public static string RequestInput(string text) {
if (OpenWrite) Console.WriteLine();
Console.WriteLine("\n" + text);
Console.Write("> ");
string answer = Console.ReadLine();
Console.WriteLine();
OpenWrite = false;
return answer;
}
}
}

View File

@@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<PackAsTool>true</PackAsTool>
<ToolCommandName>mcb</ToolCommandName>
<PackageOutputPath>./nupkg</PackageOutputPath>
</PropertyGroup>
</Project>

138
MloCombiner/Program.cs Normal file
View File

@@ -0,0 +1,138 @@
using System;
using System.IO;
using System.Linq;
using System.Reflection;
using CarCombiner;
namespace MloCombiner {
class Program {
public static void Main(string[] args) {
var versionString = Assembly.GetEntryAssembly()?
.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?
.InformationalVersion;
Console.Write(Constants.Motd);
Console.WriteLine("\tv" + versionString);
string rootFolder;
string resourceName;
string oldCombiner;
if (args.Length == 0) {
rootFolder = Log.RequestInput("Specify the root folder where the resources are located.");
resourceName = Log.RequestInput("How sould the new resource be called?");
string combineOld = Log.RequestInput("Would you like add a previously combined resource? (y/n)");
if (combineOld.Equals("y"))
oldCombiner = Log.RequestInput("Specify the path of the previously combined resource.");
else oldCombiner = null;
BeginCombining(rootFolder, resourceName, oldCombiner);
return;
}
if (args.Contains("/?")) {
Console.WriteLine("\nUsage:");
Console.WriteLine(" mcb -> quick combine");
Console.WriteLine("\nArguments:");
Console.WriteLine(" -r <path> -> specify the source folder of the resources");
Console.WriteLine(" -o <path> -> specify the output resource name");
Console.WriteLine(" -c <path> -> include previously combined resources");
Console.WriteLine();
return;
}
if (!HandldeArgError(args)) return;
rootFolder = args[Array.IndexOf(args, "-r") + 1];
resourceName = args[Array.IndexOf(args, "-o") + 1];
if (args.Contains("-c"))
oldCombiner = args[Array.IndexOf(args, "-c") + 1];
else oldCombiner = null;
BeginCombining(rootFolder, resourceName, oldCombiner);
}
private static bool HandldeArgError(string[] args) {
if (args.Count(arg => arg.Equals("-r")) > 1) {
Log.WriteError("You can only combine resources from one source folder!");
return false;
}
if (args.Count(arg => arg.Equals("-o")) > 1) {
Log.WriteError("You can only create one output resource!");
return false;
}
if (args.Count(arg => arg.Equals("-c")) > 1) {
Log.WriteError("You can only include one previously combined resource!");
return false;
}
if (!args.Contains("-r")) {
Log.WriteError("you must specify a source folder!");
return false;
}
if (!args.Contains("-o")) {
Log.WriteError("you must specify a output resource!");
return false;
}
return true;
}
private static void BeginCombining(string rootFolder, string resourceName, string oldCombiner) {
Console.WriteLine();
if (!Directory.Exists(rootFolder)) {
Log.WriteError($"The folder '{rootFolder}' does not exist!");
Environment.Exit(404);
return;
}
if (oldCombiner != null && !Directory.Exists(oldCombiner)) {
Log.WriteError($"The folder '{oldCombiner}' does not exist!");
Environment.Exit(404);
return;
}
Log.Write("Checking the resources... ");
string[] extraFiles = Combiner.CheckMaps(rootFolder);
Log.CompleteWrite(Constants.DoneString);
Log.Write("Creating resource folder structure... ");
string streamFolder = Combiner.CreateOutputResource(resourceName, rootFolder);
Log.CompleteWrite(Constants.DoneString);
Console.WriteLine();
if (oldCombiner != null) {
Log.Write("Copying old combined resource... ");
Combiner.CopyOldCombiner(resourceName, oldCombiner);
Log.CompleteWrite(Constants.DoneString);
}
Log.Write("Copying stream files to the new resource... ");
Combiner.CopyStreamData(streamFolder, rootFolder);
Log.CompleteWrite(Constants.DoneString);
Console.WriteLine();
Log.Write("Copying data_file entrys to the new resource...");
Combiner.CopyDataFileEntrys(resourceName, rootFolder);
Log.CompleteWrite(Constants.DoneString);
Console.WriteLine();
if (extraFiles.Length > 0) {
Log.WriteWarning(
$"The following resources have extra metadata files who have not been copied:\n{string.Join(",\n", extraFiles)}\n");
}
Log.WriteLine("All resources have been merged!");
Console.WriteLine();
}
}
}

View File

@@ -0,0 +1,23 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v5.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v5.0": {
"MloCombiner/1.0.0": {
"runtime": {
"MloCombiner.dll": {}
}
}
}
},
"libraries": {
"MloCombiner/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,9 @@
{
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\leon\\.dotnet\\store\\|arch|\\|tfm|",
"C:\\Users\\leon\\.nuget\\packages",
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
]
}
}

View File

@@ -0,0 +1,12 @@
{
"runtimeOptions": {
"tfm": "net5.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "5.0.0"
},
"configProperties": {
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false
}
}
}

View File

@@ -0,0 +1,23 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v5.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v5.0": {
"MloCombiner/1.0.0": {
"runtime": {
"MloCombiner.dll": {}
}
}
}
},
"libraries": {
"MloCombiner/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,12 @@
{
"runtimeOptions": {
"tfm": "net5.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "5.0.0"
},
"configProperties": {
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false
}
}
}

View File

@@ -0,0 +1,67 @@
{
"format": 1,
"restore": {
"D:\\Programmierstuff\\FiveM\\MloCombiner\\MloCombiner.csproj": {}
},
"projects": {
"D:\\Programmierstuff\\FiveM\\MloCombiner\\MloCombiner.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "D:\\Programmierstuff\\FiveM\\MloCombiner\\MloCombiner.csproj",
"projectName": "MloCombiner",
"projectPath": "D:\\Programmierstuff\\FiveM\\MloCombiner\\MloCombiner.csproj",
"packagesPath": "C:\\Users\\leon\\.nuget\\packages\\",
"outputPath": "D:\\Programmierstuff\\FiveM\\MloCombiner\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\leon\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net5.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net5.0": {
"targetAlias": "net5.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net5.0": {
"targetAlias": "net5.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.402\\RuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\leon\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.3.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\leon\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />

View File

@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v5.0", FrameworkDisplayName = "")]

View File

@@ -0,0 +1,22 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("MloCombiner")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("MloCombiner")]
[assembly: System.Reflection.AssemblyTitleAttribute("MloCombiner")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Von der MSBuild WriteCodeFragment-Klasse generiert.

View File

@@ -0,0 +1 @@
2755fa313c23f123ebede267ff347890de83da38

View File

@@ -0,0 +1,10 @@
is_global = true
build_property.TargetFramework = net5.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = MloCombiner
build_property.ProjectDir = D:\Programmierstuff\FiveM\MloCombiner\

View File

@@ -0,0 +1 @@
bb777f223b6bd228256c9db76532a55b6adbcb03

View File

@@ -0,0 +1,16 @@
D:\Programmierstuff\FiveM\MloCombiner\bin\Release\net5.0\MloCombiner.exe
D:\Programmierstuff\FiveM\MloCombiner\bin\Release\net5.0\MloCombiner.deps.json
D:\Programmierstuff\FiveM\MloCombiner\bin\Release\net5.0\MloCombiner.runtimeconfig.json
D:\Programmierstuff\FiveM\MloCombiner\bin\Release\net5.0\MloCombiner.runtimeconfig.dev.json
D:\Programmierstuff\FiveM\MloCombiner\bin\Release\net5.0\MloCombiner.dll
D:\Programmierstuff\FiveM\MloCombiner\bin\Release\net5.0\MloCombiner.pdb
D:\Programmierstuff\FiveM\MloCombiner\obj\Release\net5.0\MloCombiner.csproj.AssemblyReference.cache
D:\Programmierstuff\FiveM\MloCombiner\obj\Release\net5.0\MloCombiner.GeneratedMSBuildEditorConfig.editorconfig
D:\Programmierstuff\FiveM\MloCombiner\obj\Release\net5.0\MloCombiner.AssemblyInfoInputs.cache
D:\Programmierstuff\FiveM\MloCombiner\obj\Release\net5.0\MloCombiner.AssemblyInfo.cs
D:\Programmierstuff\FiveM\MloCombiner\obj\Release\net5.0\MloCombiner.csproj.CoreCompileInputs.cache
D:\Programmierstuff\FiveM\MloCombiner\obj\Release\net5.0\MloCombiner.dll
D:\Programmierstuff\FiveM\MloCombiner\obj\Release\net5.0\refint\MloCombiner.dll
D:\Programmierstuff\FiveM\MloCombiner\obj\Release\net5.0\MloCombiner.pdb
D:\Programmierstuff\FiveM\MloCombiner\obj\Release\net5.0\MloCombiner.genruntimeconfig.cache
D:\Programmierstuff\FiveM\MloCombiner\obj\Release\net5.0\ref\MloCombiner.dll

Binary file not shown.

View File

@@ -0,0 +1 @@
a40e442a63e834f5b74af0c202102c6640429fd6

Binary file not shown.

View File

@@ -0,0 +1,5 @@
D:\Programmierstuff\FiveM\MloCombiner\bin\Release\net5.0\publish\MloCombiner.exe
D:\Programmierstuff\FiveM\MloCombiner\bin\Release\net5.0\publish\MloCombiner.dll
D:\Programmierstuff\FiveM\MloCombiner\bin\Release\net5.0\publish\MloCombiner.deps.json
D:\Programmierstuff\FiveM\MloCombiner\bin\Release\net5.0\publish\MloCombiner.runtimeconfig.json
D:\Programmierstuff\FiveM\MloCombiner\bin\Release\net5.0\publish\MloCombiner.pdb

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,73 @@
{
"version": 3,
"targets": {
"net5.0": {}
},
"libraries": {},
"projectFileDependencyGroups": {
"net5.0": []
},
"packageFolders": {
"C:\\Users\\leon\\.nuget\\packages\\": {},
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "D:\\Programmierstuff\\FiveM\\MloCombiner\\MloCombiner.csproj",
"projectName": "MloCombiner",
"projectPath": "D:\\Programmierstuff\\FiveM\\MloCombiner\\MloCombiner.csproj",
"packagesPath": "C:\\Users\\leon\\.nuget\\packages\\",
"outputPath": "D:\\Programmierstuff\\FiveM\\MloCombiner\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\leon\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net5.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net5.0": {
"targetAlias": "net5.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net5.0": {
"targetAlias": "net5.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.402\\RuntimeIdentifierGraph.json"
}
}
}
}

View File

@@ -0,0 +1,8 @@
{
"version": 2,
"dgSpecHash": "rHtO+w9Iuk/xyW12OSFhKZH6ENc7pBflPOYLvZ24c7VW+gnAbXDf5ijCR1hfT/GJe0XVmpQagexTxJRJOW4wcw==",
"success": true,
"projectFilePath": "D:\\Programmierstuff\\FiveM\\MloCombiner\\MloCombiner.csproj",
"expectedPackageFiles": [],
"logs": []
}

View File

@@ -68,7 +68,7 @@
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.401\\RuntimeIdentifierGraph.json"
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.402\\RuntimeIdentifierGraph.json"
}
}
}

View File

@@ -276,7 +276,7 @@
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.401\\RuntimeIdentifierGraph.json"
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.402\\RuntimeIdentifierGraph.json"
}
}
}

View File

@@ -1,6 +1,6 @@
{
"version": 2,
"dgSpecHash": "27j0kjGonQWCmgZiEmpBRt2dYpQGFvbPTkbfVZijJsoVO2wpznOZZvdo67aMjh+RMWVct4xpG1uCY8MtuMEV4w==",
"dgSpecHash": "sDl7dtKCpNTAGD8AfBr4jFxGrjHglSlNrPW4vKWc6byJKHphR+x7xviIcSUJxaYmYNwr2cTyoSSsxF/wnmYt/Q==",
"success": true,
"projectFilePath": "D:\\Programmierstuff\\FiveM\\MloFinder\\MloFinder.csproj",
"expectedPackageFiles": [

View File

@@ -1 +1 @@
"restore":{"projectUniqueName":"D:\\Programmierstuff\\FiveM\\MloFinder\\MloFinder.csproj","projectName":"MloFinder","projectPath":"D:\\Programmierstuff\\FiveM\\MloFinder\\MloFinder.csproj","outputPath":"D:\\Programmierstuff\\FiveM\\MloFinder\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net5.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net5.0":{"targetAlias":"net5.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net5.0":{"targetAlias":"net5.0","dependencies":{"Swashbuckle.AspNetCore":{"target":"Package","version":"[5.6.3, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\6.0.401\\RuntimeIdentifierGraph.json"}}
"restore":{"projectUniqueName":"D:\\Programmierstuff\\FiveM\\MloFinder\\MloFinder.csproj","projectName":"MloFinder","projectPath":"D:\\Programmierstuff\\FiveM\\MloFinder\\MloFinder.csproj","outputPath":"D:\\Programmierstuff\\FiveM\\MloFinder\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net5.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net5.0":{"targetAlias":"net5.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net5.0":{"targetAlias":"net5.0","dependencies":{"Swashbuckle.AspNetCore":{"target":"Package","version":"[5.6.3, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\6.0.402\\RuntimeIdentifierGraph.json"}}

View File

@@ -1 +1 @@
16635085024174087
16659238268153092