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)