From 6fd6d493cd16b41bf88742ff6f4b7635ec3fa67c Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Thu, 28 Aug 2025 14:25:50 -0400 Subject: Client is starting to work! --- client/Archipelago/manager.gd | 100 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 client/Archipelago/manager.gd (limited to 'client/Archipelago/manager.gd') diff --git a/client/Archipelago/manager.gd b/client/Archipelago/manager.gd new file mode 100644 index 0000000..35fc8e3 --- /dev/null +++ b/client/Archipelago/manager.gd @@ -0,0 +1,100 @@ +extends Node + +const my_version = "0.1.0" + +var SCRIPT_client +var SCRIPT_locationListener +var SCRIPT_uuid + +var ap_server = "" +var ap_user = "" +var ap_pass = "" +var connection_history = [] + +var client + +signal could_not_connect +signal connect_status +signal ap_connected + + +func _ready(): + client = SCRIPT_client.new() + client.SCRIPT_uuid = SCRIPT_uuid + + client.connect("item_received", _process_item) + client.connect("could_not_connect", _client_could_not_connect) + client.connect("connect_status", _client_connect_status) + client.connect("client_connected", _client_connected) + + add_child(client) + + +func saveSettings(): + pass + + +func connectToServer(): + client.connectToServer(ap_server, ap_user, ap_pass) + + +func getSaveFileName(): + return "zzAP_%s_%d" % [client._seed, client._slot] + + +func disconnect_from_ap(): + client.disconnect_from_ap() + + +func get_item_id_for_door(door_id): + var gamedata = global.get_node("Gamedata") + var door = gamedata.objects.get_doors()[door_id] + if ( + door.get_type() == gamedata.SCRIPT_proto.DoorType.EVENT + or door.get_type() == gamedata.SCRIPT_proto.DoorType.LOCATION_ONLY + or door.get_type() == gamedata.SCRIPT_proto.DoorType.CONTROL_CENTER_COLOR + ): + return null + return gamedata.get_door_ap_id(door_id) + + +func has_item(item_id): + return client.hasItem(item_id) + + +func _process_item(item_id, _index, _player, _flags): + var gamedata = global.get_node("Gamedata") + var door_id = gamedata.door_id_by_ap_id.get(item_id, null) + if door_id != null and gamedata.get_door_map_name(door_id) == global.map: + var receivers = gamedata.get_door_receivers(door_id) + var scene = get_tree().get_root().get_node_or_null("scene") + if scene != null: + for receiver in receivers: + var rnode = scene.get_node_or_null(receiver) + if rnode != null: + rnode.handleTriggered() + for painting_id in gamedata.objects.get_doors()[door_id].get_move_paintings(): + var painting = gamedata.objects.get_paintings()[painting_id] + var pnode = scene.get_node_or_null(painting.get_path() + "/teleportListener") + if pnode != null: + pnode.handleTriggered() + + +func _process_message(_message): + pass + + +func _client_could_not_connect(): + emit_signal("could_not_connect") + + +func _client_connect_status(message): + emit_signal("connect_status", message) + + +func _client_connected(): + emit_signal("ap_connected") + + +func send_location(loc_id): + client.sendLocation(loc_id) -- cgit 1.4.1