Files
GMTK25/dialogues/choice.gd
Minimata 12b02877bb
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 6s
Create tag and build when new code gets to main / Export (push) Successful in 2m24s
feat: choice system
2025-08-02 20:01:01 +02:00

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()