Figments-of-the-Night/addons/inkgd/editor/common/ink_editor_interface.gd
Gerard Gascón b99855351d init
2025-04-24 17:23:34 +02:00

84 lines
3 KiB
GDScript

# ############################################################################ #
# Copyright © 2019-2022 Frédéric Maquin <fred@ephread.com>
# Licensed under the MIT License.
# See LICENSE in the project root for license information.
# ############################################################################ #
extends RefCounted
class_name InkEditorInterface
# ############################################################################ #
# Signals
# ############################################################################ #
## Emitted when 'Ink' resources (i. e. files with the '.ink' extension) were
## reimported by Godot.
signal ink_ressources_reimported(resources)
# ############################################################################ #
# Properties
# ############################################################################ #
## The pixel display scale of the editor.
var scale: float = 1.0
var editor_interface: EditorInterface
var editor_settings: EditorSettings
var editor_filesystem: EditorFileSystem
## `true` if the editor is running on Windows, `false` otherwise.
var is_running_on_windows: bool: get = get_is_running_on_windows
func get_is_running_on_windows() -> bool:
var os_name = OS.get_name()
return (os_name == "Windows" || os_name == "UWP")
# ############################################################################ #
# Overrides
# ############################################################################ #
@warning_ignore("shadowed_variable")
func _init(editor_interface: EditorInterface):
self.editor_interface = editor_interface
self.editor_settings = editor_interface.get_editor_settings()
self.editor_filesystem = editor_interface.get_resource_filesystem()
scale = editor_interface.get_editor_scale()
self.editor_filesystem.connect("resources_reimported", Callable(self, "_resources_reimported"))
# ############################################################################ #
# Methods
# ############################################################################ #
## Tell Godot to scan for updated resources.
func scan_file_system():
self.editor_filesystem.scan()
## Tell Godot to scan the given resource.
func update_file(path: String):
self.editor_filesystem.update_file(path)
## Returns a custom header color based on the editor's base color.
##
## If the base color is not found, return 'Color.transparent'.
func get_custom_header_color() -> Color:
var color = self.editor_settings.get_setting("interface/theme/base_color")
if color != null:
return Color.from_hsv(color.h * 0.99, color.s * 0.6, color.v * 1.1)
else:
return Color.TRANSPARENT
# ############################################################################ #
# Signal Receivers
# ############################################################################ #
func _resources_reimported(resources):
var ink_resources := PackedStringArray()
for resource in resources:
if resource.get_extension() == "ink":
ink_resources.append(resource)
emit_signal("ink_ressources_reimported", ink_resources)