42 lines
1.5 KiB
C#
42 lines
1.5 KiB
C#
|
#if UNITY_EDITOR
|
||
|
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using System.IO;
|
||
|
using System.Linq;
|
||
|
using UnityEditor;
|
||
|
using UnityEditor.Build;
|
||
|
using UnityEditor.Build.Reporting;
|
||
|
using UnityEditor.Compilation;
|
||
|
using UnityEngine;
|
||
|
|
||
|
public class DialogueBuildProcessor : IPreprocessBuildWithReport, IPostprocessBuildWithReport
|
||
|
{
|
||
|
public int callbackOrder => 0;
|
||
|
|
||
|
public void OnPreprocessBuild(BuildReport report)
|
||
|
{
|
||
|
Debug.Log(":: begin dialogue import");
|
||
|
if (DialogueDatabase.Import() != 0) throw new BuildFailedException(":: dialogue import failed");
|
||
|
Debug.Log(":: dialogue import complete");
|
||
|
}
|
||
|
|
||
|
public void OnPostprocessBuild(BuildReport report)
|
||
|
{
|
||
|
Debug.Log($"DialogueBuildProcessor.OnPostprocessBuild for target {report.summary.platform} at path {report.summary.outputPath}");
|
||
|
|
||
|
// copy dialogue csv to build _Data folder
|
||
|
var dir = Path.GetDirectoryName(report.summary.outputPath);
|
||
|
if (dir == null) throw new BuildFailedException("no build directory");
|
||
|
|
||
|
var dataDir = Directory
|
||
|
.GetDirectories(dir)
|
||
|
.Single(p => p.EndsWith("_Data"));
|
||
|
var buildPath = Path.Combine(dataDir, DialogueDatabase.DIALOGUE_FILENAME);
|
||
|
|
||
|
File.Copy(DialogueDatabase.EDITOR_DialogueFile, buildPath);
|
||
|
Debug.Log($":: copied dialogue file {DialogueDatabase.EDITOR_DialogueFile} to output folder {buildPath}");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endif
|