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
|