52 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
| ## A compiler of Dialogue Manager dialogue.
 | |
| class_name DMCompiler extends RefCounted
 | |
| 
 | |
| 
 | |
| ## Compile a dialogue script.
 | |
| static func compile_string(text: String, path: String) -> DMCompilerResult:
 | |
| 	var compilation: DMCompilation = DMCompilation.new()
 | |
| 	compilation.compile(text, path)
 | |
| 
 | |
| 	var result: DMCompilerResult = DMCompilerResult.new()
 | |
| 	result.imported_paths = compilation.imported_paths
 | |
| 	result.using_states = compilation.using_states
 | |
| 	result.character_names = compilation.character_names
 | |
| 	result.titles = compilation.titles
 | |
| 	result.first_title = compilation.first_title
 | |
| 	result.errors = compilation.errors
 | |
| 	result.lines = compilation.data
 | |
| 	result.raw_text = text
 | |
| 
 | |
| 	return result
 | |
| 
 | |
| 
 | |
| ## Get the line type of a string. The returned string will match one of the [code]TYPE_[/code] constants of [DMConstants].
 | |
| static func get_line_type(text: String) -> String:
 | |
| 	var compilation: DMCompilation = DMCompilation.new()
 | |
| 	return compilation.get_line_type(text)
 | |
| 
 | |
| 
 | |
| ## Get the static line ID (eg. [code][ID:SOMETHING][/code]) of some text.
 | |
| static func get_static_line_id(text: String) -> String:
 | |
| 	var compilation: DMCompilation = DMCompilation.new()
 | |
| 	return compilation.extract_static_line_id(text)
 | |
| 
 | |
| 
 | |
| ## Get the translatable part of a line.
 | |
| static func extract_translatable_string(text: String) -> String:
 | |
| 	var compilation: DMCompilation = DMCompilation.new()
 | |
| 
 | |
| 	var tree_line = DMTreeLine.new("")
 | |
| 	tree_line.text = text
 | |
| 	var line: DMCompiledLine = DMCompiledLine.new("", compilation.get_line_type(text))
 | |
| 	compilation.parse_character_and_dialogue(tree_line, line, [tree_line], 0, null)
 | |
| 
 | |
| 	return line.text
 | |
| 
 | |
| 
 | |
| ## Get the known titles in a dialogue script.
 | |
| static func get_titles_in_text(text: String, path: String) -> Dictionary:
 | |
| 	var compilation: DMCompilation = DMCompilation.new()
 | |
| 	compilation.build_line_tree(compilation.inject_imported_files(text, path))
 | |
| 	return compilation.titles
 |