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