stage management updates
This commit is contained in:
parent
5484c47904
commit
7b21cbfa10
|
|
@ -1,6 +1,19 @@
|
||||||
extends Area3D
|
extends Area3D
|
||||||
|
|
||||||
@onready var pass_to_actor = $UiWrapper/UiSprite/SubViewport/Collectable_ui
|
@onready var pass_to_actor = $UiWrapper/UiSprite/SubViewport/Collectable_ui
|
||||||
|
@onready var wrapper = $UiWrapper
|
||||||
|
@onready var ui = $UiWrapper/UiSprite/SubViewport.get_child(0)
|
||||||
|
|
||||||
|
var revealed: bool = false:
|
||||||
|
set(on_stage):
|
||||||
|
revealed = on_stage
|
||||||
|
if on_stage:
|
||||||
|
wrapper.show()
|
||||||
|
ui.show()
|
||||||
|
else:
|
||||||
|
wrapper.hide()
|
||||||
|
ui.hide()
|
||||||
|
|
||||||
var has_mouse: bool = false
|
var has_mouse: bool = false
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
|
|
@ -9,9 +22,11 @@ func _ready():
|
||||||
|
|
||||||
func _on_mouse_entered():
|
func _on_mouse_entered():
|
||||||
input_ray_pickable = false
|
input_ray_pickable = false
|
||||||
$UiWrapper.show()
|
ui.collapsed = false
|
||||||
$UiWrapper/UiSprite/SubViewport/Collectable_ui.show()
|
|
||||||
has_mouse = true
|
has_mouse = true
|
||||||
|
|
||||||
func _on_mouse_exited():
|
func _on_mouse_exited():
|
||||||
assert(false)
|
assert(false)
|
||||||
|
|
||||||
|
func reveal():
|
||||||
|
revealed = true
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ func take_stage(actor: Object, reclaim: bool = false) -> bool:
|
||||||
if stage_list.has(actor):
|
if stage_list.has(actor):
|
||||||
while stage_list.pop_front() != actor: break
|
while stage_list.pop_front() != actor: break
|
||||||
actor.has_stage = true
|
actor.has_stage = true
|
||||||
|
stage_list.push_front(actor)
|
||||||
return actor.has_stage
|
return actor.has_stage
|
||||||
push_warning(actor, " wanted to reclaim focus, but was not on list.")
|
push_warning(actor, " wanted to reclaim focus, but was not on list.")
|
||||||
return pass_stage_to(actor)
|
return pass_stage_to(actor)
|
||||||
|
|
@ -55,10 +56,11 @@ func pass_stage_to(target:Object) -> bool:
|
||||||
push_error("Focus instance not valid")
|
push_error("Focus instance not valid")
|
||||||
elif !"has_stage" in target:
|
elif !"has_stage" in target:
|
||||||
push_error(target, " has no has focus method.")
|
push_error(target, " has no has focus method.")
|
||||||
if stage_list.size() > 0:
|
|
||||||
if stage_list.front() == target:
|
|
||||||
push_warning(target, " is already target. Abort passing focus.")
|
|
||||||
else:
|
else:
|
||||||
|
if stage_list.size() > 0:
|
||||||
|
if stage_list.front() == target:
|
||||||
|
push_warning(target, " is already target. Abort passing focus.")
|
||||||
|
return false
|
||||||
if not stage_list.size() == 0: stage_list.front().has_stage = false
|
if not stage_list.size() == 0: stage_list.front().has_stage = false
|
||||||
target.has_stage = true
|
target.has_stage = true
|
||||||
if target.has_stage:
|
if target.has_stage:
|
||||||
|
|
@ -69,7 +71,13 @@ func pass_stage_to(target:Object) -> bool:
|
||||||
|
|
||||||
# Currently focused element loses focus, but remains in stack.
|
# Currently focused element loses focus, but remains in stack.
|
||||||
func free_focus():
|
func free_focus():
|
||||||
if not stage_list.front() == null: stage_list.front().has_stage = false
|
if stage_list.size() > 0: stage_list.front().has_stage = false
|
||||||
|
|
||||||
func queue_for_stage(target: Object, index: int):
|
func transition_stage_to(thief: Object):
|
||||||
|
if stage_list.size() > 0:
|
||||||
|
if stage_list.front().has_stage:
|
||||||
|
stage_list.pop_front().has_stage = false
|
||||||
|
return pass_stage_to(thief)
|
||||||
|
|
||||||
|
func queue_for_stage(target: Object, index: int = 1):
|
||||||
stage_list.insert(index, target)
|
stage_list.insert(index, target)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue