56 lines
1.9 KiB
C#
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());
|
|
}
|
|
}
|
|
}
|
|
}
|