JD2022-TU1/main/tools/apps/Packager/BuildConfigurations/PatchTaskList.cs

183 lines
7.4 KiB
C#

using System.ComponentModel;
using System.IO;
using JD.Core.ProjectManaging;
using Packager.Tasks;
using Packager.Parameters;
namespace Packager.BuildConfigurations
{
/// <summary>
/// To generate the task list for the patches
/// On Main patches are generated for X1, wiiu and Ps4 (America and Europe)
/// </summary>
public class PatchTaskList : LocalTaskList
{
[Browsable(true)]
public string BundleDirectory { get; set; }
protected ChecksumFilterTask ChecksumFilterTask { get; set; }
private GenerateChecksumTask GenBundleChecksumTask { get; set; }
protected FileListTask GeneratePatchVersionContentTask { get; set; }
protected BundlingTask PatchBundleTask { get; set; }
private bool hasOneBundlePerMap()
{
return Platform.IsX1OrPs4() || Platform == Parameters.Platform.Nx || Platform.IsXSXOrPs5();
}
private bool hasBundlesOfMaps()
{
return Platform == Parameters.Platform.Wiiu;
}
public override void Initialize()
{
if (hasOneBundlePerMap())
{
PatchTasklistOneBundlePerMap();
}
else if (hasBundlesOfMaps())
{
PatchTaskListBundlesOfMaps();
}
}
private void PatchTaskListBundlesOfMaps()
{
base.Initialize();
GenBundleChecksumTask = AddTaskAfter<GenerateChecksumTask>("Generate Bundle Checksum", MergeFileListTask);
GenBundleChecksumTask.InputdirectoryPath.Value = DataPath.GetAbsolutePath(BundleDirectory);
GenBundleChecksumTask.FileName.Value = Path.GetFileNameWithoutExtension(BundleDirectory);
#region CheckSum Filter
ChecksumFilterTask = AddTaskAfter<ChecksumFilterTask>("Checksum Filter", GenBundleChecksumTask);
ChecksumFilterTask.InputFiles.Add(LogFilterTask.LogicBootLogs,
SkuSceneFilterLogicFilesTask.FilteredList,
MapSpecificFilterLogicFilesTask.FilteredList,
CommonDepsFilterLogicFilesTask.FilteredList,
BlockFlowFilterLogicFilesTask.FilteredList,
FilterCommonDependencyTask.FilteredDependencies,
CommonDependenciesTask.DependenciesFilePaths,
BootFileListTask.OutputFileList,
SkuSceneDependencyTask.DependenciesFilePaths,
ExtractMapSpecificDependenciesTask.CommonFileList,
WatermarkTask.OutputFileList,
MergeFileListTask.MergedFilePaths,
BlockFlowFilterLogicFilesTask.OtherFilesList);
ChecksumFilterTask.PreviousChecksums.Add(GenBundleChecksumTask.ChecksumFile);
#endregion
#region Generate Patch Version Content Task
GeneratePatchVersionContentTask = AddTaskAfter<FileListTask>("Generate patch version content", ChecksumFilterTask);
GeneratePatchVersionContentTask.FileList.Add(@"EngineData\Patch\wiiu\" + PlatformRegion + @"\version.txt");
GeneratePatchVersionContentTask.FileName.Add(@"patch_version_content.txt");
#endregion
#region Patch Bundle
PatchBundleTask = AddTaskAfter<BundlingTask>("Patch Bundle", GeneratePatchVersionContentTask);
PatchBundleTask.CacheKey = GenCacheTask.Guid;
PatchBundleTask.AssetsList.Add(ChecksumFilterTask.ChangedList,
ChecksumFilterTask.NewList,
GeneratePatchVersionContentTask.OutputFileList);
PatchBundleTask.BundleName.Add("Patch");
#endregion
#region Copy To Output Folder
CopyToOutputFolder.FileList.Clear();
CopyToOutputFolder.FileList.Add(PatchBundleTask.BundlePaths, ChecksumFilterTask.UpdatedChecksums);
#endregion
#region Remove steps
Remove(BootLogicBundleTask);
Remove(LogicBundleTask);
Remove(CommonBundleTask);
Remove(MapBundleTask);
Remove(BlockFlowBundleTask);
Remove(SecureFatTask);
Remove(BundleStatsTask);
#endregion
}
private void PatchTasklistOneBundlePerMap()
{
base.Initialize();
// TO DO : fix it properly
// there is no "one bundle per map" when creating a patch
// to prevent the new files to be ignored we do not zip files with bundle name
MapBundleTask.ZipAssestListWithBundleName.Value = "false";
CookingTask.AssetsList.Remove(ExcludeWaveFilesFromBlocksTask.OtherFilesList);
GenBundleChecksumTask = AddTaskAfter<GenerateChecksumTask>("Generate Bundle Checksum", BootFileListTask);
GenBundleChecksumTask.InputdirectoryPath.Value = DataPath.GetAbsolutePath(BundleDirectory);
GenBundleChecksumTask.FileName.Value = Path.GetFileNameWithoutExtension(BundleDirectory);
ChecksumFilterTask = AddTaskAfter<ChecksumFilterTask>("Checksum Filter", GenBundleChecksumTask);
// account for data from common bundle and map bundles
ChecksumFilterTask.InputFiles.Add(
FilterCommonDependencyTask.FilteredDependencies,
CommonDependenciesTask.DependenciesFilePaths,
BootFileListTask.OutputFileList,
SkuSceneDependencyTask.DependenciesFilePaths,
ExtractMapSpecificDependenciesTask.CommonFileList,
WatermarkTask.OutputFileList,
FilterMapSpecificWithSkuSceneTask.DependencyFiles);
ChecksumFilterTask.PreviousChecksums.Add(GenBundleChecksumTask.ChecksumFile);
PatchBundleTask = MapBundleTask;
PatchBundleTask.InstanceName = "Patch Bundle";
PatchBundleTask.BundleName.Clear();
PatchBundleTask.AssetsList.Clear();
PatchBundleTask.BundleName.Add("Patch");
PatchBundleTask.AssetsList.Add(ChecksumFilterTask.ChangedList, ChecksumFilterTask.NewList);
if (Platform != Parameters.Platform.Nx)
{
PackageConfigTask.OptionalFiles.Clear();
PackageConfigTask.RequiredFiles.Clear();
PackageConfigTask.PackageOrderFile.Value = @"EngineData\GameToolPackageTask\UpdatedPackageOrder.xml";
PackageConfigTask.TemplateFile.Value = @"EngineData\GameToolPackageTask\chunkmappingtemplate.xml";
PackageConfigTask.UpdateFiles.Clear();
PackageConfigTask.UpdateFiles.Add(PatchBundleTask.BundlePaths);
}
CopyToOutputFolder.FileList.Remove(CommonBundleTask.BundlePaths, MapBundleTask.BundlePaths, SecureFatTask.SecureFat, CreateMapTask.OutputFileList, BlockFlowBundleTask.BundlePaths, BundleStatsTask.StatFiles);
CopyToOutputFolder.FileList.Add(PatchBundleTask.BundlePaths, ChecksumFilterTask.UpdatedChecksums);
Remove(CreateMapTask);
Remove(BlockFlowMapsTask);
Remove(BlockFlowDependencyTask);
Remove(ExcludeWaveFilesFromBlocksTask);
Remove(BlockFlowBundleTask);
Remove(SecureFatTask);
Remove(BundleStatsTask);
if(Platform == Parameters.Platform.Orbis)
{
Remove(BootLogicBundleTask);
Remove(LogicBundleTask);
}
Remove(CommonBundleTask);
}
}
}