JD2022-TU1/main/tools/apps/Packager/Tasks/GenerateAudioPreviewTask.cs

56 lines
1.9 KiB
C#

using System;
using System.ComponentModel;
using System.IO;
using JD.Asset;
using JD.Asset.Types.Map;
using Packager.Parameters;
namespace Packager.Tasks
{
[DisplayName("GenerateAudioPreviewTask")]
public class GenerateAudioPreviewTask : Task
{
[Input("Map List", IOCardinality.Multi, IOType.File)]
public ReferenceList MapList { get; set; }
[Output("Audio Preview json", IOType.File)]
public ReferenceList AudioPreviewJson = new ReferenceList();
public override bool NeedCooker { get { return true; } }
public GenerateAudioPreviewTask()
{
MapList = new ReferenceList();
}
protected override void StartInternal(BuildConfiguration profile, cookerWrapper cooker)
{
foreach (var iscPath in MapList)
{
var map = Map.FromPath(iscPath);
var originalMusicTrackTplPath = map.MusicTrack;
var jsonName = map.Name + "_AudioPreview.json";
var destTrkJsonPath = new PathInfo(Path.Combine(TaskOutputFolder, jsonName));
// URL has been defined as "jmcs://jd-contents/mapName/mapName_AudioPreview.ogg"
var url = "jmcs://jd-contents/" + map.Name + "/" + map.Name+ "_AudioPreview.ogg";
// generate audio preview json
var trkJson = string.Empty;
var retValJson = cooker.generateAudioPreviewTrkToJson(originalMusicTrackTplPath.Relative, url, ref trkJson);
if (retValJson)
{
System.IO.File.WriteAllText(destTrkJsonPath.ToString(), trkJson);
LogMessage(false, $"Generated {destTrkJsonPath}.");
}
else
{
LogMessage(false, $"ERROR: unable to generate {destTrkJsonPath}.");
}
AudioPreviewJson.Add(destTrkJsonPath.ToString());
}
}
}
}