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 |