74 lines
2.7 KiB
C#
74 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using JD.Core.ProjectManaging;
|
|
using Packager.Parameters;
|
|
|
|
namespace Packager.Tasks
|
|
{
|
|
[DisplayName("Merge Containers")]
|
|
public class MergeContainers: Task
|
|
{
|
|
[Input("Directory List", IOCardinality.Multi, IOType.Directory)]
|
|
public List<string> Directories { get; set; }
|
|
|
|
[Input("Map List", IOCardinality.Multi, IOType.File)]
|
|
public List<string> MapList { get; set; }
|
|
|
|
[Input("Map File Name", IOCardinality.Single, IOType.String)]
|
|
public List<string> MapFileName { get; set; }
|
|
|
|
[Output("Merged Map List", IOType.File)]
|
|
public List<string> MergedMapList = new List<string>();
|
|
|
|
[Output("Common List", IOType.File)]
|
|
public List<string> CommonList = new List<string>();
|
|
|
|
public MergeContainers()
|
|
{
|
|
Directories = new List<string>();
|
|
MapList = new List<string>();
|
|
MapFileName = new List<string>();
|
|
}
|
|
|
|
public override bool NeedCooker => true;
|
|
|
|
protected override void StartInternal(BuildConfiguration profile, cookerWrapper cooker, TaskIO inputs, string outputFolder)
|
|
{
|
|
var directories = inputs["Directories"];
|
|
|
|
string platform = profile.PlatformList.First();
|
|
string atlasContainer = null;
|
|
string sgsContainer = null;
|
|
|
|
cooker.getCookedNamePlatform("atlascontainer", platform, ref atlasContainer);
|
|
cooker.getCookedNamePlatform("sgscontainer", platform, ref sgsContainer);
|
|
|
|
var atlasFiles = directories.Select(dir => Path.Combine(dir, atlasContainer)).Union(new[] { Path.Combine(DataPath.Value, atlasContainer) });
|
|
var sgsFiles = directories.Select(dir => Path.Combine(dir, sgsContainer)).Union(new[] { Path.Combine(DataPath.Value, sgsContainer) });
|
|
|
|
cooker.mergeAtlasContainer(atlasContainer, atlasFiles.ToList());
|
|
cooker.mergeSgsContainer(sgsContainer, profile.CookLogicToBinary, sgsFiles.ToList());
|
|
|
|
// merge map list
|
|
var mapFileName = inputs["MapFileName"].First();
|
|
var maps = new List<string>(inputs["MapList"]);
|
|
|
|
foreach (var dir in directories)
|
|
{
|
|
var mapfile = Path.Combine(dir, mapFileName);
|
|
var commonFile = Path.Combine(dir, "common.txt");
|
|
|
|
if(File.Exists(mapfile))
|
|
maps.AddRange(File.ReadAllLines(mapfile));
|
|
|
|
if (File.Exists(commonFile))
|
|
CommonList.Add(commonFile);
|
|
}
|
|
MergedMapList.AddRange(maps);
|
|
//OnFinished(0);
|
|
}
|
|
}
|
|
}
|