* Equilibrage de la difficulté (suite) * Correction du timing des dialogues de Demeter * Dev de la base astra (avec les logs) * Fix de bug de duplication d'objets * Fix de la mutation ancien * Ajout d'une mention de la propagation des mutations dans le tuto
59 lines
1.7 KiB
GDScript
59 lines
1.7 KiB
GDScript
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"
|