91 lines
2.2 KiB
GDScript
91 lines
2.2 KiB
GDScript
extends Node
|
|
|
|
@onready var bubbles: HBoxContainer = %Bubbles
|
|
@onready var bubbles_back: TileMapLayer = %BubblesBack
|
|
@onready var bubbles_interior: TileMapLayer = %BubblesInterior
|
|
@onready var bubble_label: RichTextLabel = %BubbleLabel
|
|
|
|
@onready var ui_flicker_timer: Timer = $UIFlickerTimer
|
|
@onready var e_ui_button: TextureRect = %E
|
|
@onready var next_label: Label = %NextLabel
|
|
|
|
@onready var choices_container: MarginContainer = %ChoicesContainer
|
|
@onready var accept_indicator: ColorRect = %AcceptIndicator
|
|
@onready var accept_label: Label = %AcceptLabel
|
|
@onready var reject_indicator: ColorRect = %RejectIndicator
|
|
@onready var reject_label: Label = %RejectLabel
|
|
|
|
@export_multiline var choice = ""
|
|
@export var accept_option = ""
|
|
@export var reject_option = ""
|
|
|
|
@onready var wait_a_sec: Timer = $WaitASec
|
|
|
|
signal accepted
|
|
signal rejected
|
|
|
|
var is_accept_selected = true
|
|
var is_choice_happening = false
|
|
|
|
func _process(delta: float) -> void:
|
|
if not is_choice_happening:
|
|
return
|
|
|
|
if Input.is_action_just_pressed("move_right"):
|
|
is_accept_selected = false
|
|
update_ui()
|
|
|
|
if Input.is_action_just_pressed("move_left"):
|
|
is_accept_selected = true
|
|
update_ui()
|
|
|
|
if Input.is_action_just_pressed("interact"):
|
|
stop_choice()
|
|
|
|
|
|
func update_ui():
|
|
accept_indicator.visible = is_accept_selected
|
|
reject_indicator.visible = not is_accept_selected
|
|
|
|
func toggle_ui():
|
|
e_ui_button.visible = not e_ui_button.visible
|
|
|
|
func start_choice():
|
|
bubbles.visible = true
|
|
bubbles_back.visible = true
|
|
bubbles_interior.visible = true
|
|
bubble_label.visible = true
|
|
e_ui_button.visible = true
|
|
next_label.visible = true
|
|
choices_container.visible = true
|
|
|
|
accept_label.text = accept_option
|
|
reject_label.text = reject_option
|
|
|
|
is_accept_selected = true
|
|
update_ui()
|
|
|
|
wait_a_sec.start()
|
|
|
|
func stop_choice():
|
|
is_choice_happening = false
|
|
|
|
ui_flicker_timer.stop()
|
|
|
|
bubbles.visible = false
|
|
bubbles_back.visible = false
|
|
bubbles_interior.visible = false
|
|
bubble_label.visible = false
|
|
e_ui_button.visible = false
|
|
next_label.visible = false
|
|
choices_container.visible = false
|
|
|
|
if is_accept_selected:
|
|
accepted.emit()
|
|
else:
|
|
rejected.emit()
|
|
|
|
func _on_wait_a_sec_timeout() -> void:
|
|
is_choice_happening = true
|
|
ui_flicker_timer.start()
|