You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			77 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			GDScript
		
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			GDScript
		
	
| @tool
 | |
| extends EditorPlugin
 | |
| 
 | |
| enum { TAB_EDITOR, TAB_OVERVIEW, TAB_MANAGE }
 | |
| 
 | |
| var main: Control
 | |
| var modified: bool:
 | |
| 	set(m):
 | |
| 		if m == modified:
 | |
| 			return
 | |
| 		
 | |
| 		modified = m
 | |
| 		dirty_toggled.emit(modified)
 | |
| 
 | |
| var theme_scanner: Timer
 | |
| var prev_theme_state: Array
 | |
| 
 | |
| signal dirty_toggled
 | |
| 
 | |
| func _has_main_screen() -> bool:
 | |
| 	return true
 | |
| 
 | |
| func _get_plugin_name() -> String:
 | |
| 	return "MetSys"
 | |
| 
 | |
| func _get_plugin_icon() -> Texture2D:
 | |
| 	return preload("res://addons/MetroidvaniaSystem/Icon.png")
 | |
| 
 | |
| func _enter_tree() -> void:
 | |
| 	theme_scanner = Timer.new()
 | |
| 	theme_scanner.wait_time = 0.6
 | |
| 	add_child(theme_scanner)
 | |
| 	theme_scanner.timeout.connect(check_theme)
 | |
| 	
 | |
| 	await get_tree().process_frame
 | |
| 	if not get_singleton():
 | |
| 		add_autoload_singleton("MetSys", "res://addons/MetroidvaniaSystem/Nodes/Singleton.tscn")
 | |
| 		ProjectSettings.save()
 | |
| 		OS.set_restart_on_exit(true, ["-e"])
 | |
| 		get_tree().quit()
 | |
| 		return
 | |
| 	
 | |
| 	main = preload("res://addons/MetroidvaniaSystem/Database/Main.tscn").instantiate()
 | |
| 	main.plugin = self
 | |
| 	get_editor_interface().get_editor_main_screen().add_child(main)
 | |
| 	main.hide()
 | |
| 	
 | |
| 	get_singleton().settings.theme_changed.connect(func(): prev_theme_state.clear())
 | |
| 
 | |
| func _exit_tree() -> void:
 | |
| 	main.queue_free()
 | |
| 
 | |
| func _make_visible(visible: bool) -> void:
 | |
| 	main.visible = visible
 | |
| 	if visible:
 | |
| 		theme_scanner.start()
 | |
| 	else:
 | |
| 		theme_scanner.stop()
 | |
| 
 | |
| func _save_external_data() -> void:
 | |
| 	get_singleton().map_data.save_data()
 | |
| 	modified = false
 | |
| 
 | |
| func _get_unsaved_status(for_scene: String) -> String:
 | |
| 	if modified and for_scene.is_empty():
 | |
| 		return "MetSys map has been modified."
 | |
| 	return ""
 | |
| 
 | |
| func get_singleton() -> MetroidvaniaSystem:
 | |
| 	return get_tree().root.get_node_or_null(^"MetSys")
 | |
| 
 | |
| func check_theme():
 | |
| 	var theme := get_singleton().settings.theme
 | |
| 	var changed := theme.check_for_changes(prev_theme_state)
 | |
| 	if not changed.is_empty():
 | |
| 		get_singleton().theme_modified.emit(changed)
 |