about summary refs log tree commit diff stats
path: root/apworld/client/manager.gd
diff options
context:
space:
mode:
Diffstat (limited to 'apworld/client/manager.gd')
-rw-r--r--apworld/client/manager.gd49
1 files changed, 48 insertions, 1 deletions
diff --git a/apworld/client/manager.gd b/apworld/client/manager.gd index 41ab648..8c981f9 100644 --- a/apworld/client/manager.gd +++ b/apworld/client/manager.gd
@@ -29,6 +29,8 @@ var _inverse_item_locks = {}
29var _held_letters = {} 29var _held_letters = {}
30var _letters_setup = false 30var _letters_setup = false
31var _already_connected = false 31var _already_connected = false
32var _ignored_locations = []
33var _map_scripts = {}
32 34
33const kSHUFFLE_LETTERS_VANILLA = 0 35const kSHUFFLE_LETTERS_VANILLA = 0
34const kSHUFFLE_LETTERS_UNLOCKED = 1 36const kSHUFFLE_LETTERS_UNLOCKED = 1
@@ -65,7 +67,9 @@ var cyan_door_behavior = kCYAN_DOOR_BEHAVIOR_H2
65var daedalus_roof_access = false 67var daedalus_roof_access = false
66var enable_gift_maps = [] 68var enable_gift_maps = []
67var enable_icarus = false 69var enable_icarus = false
70var endings_requirement = 0
68var keyholder_sanity = false 71var keyholder_sanity = false
72var masteries_requirement = 0
69var port_pairings = {} 73var port_pairings = {}
70var shuffle_control_center_colors = false 74var shuffle_control_center_colors = false
71var shuffle_doors = false 75var shuffle_doors = false
@@ -142,6 +146,8 @@ func _ready():
142 client.hint_received.connect(_process_hint_received) 146 client.hint_received.connect(_process_hint_received)
143 client.accessible_locations_updated.connect(_on_accessible_locations_updated) 147 client.accessible_locations_updated.connect(_on_accessible_locations_updated)
144 client.checked_locations_updated.connect(_on_checked_locations_updated) 148 client.checked_locations_updated.connect(_on_checked_locations_updated)
149 client.ignored_locations_updated.connect(_on_ignored_locations_updated)
150 client.hinted_locations_updated.connect(_on_hinted_locations_updated)
145 client.checked_worldports_updated.connect(_on_checked_worldports_updated) 151 client.checked_worldports_updated.connect(_on_checked_worldports_updated)
146 client.door_latched.connect(_on_door_latched) 152 client.door_latched.connect(_on_door_latched)
147 153
@@ -259,6 +265,9 @@ func _process_item(item, amount):
259 if item_id == gamedata.objects.get_special_ids()["A Job Well Done"]: 265 if item_id == gamedata.objects.get_special_ids()["A Job Well Done"]:
260 update_job_well_done_sign() 266 update_job_well_done_sign()
261 267
268 if item_id == gamedata.objects.get_special_ids()["Numbers"] and global.map == "the_fuzzy":
269 global.allow_numbers = true
270
262 # Show a message about the item if it's new. 271 # Show a message about the item if it's new.
263 if int(item["index"]) > _last_new_item: 272 if int(item["index"]) > _last_new_item:
264 _last_new_item = int(item["index"]) 273 _last_new_item = int(item["index"])
@@ -379,6 +388,20 @@ func _on_checked_worldports_updated():
379 textclient_node.update_worldports() 388 textclient_node.update_worldports()
380 389
381 390
391func _on_ignored_locations_updated(locations):
392 _ignored_locations = locations
393
394 var textclient_node = global.get_node("Textclient")
395 if textclient_node != null:
396 textclient_node.update_locations()
397
398
399func _on_hinted_locations_updated():
400 var textclient_node = global.get_node("Textclient")
401 if textclient_node != null:
402 textclient_node.update_locations()
403
404
382func _on_door_latched(door_id): 405func _on_door_latched(door_id):
383 var gamedata = global.get_node("Gamedata") 406 var gamedata = global.get_node("Gamedata")
384 if gamedata.get_door_map_name(door_id) != global.map: 407 if gamedata.get_door_map_name(door_id) != global.map:
@@ -443,7 +466,9 @@ func _client_connected(slot_data):
443 daedalus_roof_access = bool(slot_data.get("daedalus_roof_access", false)) 466 daedalus_roof_access = bool(slot_data.get("daedalus_roof_access", false))
444 enable_gift_maps = slot_data.get("enable_gift_maps", []) 467 enable_gift_maps = slot_data.get("enable_gift_maps", [])
445 enable_icarus = bool(slot_data.get("enable_icarus", false)) 468 enable_icarus = bool(slot_data.get("enable_icarus", false))
469 endings_requirement = int(slot_data.get("endings_requirement", 0))
446 keyholder_sanity = bool(slot_data.get("keyholder_sanity", false)) 470 keyholder_sanity = bool(slot_data.get("keyholder_sanity", false))
471 masteries_requirement = int(slot_data.get("masteries_requirement", 0))
447 shuffle_control_center_colors = bool(slot_data.get("shuffle_control_center_colors", false)) 472 shuffle_control_center_colors = bool(slot_data.get("shuffle_control_center_colors", false))
448 shuffle_doors = bool(slot_data.get("shuffle_doors", false)) 473 shuffle_doors = bool(slot_data.get("shuffle_doors", false))
449 shuffle_gallery_paintings = bool(slot_data.get("shuffle_gallery_paintings", false)) 474 shuffle_gallery_paintings = bool(slot_data.get("shuffle_gallery_paintings", false))
@@ -465,7 +490,9 @@ func _client_connected(slot_data):
465 var raw_pp = slot_data.get("port_pairings") 490 var raw_pp = slot_data.get("port_pairings")
466 491
467 for p1 in raw_pp.keys(): 492 for p1 in raw_pp.keys():
468 port_pairings[int(p1)] = int(raw_pp[p1]) 493 port_pairings[gamedata.port_id_by_ap_id[int(p1)]] = gamedata.port_id_by_ap_id[int(
494 raw_pp[p1]
495 )]
469 496
470 # Set up item locks. 497 # Set up item locks.
471 _item_locks = {} 498 _item_locks = {}
@@ -668,3 +695,23 @@ func update_job_well_done_sign():
668 695
669 sign2.get_node("MeshInstance3D").mesh.text = sign2.text 696 sign2.get_node("MeshInstance3D").mesh.text = sign2.text
670 sign3.get_node("MeshInstance3D").mesh.text = sign3.text 697 sign3.get_node("MeshInstance3D").mesh.text = sign3.text
698
699
700func toggle_ignored_location(loc_id):
701 if loc_id in _ignored_locations:
702 client.removeIgnoredLocation(loc_id)
703 else:
704 client.addIgnoredLocation(loc_id)
705
706
707func get_map_script(map_name):
708 if !_map_scripts.has(map_name):
709 var runtime = global.get_node("Runtime")
710 var script_path = "maps/%s.gd" % map_name
711 if runtime.path_exists(script_path):
712 var script = runtime.load_script(script_path)
713 _map_scripts[map_name] = script.new()
714 else:
715 _map_scripts[map_name] = null
716
717 return _map_scripts[map_name]