everything_has_a_price_jam/user_context.gd
2026-09-26 23:54:33 -06:00

52 lines
1.3 KiB
GDScript

extends Node
@warning_ignore("unused_signal")
signal currency_inspect(c: Currency)
@warning_ignore("unused_signal")
signal member_inspect(c: CurrencyMemberSprite)
@warning_ignore("unused_signal")
signal open_inbox
var selected_member: CurrencyMemberSprite = null
var focused_members: Array[CurrencyMemberSprite] = []
signal selected_member_change(current: CurrencyMemberSprite)
var modal_command: Command
signal modal_command_change(c: Command)
func modal(c: Command):
modal_command = c
modal_command_change.emit(c)
func select_focused_member():
var candidate := focused_member()
if candidate == null:
return
if selected_member != null:
unselect_member()
selected_member = candidate
selected_member.tree_exiting.connect(unselect_member)
selected_member_change.emit(selected_member)
UserContext.member_inspect.emit(selected_member)
func unselect_member():
if selected_member == null:
return
selected_member.tree_exiting.disconnect(unselect_member)
selected_member = null
func focused_member() -> CurrencyMemberSprite:
if focused_members.size() == 0:
return null
return focused_members[focused_members.size()-1]
func focus_member(member: CurrencyMemberSprite):
focused_members.append(member)
func unfocus_member(member: CurrencyMemberSprite):
var i := focused_members.find(member)
if i == -1:
return
focused_members.remove_at(i)