Have a text display event, simple RPG style that shows text when you're in an area and press a button. However, when the event is first called, it takes two button presses to start. After that, provided the scene has not changed, it only takes one button press. I am using a textbox object that is instanced with custom functions but this works fine in the other events I have made. I think I've been looking at it too long and wonder what I am missing. It has to be something in the Input section that I am certain will be disappointingly obvious once I see it. XD
extends Area2D
### open event flag and objects
var _can_search = false
onready var _look = $LookSprite
onready var _run = $RunSprite
### text values and state
onready var _textbox = $TextAnimation
onready var _dialog = $TextAnimation/Label
export var _textLine1 : String
export var _textLine2 : String
export var _textLine3 : String
export var _textLine4 : String
var _textsArray = [_textLine1,_textLine2,_textLine3,_textLine4]
var _nextText = _textLine1
const _EMPTY = ''
### make text invisible at boot (visible in editor)
func _ready():
_look.visible = false
### input command
func _input(_event):
if _can_search:
if Input.is_action_just_pressed("_interact"):
_displayed()
### pull from array and display, if it's empty, exit.
func _displayed():
_look.visible = false
_nextText = _textsArray.pop_front()
if _nextText != _EMPTY:
_textbox._update(_nextText)
_textbox._fade_in()
DirectorNode._freezePlayer = true
else:
_textbox._fade_out()
DirectorNode._freezePlayer = false
_textsArray = [_textLine1,_textLine2,_textLine3,_textLine4]
func _on_SearchEvent_body_entered(body):
if body.name == 'Lydia':
if DirectorNode._chaseMode == false:
_can_search = true
_look.visible = true
else: ### disable event if pursued!
_can_search = false
_look.visible = false
_run.visible = true
func _on_SearchEvent_body_exited(body):
if body.name == 'Lydia':
_can_search = false
_look.visible = false
_run.visible = false