183 lines
7.4 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|