feat: Several fixes and optimizations (#467)
Co-authored-by: Dennis Ploeger <develop@dieploegers.de>
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
# The escoria main script
|
||||
tool
|
||||
extends Node
|
||||
|
||||
# Signal sent when pause menu has to be displayed
|
||||
@@ -310,12 +311,6 @@ func _input(event):
|
||||
if event.is_action_pressed("ui_cancel"):
|
||||
emit_signal("request_pause_menu")
|
||||
|
||||
if ProjectSettings.get_setting("escoria/ui/tooltip_follows_mouse"):
|
||||
if escoria.main.current_scene and escoria.main.current_scene.game:
|
||||
if event is InputEventMouseMotion:
|
||||
escoria.main.current_scene.game. \
|
||||
update_tooltip_following_mouse_position(event.position)
|
||||
|
||||
|
||||
# Pauses or unpause the game
|
||||
#
|
||||
@@ -349,6 +344,110 @@ func run_event_from_script(script: ESCScript, event_name: String):
|
||||
[]
|
||||
)
|
||||
return
|
||||
|
||||
|
||||
# Register a new project setting if it hasn't been defined already
|
||||
#
|
||||
# #### Parameters
|
||||
#
|
||||
# - name: Name of the project setting
|
||||
# - default: Default value
|
||||
# - info: Property info for the setting
|
||||
func register_setting(name: String, default, info: Dictionary):
|
||||
if not ProjectSettings.has_setting(name):
|
||||
ProjectSettings.set_setting(
|
||||
name,
|
||||
default
|
||||
)
|
||||
info.name = name
|
||||
ProjectSettings.add_property_info(info)
|
||||
|
||||
|
||||
# Register a user interface. This should be called in a deferred way
|
||||
# from the addon's _enter_tree.
|
||||
#
|
||||
# #### Parameters
|
||||
# - game_scene: Path to the game scene extending ESCGame
|
||||
func register_ui(game_scene: String):
|
||||
if not ProjectSettings.get_setting("escoria/ui/game_scene") in [
|
||||
"",
|
||||
game_scene
|
||||
]:
|
||||
logger.report_errors(
|
||||
"escoria.gd:register_ui()",
|
||||
[
|
||||
"Can't register user interface because %s is registered" % \
|
||||
ProjectSettings.get_setting("escoria/ui/game_scene")
|
||||
]
|
||||
)
|
||||
ProjectSettings.set_setting(
|
||||
"escoria/ui/game_scene",
|
||||
game_scene
|
||||
)
|
||||
|
||||
|
||||
# Deregister a user interface
|
||||
#
|
||||
# #### Parameters
|
||||
# - game_scene: Path to the game scene extending ESCGame
|
||||
func deregister_ui(game_scene: String):
|
||||
if ProjectSettings.get_setting("escoria/ui/game_scene") != game_scene:
|
||||
logger.report_errors(
|
||||
"escoria.gd:deregister_ui()",
|
||||
[
|
||||
(
|
||||
"Can't deregister user interface %s because it " +
|
||||
"is not registered."
|
||||
) % ProjectSettings.get_setting("escoria/ui/game_scene")
|
||||
]
|
||||
)
|
||||
ProjectSettings.set_setting(
|
||||
"escoria/ui/game_scene",
|
||||
""
|
||||
)
|
||||
|
||||
|
||||
# Register a dialog manager addon. This should be called in a deferred way
|
||||
# from the addon's _enter_tree.
|
||||
#
|
||||
# #### Parameters
|
||||
# - manager_class: Path to the manager class script
|
||||
func register_dialog_manager(manager_class: String):
|
||||
var dialog_managers: Array = ProjectSettings.get_setting(
|
||||
"escoria/ui/dialog_managers"
|
||||
)
|
||||
if manager_class in dialog_managers:
|
||||
return
|
||||
dialog_managers.push_back(manager_class)
|
||||
ProjectSettings.set_setting(
|
||||
"escoria/ui/dialog_managers",
|
||||
dialog_managers
|
||||
)
|
||||
|
||||
|
||||
# Deregister a dialog manager addon
|
||||
#
|
||||
# #### Parameters
|
||||
# - manager_class: Path to the manager class script
|
||||
func deregister_dialog_manager(manager_class: String):
|
||||
var dialog_managers: Array = ProjectSettings.get_setting(
|
||||
"escoria/ui/dialog_managers"
|
||||
)
|
||||
if not manager_class in dialog_managers:
|
||||
logger.report_warnings(
|
||||
"escoria.gd:deregister_dialog_manager()",
|
||||
[
|
||||
"Dialog manager %s is not registered" % manager_class
|
||||
]
|
||||
)
|
||||
return
|
||||
|
||||
dialog_managers.erase(manager_class)
|
||||
|
||||
ProjectSettings.set_setting(
|
||||
"escoria/ui/dialog_managers",
|
||||
dialog_managers
|
||||
)
|
||||
|
||||
|
||||
# Function called to quit the game.
|
||||
|
||||
Reference in New Issue
Block a user