diff --git a/old_computer.gd b/old_computer.gd index 0caef5b..6bbad19 100644 --- a/old_computer.gd +++ b/old_computer.gd @@ -1,7 +1,34 @@ extends CanvasLayer +var disks_wanted = [1, 2, 3, 4] +var disks_loaded = [] + +var starting_integrity = 2 +var total_integrity = starting_integrity + len(disks_wanted) + func _ready() -> void: - $ConsoleText.text = $ConsoleText.text % %Pharaoh.get_memory_integrity() + $ConsoleText.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) + printline( + ">> Loaded data disk %d (of %d). Memory integrity now at %d%%" % + [disk_num, len(disks_wanted) + len(disks_loaded), get_memory_integrity()] + ) + + return true + +func get_next_disk_num() -> int: + return disks_wanted.front() + +func get_memory_integrity(): + return 100.0 / total_integrity * (starting_integrity + len(disks_loaded)) func open() -> void: visible = true diff --git a/pharaoh.gd b/pharaoh.gd index 3e99961..c242bff 100644 --- a/pharaoh.gd +++ b/pharaoh.gd @@ -1,29 +1,12 @@ extends Interactable -var disks_wanted = [1, 2, 3, 4] -var disks_loaded = [] - -var starting_integrity = 2 -var total_integrity = starting_integrity + len(disks_wanted) - -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)) - return true - -func get_memory_integrity(): - return 100.0 / total_integrity * (starting_integrity + len(disks_loaded)) - func _on_interacted() -> void: #%OldComputer.open() %Player2D.spawn_point = global_position - var wanted_disk = disks_wanted.front() + var wanted_disk = %OldComputer.get_next_disk_num() if %Player2D.complete_objective("sarc"): %OldComputer.open() %Player2D.give_objective( @@ -32,20 +15,11 @@ func _on_interacted() -> void: ) return - if not %Player2D.take_disk(wanted_disk): - return - - if not load_disk(wanted_disk): + if not (%Player2D.take_disk(wanted_disk) and %OldComputer.load_disk(wanted_disk)): return %Player2D.complete_objective("disk%d" % wanted_disk) - print("Loaded up disk ", wanted_disk) - %OldComputer.printline( - ">> Loaded data disk %d (of %d). Memory integrity now at %d%%" % - [wanted_disk, len(disks_wanted) + len(disks_loaded), get_memory_integrity()] - ) - - wanted_disk = disks_wanted.front() + wanted_disk = %OldComputer.get_next_disk_num() if (not wanted_disk) or %Player2D.has_disk(wanted_disk): return