summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--client/Archipelago/animationListener.gd38
-rw-r--r--client/Archipelago/manager.gd10
-rw-r--r--client/Archipelago/painting.gd16
-rw-r--r--client/Archipelago/saver.gd5
-rw-r--r--client/Archipelago/settings_screen.gd7
-rw-r--r--client/Archipelago/teleportListener.gd38
6 files changed, 101 insertions, 13 deletions
diff --git a/client/Archipelago/animationListener.gd b/client/Archipelago/animationListener.gd new file mode 100644 index 0000000..f1fb5fb --- /dev/null +++ b/client/Archipelago/animationListener.gd
@@ -0,0 +1,38 @@
1extends "res://scripts/nodes/listeners/animationListener.gd"
2
3var item_id
4
5
6func _ready():
7 var node_path = String(
8 get_tree().get_root().get_node("scene").get_path_to(self).get_concatenated_names()
9 )
10
11 print("node: %s" % node_path)
12
13 var gamedata = global.get_node("Gamedata")
14 var door_id = gamedata.get_door_for_map_node_path(global.map, node_path)
15 if door_id != null:
16 print("door_id: %d" % door_id)
17
18 var ap = global.get_node("Archipelago")
19 item_id = ap.get_item_id_for_door(door_id)
20
21 if item_id != null:
22 self.senders = []
23 self.senderGroup = []
24 self.nested = false
25 self.complete_at = 0
26 self.max_length = 0
27 self.excludeSenders = []
28
29 call_deferred("_readier")
30
31 super._ready()
32
33
34func _readier():
35 var ap = global.get_node("Archipelago")
36
37 if ap.has_item(item_id):
38 handleTriggered()
diff --git a/client/Archipelago/manager.gd b/client/Archipelago/manager.gd index 99cb47b..d950cd6 100644 --- a/client/Archipelago/manager.gd +++ b/client/Archipelago/manager.gd
@@ -90,11 +90,11 @@ func _process_item(item, index, from, flags):
90 var rnode = scene.get_node_or_null(receiver) 90 var rnode = scene.get_node_or_null(receiver)
91 if rnode != null: 91 if rnode != null:
92 rnode.handleTriggered() 92 rnode.handleTriggered()
93 for painting_id in gamedata.objects.get_doors()[door_id].get_move_paintings(): 93 #for painting_id in gamedata.objects.get_doors()[door_id].get_move_paintings():
94 var painting = gamedata.objects.get_paintings()[painting_id] 94 # var painting = gamedata.objects.get_paintings()[painting_id]
95 var pnode = scene.get_node_or_null(painting.get_path() + "/teleportListener") 95 # var pnode = scene.get_node_or_null(painting.get_path() + "/teleportListener")
96 if pnode != null: 96 # if pnode != null:
97 pnode.handleTriggered() 97 # pnode.handleTriggered()
98 98
99 # Show a message about the item if it's new. 99 # Show a message about the item if it's new.
100 if index != null and index > _last_new_item: 100 if index != null and index > _last_new_item:
diff --git a/client/Archipelago/painting.gd b/client/Archipelago/painting.gd index 17baeb5..6b3de0b 100644 --- a/client/Archipelago/painting.gd +++ b/client/Archipelago/painting.gd
@@ -15,17 +15,17 @@ func _ready():
15 if door_id != null: 15 if door_id != null:
16 print("door_id: %d" % door_id) 16 print("door_id: %d" % door_id)
17 17
18 self.senders = []
19 self.senderGroup = []
20 self.nested = false
21 self.complete_at = 0
22 self.max_length = 0
23 self.excludeSenders = []
24
25 var ap = global.get_node("Archipelago") 18 var ap = global.get_node("Archipelago")
26 item_id = ap.get_item_id_for_door(door_id) 19 item_id = ap.get_item_id_for_door(door_id)
27 20
28 if item_id != null: 21 if item_id != null:
22 self.senders = []
23 self.senderGroup = []
24 self.nested = false
25 self.complete_at = 0
26 self.max_length = 0
27 self.excludeSenders = []
28
29 call_deferred("_readier") 29 call_deferred("_readier")
30 30
31 super._ready() 31 super._ready()
@@ -35,4 +35,4 @@ func _readier():
35 var ap = global.get_node("Archipelago") 35 var ap = global.get_node("Archipelago")
36 36
37 if ap.has_item(item_id): 37 if ap.has_item(item_id):
38 $teleportListener.handleTriggered() 38 handleTriggered()
diff --git a/client/Archipelago/saver.gd b/client/Archipelago/saver.gd new file mode 100644 index 0000000..7e788a8 --- /dev/null +++ b/client/Archipelago/saver.gd
@@ -0,0 +1,5 @@
1extends "res://scripts/nodes/saver.gd"
2
3
4func levelLoaded():
5 reload.call_deferred()
diff --git a/client/Archipelago/settings_screen.gd b/client/Archipelago/settings_screen.gd index a675f8e..5a4a76d 100644 --- a/client/Archipelago/settings_screen.gd +++ b/client/Archipelago/settings_screen.gd
@@ -36,9 +36,12 @@ func _ready():
36 global.add_child(ap_instance) 36 global.add_child(ap_instance)
37 37
38 # Let's also inject any scripts we need to inject now. 38 # Let's also inject any scripts we need to inject now.
39 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/animationListener.gd"))
39 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/door.gd")) 40 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/door.gd"))
40 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/painting.gd")) 41 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/painting.gd"))
41 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/player.gd")) 42 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/player.gd"))
43 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/saver.gd"))
44 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/teleportListener.gd"))
42 45
43 var proto_script = load("user://maps/Archipelago/generated/proto.gd") 46 var proto_script = load("user://maps/Archipelago/generated/proto.gd")
44 var gamedata_script = load("user://maps/Archipelago/gamedata.gd") 47 var gamedata_script = load("user://maps/Archipelago/gamedata.gd")
@@ -138,8 +141,12 @@ func connectionSuccessful():
138 unlocks.loadData() 141 unlocks.loadData()
139 unlocks.unlockKey("capslock", 1) 142 unlocks.unlockKey("capslock", 1)
140 143
144 clearResourceCache("res://objects/meshes/gridDoor.tscn")
141 clearResourceCache("res://objects/nodes/door.tscn") 145 clearResourceCache("res://objects/nodes/door.tscn")
146 clearResourceCache("res://objects/nodes/listeners/animationListener.tscn")
147 clearResourceCache("res://objects/nodes/listeners/teleportListener.tscn")
142 clearResourceCache("res://objects/nodes/player.tscn") 148 clearResourceCache("res://objects/nodes/player.tscn")
149 clearResourceCache("res://objects/nodes/saver.tscn")
143 150
144 var paintings_dir = DirAccess.open("res://objects/meshes/paintings") 151 var paintings_dir = DirAccess.open("res://objects/meshes/paintings")
145 if paintings_dir: 152 if paintings_dir:
diff --git a/client/Archipelago/teleportListener.gd b/client/Archipelago/teleportListener.gd new file mode 100644 index 0000000..4bb08c9 --- /dev/null +++ b/client/Archipelago/teleportListener.gd
@@ -0,0 +1,38 @@
1extends "res://scripts/nodes/listeners/teleportListener.gd"
2
3var item_id
4
5
6func _ready():
7 var node_path = String(
8 get_tree().get_root().get_node("scene").get_path_to(self).get_concatenated_names()
9 )
10
11 print("node: %s" % node_path)
12
13 var gamedata = global.get_node("Gamedata")
14 var door_id = gamedata.get_door_for_map_node_path(global.map, node_path)
15 if door_id != null:
16 print("door_id: %d" % door_id)
17
18 var ap = global.get_node("Archipelago")
19 item_id = ap.get_item_id_for_door(door_id)
20
21 if item_id != null:
22 self.senders = []
23 self.senderGroup = []
24 self.nested = false
25 self.complete_at = 0
26 self.max_length = 0
27 self.excludeSenders = []
28
29 call_deferred("_readier")
30
31 super._ready()
32
33
34func _readier():
35 var ap = global.get_node("Archipelago")
36
37 if ap.has_item(item_id):
38 handleTriggered()