fix: adds control node to ESCGame for UI that must be populated, along with Escoria-only UI methods; this helps to avoid display issues on startup
This commit is contained in:
committed by
Julian Murgia
parent
6afff99e7c
commit
eeb7042d11
@@ -113,7 +113,6 @@ func change_scene(room_path: String, enable_automatic_transitions: bool) -> void
|
|||||||
var game_parent = escoria.game_scene.get_parent()
|
var game_parent = escoria.game_scene.get_parent()
|
||||||
game_parent.remove_child(escoria.game_scene)
|
game_parent.remove_child(escoria.game_scene)
|
||||||
|
|
||||||
#escoria.game_scene.hide_ui()
|
|
||||||
room_scene.add_child(escoria.game_scene)
|
room_scene.add_child(escoria.game_scene)
|
||||||
room_scene.move_child(escoria.game_scene, 0)
|
room_scene.move_child(escoria.game_scene, 0)
|
||||||
room_scene.game = escoria.game_scene
|
room_scene.game = escoria.game_scene
|
||||||
|
|||||||
@@ -31,6 +31,9 @@ export(float) var mouse_tooltip_margin = 50.0
|
|||||||
export(EDITOR_GAME_DEBUG_DISPLAY) var editor_debug_mode = \
|
export(EDITOR_GAME_DEBUG_DISPLAY) var editor_debug_mode = \
|
||||||
EDITOR_GAME_DEBUG_DISPLAY.NONE setget _set_editor_debug_mode
|
EDITOR_GAME_DEBUG_DISPLAY.NONE setget _set_editor_debug_mode
|
||||||
|
|
||||||
|
# The Control node underneath which all UI must be placed.
|
||||||
|
# This should be a Control node and NOT a CanvasLayer (or any other type of) node.
|
||||||
|
export(NodePath) var ui_parent_control_node
|
||||||
|
|
||||||
# A reference to the node handling tooltips
|
# A reference to the node handling tooltips
|
||||||
var tooltip_node: Object
|
var tooltip_node: Object
|
||||||
@@ -421,3 +424,26 @@ func show_crash_popup(files: Array = []) -> void:
|
|||||||
yield(crash_popup, "confirmed")
|
yield(crash_popup, "confirmed")
|
||||||
emit_signal("crash_popup_confirmed")
|
emit_signal("crash_popup_confirmed")
|
||||||
|
|
||||||
|
|
||||||
|
# *** FOR USE BY ESCORIA CORE ONLY ***
|
||||||
|
# Hides everything under the UI Control node.
|
||||||
|
func escoria_hide_ui():
|
||||||
|
if ui_parent_control_node != null and not ui_parent_control_node.is_empty():
|
||||||
|
(get_node(ui_parent_control_node) as Control).visible = false
|
||||||
|
else:
|
||||||
|
escoria.logger.report_warnings(
|
||||||
|
"esc_game.gd#escoria_hide_ui",
|
||||||
|
["UI parent Control node not defined!"]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# *** FOR USE BY ESCORIA CORE ONLY ***
|
||||||
|
# Show everything under the UI Control node.
|
||||||
|
func escoria_show_ui():
|
||||||
|
if ui_parent_control_node != null and not ui_parent_control_node.is_empty():
|
||||||
|
(get_node(ui_parent_control_node) as Control).visible = true
|
||||||
|
else:
|
||||||
|
escoria.logger.report_warnings(
|
||||||
|
"esc_game.gd#escoria_show_ui",
|
||||||
|
["UI parent Control node not defined!"]
|
||||||
|
)
|
||||||
|
|||||||
@@ -172,6 +172,9 @@ func _notification(what):
|
|||||||
# Usually you'll want to show some logos animations before spawning the main
|
# Usually you'll want to show some logos animations before spawning the main
|
||||||
# menu in the escoria/main/game_start_script 's :init event
|
# menu in the escoria/main/game_start_script 's :init event
|
||||||
func init():
|
func init():
|
||||||
|
# Don't show the UI until we're ready in order to avoid a sometimes-noticeable
|
||||||
|
# blink. The UI will be "shown" later via a visibility update to the first room.
|
||||||
|
escoria.game_scene.escoria_hide_ui()
|
||||||
run_event_from_script(start_script, self.event_manager.EVENT_INIT)
|
run_event_from_script(start_script, self.event_manager.EVENT_INIT)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ bg_color = Color( 0.6, 0.6, 0.6, 0.5 )
|
|||||||
script = ExtResource( 5 )
|
script = ExtResource( 5 )
|
||||||
main_menu = NodePath("ui/main_menu")
|
main_menu = NodePath("ui/main_menu")
|
||||||
pause_menu = NodePath("ui/pause_menu")
|
pause_menu = NodePath("ui/pause_menu")
|
||||||
|
ui_parent_control_node = NodePath("ui/Control")
|
||||||
|
|
||||||
[node name="dialog_layer" type="CanvasLayer" parent="."]
|
[node name="dialog_layer" type="CanvasLayer" parent="."]
|
||||||
|
|
||||||
@@ -143,15 +144,6 @@ margin_bottom = 200.0
|
|||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
[node name="hover_stack" type="Label" parent="ui"]
|
|
||||||
margin_left = 1085.0
|
|
||||||
margin_top = 2.81912
|
|
||||||
margin_right = 1283.0
|
|
||||||
margin_bottom = 107.819
|
|
||||||
__meta__ = {
|
|
||||||
"_edit_use_anchors_": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="main_menu" parent="ui" instance=ExtResource( 7 )]
|
[node name="main_menu" parent="ui" instance=ExtResource( 7 )]
|
||||||
visible = false
|
visible = false
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user