Files
JumpRopeOldTech/old_computer.gd

82 lines
2.1 KiB
GDScript

extends CanvasLayer
var disks_wanted = [1, 2, 3, 4]
var disks_loaded = []
var starting_integrity = 2
var total_integrity = starting_integrity + len(disks_wanted)
var base_text: String = ""
func _ready() -> void:
base_text = $ConsoleText.text % get_memory_integrity()
func load_disk(disk_num: int) -> bool:
if !disk_num or (disk_num in disks_loaded):
return false
disks_loaded.push_back(disk_num)
disks_wanted.remove_at(disks_wanted.find(disk_num))
print("Loaded up disk ", disk_num)
var memory_integrity = get_memory_integrity()
var percent_color = "red"
if memory_integrity > 90:
percent_color = "green"
elif memory_integrity > 35:
percent_color = "orange"
printline(
">> Loaded data disk %d (of [color=green]%d[/color]). Memory integrity now at [color=%s]%d%%[/color]" %
[disk_num, len(disks_wanted) + len(disks_loaded), percent_color, memory_integrity]
)
if has_finished_initialization():
printline(
">> [color=green]System initialization complete[/color]. Beginning reactivation sequence."
)
printline(
">> [color=#4278ff]Player[/color]: Press [color=#4278ff][{INTERACT}][/color] or [color=#4278ff][{JUMP}][/color] to return to the outside world."
)
return true
func get_next_disk_num() -> int:
if disks_wanted.is_empty():
return 0
return disks_wanted.front()
func get_memory_integrity():
return 100.0 / total_integrity * (starting_integrity + len(disks_loaded))
func has_finished_initialization() -> bool:
return disks_wanted.is_empty()
func open() -> void:
render_text()
visible = true
$BackgroundPanel/ForegroundPanel/ScreenPanel/OldComputerShader.show()
%Player2D/Parallax2D.hide()
func printline(line: String) -> void:
open()
base_text += "\n" + line
render_text()
func render_text() -> void:
var interact_key = "E"
var jump_key = "Space"
if %Player2D.controller_ui:
interact_key = "B"
jump_key = "A"
$ConsoleText.text = base_text.replace("{INTERACT}", interact_key).replace("{JUMP}", jump_key)
func close() -> void:
if has_finished_initialization():
get_tree().quit()
visible = false
$BackgroundPanel/ForegroundPanel/ScreenPanel/OldComputerShader.hide()
%Player2D/Parallax2D.show()