Track each individual disk and ensure they are loaded in order. Player can collect multiple disks in one run but must present them to the pharaoh in order.
33 lines
752 B
GDScript
33 lines
752 B
GDScript
extends Interactable
|
|
|
|
var disks_wanted = [1, 2, 3, 4]
|
|
var disks_loaded = []
|
|
|
|
func _ready() -> void:
|
|
pass # Replace with function body.
|
|
|
|
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 _on_interacted() -> void:
|
|
var wanted_disk = disks_wanted.front()
|
|
if not %Player2D.take_disk(wanted_disk):
|
|
return
|
|
|
|
if not load_disk(wanted_disk):
|
|
return
|
|
|
|
%Player2D.complete_objective("disk%d" % wanted_disk)
|
|
print("Loaded up disk ", wanted_disk)
|
|
|
|
wanted_disk = disks_wanted.front()
|
|
if not wanted_disk:
|
|
return
|
|
|
|
%Player2D.give_objective("disk%d" % wanted_disk, "Locate data disk %d" % wanted_disk)
|