diff options
Diffstat (limited to 'apworld/client/player.gd')
| -rw-r--r-- | apworld/client/player.gd | 40 |
1 files changed, 39 insertions, 1 deletions
| diff --git a/apworld/client/player.gd b/apworld/client/player.gd index 5fac9fd..dabc15d 100644 --- a/apworld/client/player.gd +++ b/apworld/client/player.gd | |||
| @@ -13,6 +13,8 @@ func _ready(): | |||
| 13 | 13 | ||
| 14 | var ap = global.get_node("Archipelago") | 14 | var ap = global.get_node("Archipelago") |
| 15 | var gamedata = global.get_node("Gamedata") | 15 | var gamedata = global.get_node("Gamedata") |
| 16 | var map_id = gamedata.map_id_by_name.get(global.map) | ||
| 17 | var map_data = gamedata.objects.get_maps()[map_id] | ||
| 16 | 18 | ||
| 17 | compass = global.get_node("Compass") | 19 | compass = global.get_node("Compass") |
| 18 | compass.visible = ap.show_compass | 20 | compass.visible = ap.show_compass |
| @@ -26,8 +28,33 @@ func _ready(): | |||
| 26 | 28 | ||
| 27 | ap.update_job_well_done_sign() | 29 | ap.update_job_well_done_sign() |
| 28 | 30 | ||
| 31 | # Set up the RTE trigger, if there is one. | ||
| 32 | if map_data.has_rte_trigger_pos(): | ||
| 33 | var oneShotListener_prefab = preload("res://objects/nodes/listeners/oneShotListener.tscn") | ||
| 34 | var triggerArea_prefab = preload("res://objects/nodes/triggerArea.tscn") | ||
| 35 | var unlockSetterListener_prefab = preload( | ||
| 36 | "res://objects/nodes/listeners/unlockSetterListener.tscn" | ||
| 37 | ) | ||
| 38 | |||
| 39 | var triggerArea = triggerArea_prefab.instantiate() | ||
| 40 | triggerArea.name = "rte_triggerArea" | ||
| 41 | triggerArea.position = gamedata.vec3d_to_vector3(map_data.get_rte_trigger_pos()) | ||
| 42 | triggerArea.scale = gamedata.vec3d_to_vector3(map_data.get_rte_trigger_scale()) | ||
| 43 | get_parent().add_child.call_deferred(triggerArea) | ||
| 44 | |||
| 45 | var osl = oneShotListener_prefab.instantiate() | ||
| 46 | osl.name = "rte_osl" | ||
| 47 | osl.senders.append(NodePath("/root/scene/rte_triggerArea")) | ||
| 48 | get_parent().add_child.call_deferred(osl) | ||
| 49 | |||
| 50 | var usl = unlockSetterListener_prefab.instantiate() | ||
| 51 | usl.name = "rte_usl" | ||
| 52 | usl.key = "rte_%s" % global.map | ||
| 53 | usl.value = "unlocked" | ||
| 54 | usl.senders.append(NodePath("/root/scene/rte_osl")) | ||
| 55 | get_parent().add_child.call_deferred(usl) | ||
| 56 | |||
| 29 | # Set up door locations. | 57 | # Set up door locations. |
| 30 | var map_id = gamedata.map_id_by_name.get(global.map) | ||
| 31 | for door in gamedata.objects.get_doors(): | 58 | for door in gamedata.objects.get_doors(): |
| 32 | if door.get_map_id() != map_id: | 59 | if door.get_map_id() != map_id: |
| 33 | continue | 60 | continue |
| @@ -169,6 +196,17 @@ func _ready(): | |||
| 169 | minimap.visible = ap.show_minimap | 196 | minimap.visible = ap.show_minimap |
| 170 | get_parent().add_child.call_deferred(minimap) | 197 | get_parent().add_child.call_deferred(minimap) |
| 171 | 198 | ||
| 199 | if ap.music_mapping.has(global.map): | ||
| 200 | var song_setter = get_node_or_null("/root/scene/songSetter") | ||
| 201 | if song_setter: | ||
| 202 | song_setter.song_name = ap.music_mapping[global.map] | ||
| 203 | else: | ||
| 204 | var song_setter_prefab = preload("res://objects/nodes/songSetter.tscn") | ||
| 205 | song_setter = song_setter_prefab.instantiate() | ||
| 206 | song_setter.name = "songSetter" | ||
| 207 | song_setter.song_name = ap.music_mapping[global.map] | ||
| 208 | get_parent().add_child.call_deferred(song_setter) | ||
| 209 | |||
| 172 | super._ready() | 210 | super._ready() |
| 173 | 211 | ||
| 174 | await get_tree().process_frame | 212 | await get_tree().process_frame |
