extends Control class_name Dialog signal answered # (accepted: bool) signal accepted # () signal rejected # () export var clear_signals_on_hide := true var message : Label var accept : Button var reject : Button func _init(): self.anchor_right = 1.0 self.anchor_bottom = 1.0 self.rect_clip_content = true self.connect("hide", self, "_clear_signals") reject = Button.new() reject.anchor_top = 1.0 reject.anchor_left = 0.0 reject.anchor_right = 0.5 reject.grow_vertical = Control.GROW_DIRECTION_BEGIN reject.name = "reject" reject.connect("pressed", self, "_signal_rejected") add_child(reject) accept = Button.new() accept.anchor_top = 1.0 accept.anchor_left = 0.5 accept.anchor_right = 1.0 accept.grow_vertical = Control.GROW_DIRECTION_BEGIN accept.name = "accept" accept.connect("pressed", self, "_signal_accepted") add_child(accept) message = Label.new() message.autowrap = true message.align = Label.ALIGN_CENTER message.anchor_right = 1.0 message.anchor_bottom = 1.0 add_child(message) func _clear_signals(): if clear_signals_on_hide == false: return for signal_name in ["answered", "accepted", "rejected"]: for it in get_signal_connection_list(signal_name): disconnect(it.signal, it.target, it.method) func _signal_rejected(): emit_signal("rejected") emit_signal("answered", false) hide() func _signal_accepted(): emit_signal("accepted") emit_signal("answered", true) hide() func setup(message: String, accept_label: String = "Accept", reject_label: String = "Reject"): self.message.text = message accept.visible = accept_label != "" accept.text = accept_label reject.visible = reject_label != "" reject.text = reject_label