extends Interactable class_name Radio @onready var log_screen : LogScreen = %LogScreen var radio_log : StoryStep.Log = null : set = set_radio_log var unread := false : set = set_unread func _ready(): var story_step := GameInfo.game_data.progression_data.get_story_step() if len(story_step.get_logs()): radio_log = story_step.get_logs().pick_random() unread = not radio_log.key in GameInfo.game_data.logs_read if unread : available = true else: hide() available = false set_radio_log() set_unread() func interact(_p : Player) -> bool: interacted.emit(_p) if radio_log : unread = false AudioManager.play_sfx("MessageEnter") GameInfo.game_data.logs_read.append(radio_log.key) log_screen.appear() region.player.controlling_player = false Pointer.action_disabled = true log_screen.disappeared.connect( func(): region.player.controlling_player = true get_tree().create_timer(0.2).timeout.connect( # Put a delay to not interfere with the ok button click func(): Pointer.action_disabled = false ) AudioManager.play_sfx("MessageExit") ) return true return false func set_radio_log(v := radio_log): radio_log = v if is_node_ready() and radio_log: log_screen.log_text = radio_log.text log_screen.log_title = radio_log.title func set_unread(v := unread): unread = v if is_node_ready(): %SpriteUnread.visible = unread %SpriteRead.visible = not unread default_info_title = "RADIO" if unread else "RADIO_READ"