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 : Button var reject_button : 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 = Button.new() reject_button.anchor_top = 1.0 reject_button.anchor_left = 0.0 reject_button.anchor_right = 0.5 reject_button.margin_right = -5.0 reject_button.rect_min_size.y = 62.0 reject_button.grow_vertical = Control.GROW_DIRECTION_BEGIN reject_button.name = "reject" reject_button.connect("pressed", self, "_signal_rejected") add_child(reject_button) accept_button = Button.new() accept_button.anchor_top = 1.0 accept_button.anchor_left = 0.5 accept_button.anchor_right = 1.0 accept_button.margin_left = 5.0 accept_button.rect_min_size.y = 62.0 accept_button.grow_vertical = Control.GROW_DIRECTION_BEGIN accept_button.name = "accept" accept_button.connect("pressed", self, "_signal_accepted") add_child(accept_button) 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_button.visible = accept_label != "" accept_button.text = accept_label reject_button.visible = reject_label != "" reject_button.text = reject_label