|                                                                          | 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | extends CanvasLayer
signal button_click
# Local imports
@onready var click_target = $ClickTarget
# Other scene imports
@onready var messages = $"../Messages"
#@onready var narration = $"../Messages/Narration"
@onready var generators = $"../Generators"
@onready var analyzers = $"../Analyzers"
# Global variables
#@onready var line_thresholds = [1, 5, 10, 25, 75, 300]
@onready var next_threshold: int
@onready var autoclicker_cost: int = 10
@onready var current_per_second_score: float = 0.0
@onready var second_scores = []
@export var energy_creator_click_value = 1
@export var l1_generator_purchase_cost = -10
@export var l1_generator_click_value = 1
@export var l1_generator_mult = 1.15
@export var l1_generator_num = 0
@export var l1_analyzer_purchase_cost = -25
@export var l1_analyzer_click_cost = -2.5
@export var l1_analyzer_mult = 1.25
@export var l1_analyzer_num = 0
signal interface_ready
signal score_update(value: float)
# Called when the node enters the scene tree for the first time.
func _ready():
	# SETUP
	# This is set in inspector options, but just in case.
	click_target.buy_l1_generator.visible = false
	messages.narration.json_content = get_json_file_content(messages.narration.lines_file_path)
	print("Emitting interface_ready signal.")
	interface_ready.emit()
	
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
	pass
func update_score(new_score):
	score_update.emit(new_score)
	for seq in messages.narration.sequences:
		if seq["type"] == "score":
			if messages.score.total_score >= seq["value"] and seq["seen"] == false:
				messages.narration.display_message_section(seq["name"])
				seq["seen"] = true
func _on_message_timer_timeout():
	pass # Replace with function body.
func update_second_score(new_score):
	pass
func _on_energy_creator_pressed():
	messages.sps.visible = true
	update_score(energy_creator_click_value)
func _on_buy_l_1_generator_pressed():
	if messages.score.current_score < l1_generator_purchase_cost:
		pass
	update_score(l1_generator_purchase_cost)
	l1_generator_purchase_cost *= l1_generator_mult
	l1_generator_purchase_cost = floor(l1_generator_purchase_cost)
	generators.l1.add_generator()
	
func _on_buy_l_1_analyzer_pressed():
	if messages.score.current_score < l1_analyzer_purchase_cost:
		pass
	update_score(l1_analyzer_purchase_cost)
	l1_analyzer_purchase_cost *= l1_analyzer_mult
	l1_analyzer_purchase_cost = floor(l1_analyzer_purchase_cost)
	analyzers.l1.add_analyzer()
# UTILITY FUNCTIONS
func get_text_file_content(file_path):
	var file = FileAccess.open(file_path, FileAccess.READ)
	var content = file.get_as_text()
	return content
func get_json_file_content(file_path):
	var file = FileAccess.open(file_path, FileAccess.READ)
	var content = file.get_as_text()
	var json_content = JSON.parse_string(content)
	return json_content
func _on_narration_section_ended(section_name):
	if section_name == "introduction":
		click_target.energy_creator.visible = true
	elif section_name == "explain_mechanism":
		click_target.buy_l1_generator.visible = true
	elif section_name == "afford_analyzer":
		click_target.buy_l1_analyzer.visible = true
 |