diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2025-08-28 14:25:50 -0400 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2025-08-28 14:25:50 -0400 |
commit | 6fd6d493cd16b41bf88742ff6f4b7635ec3fa67c (patch) | |
tree | 92bc0bc1559e550e48b507c0925d28f93962d06a /client/Archipelago/manager.gd | |
parent | aaeb0a4074a58c906b26dac6ee610266062d88be (diff) | |
download | lingo2-archipelago-6fd6d493cd16b41bf88742ff6f4b7635ec3fa67c.tar.gz lingo2-archipelago-6fd6d493cd16b41bf88742ff6f4b7635ec3fa67c.tar.bz2 lingo2-archipelago-6fd6d493cd16b41bf88742ff6f4b7635ec3fa67c.zip |
Client is starting to work!
Diffstat (limited to 'client/Archipelago/manager.gd')
-rw-r--r-- | client/Archipelago/manager.gd | 100 |
1 files changed, 100 insertions, 0 deletions
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 @@ | |||
1 | extends Node | ||
2 | |||
3 | const my_version = "0.1.0" | ||
4 | |||
5 | var SCRIPT_client | ||
6 | var SCRIPT_locationListener | ||
7 | var SCRIPT_uuid | ||
8 | |||
9 | var ap_server = "" | ||
10 | var ap_user = "" | ||
11 | var ap_pass = "" | ||
12 | var connection_history = [] | ||
13 | |||
14 | var client | ||
15 | |||
16 | signal could_not_connect | ||
17 | signal connect_status | ||
18 | signal ap_connected | ||
19 | |||
20 | |||
21 | func _ready(): | ||
22 | client = SCRIPT_client.new() | ||
23 | client.SCRIPT_uuid = SCRIPT_uuid | ||
24 | |||
25 | client.connect("item_received", _process_item) | ||
26 | client.connect("could_not_connect", _client_could_not_connect) | ||
27 | client.connect("connect_status", _client_connect_status) | ||
28 | client.connect("client_connected", _client_connected) | ||
29 | |||
30 | add_child(client) | ||
31 | |||
32 | |||
33 | func saveSettings(): | ||
34 | pass | ||
35 | |||
36 | |||
37 | func connectToServer(): | ||
38 | client.connectToServer(ap_server, ap_user, ap_pass) | ||
39 | |||
40 | |||
41 | func getSaveFileName(): | ||
42 | return "zzAP_%s_%d" % [client._seed, client._slot] | ||
43 | |||
44 | |||
45 | func disconnect_from_ap(): | ||
46 | client.disconnect_from_ap() | ||
47 | |||
48 | |||
49 | func get_item_id_for_door(door_id): | ||
50 | var gamedata = global.get_node("Gamedata") | ||
51 | var door = gamedata.objects.get_doors()[door_id] | ||
52 | if ( | ||
53 | door.get_type() == gamedata.SCRIPT_proto.DoorType.EVENT | ||
54 | or door.get_type() == gamedata.SCRIPT_proto.DoorType.LOCATION_ONLY | ||
55 | or door.get_type() == gamedata.SCRIPT_proto.DoorType.CONTROL_CENTER_COLOR | ||
56 | ): | ||
57 | return null | ||
58 | return gamedata.get_door_ap_id(door_id) | ||
59 | |||
60 | |||
61 | func has_item(item_id): | ||
62 | return client.hasItem(item_id) | ||
63 | |||
64 | |||
65 | func _process_item(item_id, _index, _player, _flags): | ||
66 | var gamedata = global.get_node("Gamedata") | ||
67 | var door_id = gamedata.door_id_by_ap_id.get(item_id, null) | ||
68 | if door_id != null and gamedata.get_door_map_name(door_id) == global.map: | ||
69 | var receivers = gamedata.get_door_receivers(door_id) | ||
70 | var scene = get_tree().get_root().get_node_or_null("scene") | ||
71 | if scene != null: | ||
72 | for receiver in receivers: | ||
73 | var rnode = scene.get_node_or_null(receiver) | ||
74 | if rnode != null: | ||
75 | rnode.handleTriggered() | ||
76 | for painting_id in gamedata.objects.get_doors()[door_id].get_move_paintings(): | ||
77 | var painting = gamedata.objects.get_paintings()[painting_id] | ||
78 | var pnode = scene.get_node_or_null(painting.get_path() + "/teleportListener") | ||
79 | if pnode != null: | ||
80 | pnode.handleTriggered() | ||
81 | |||
82 | |||
83 | func _process_message(_message): | ||
84 | pass | ||
85 | |||
86 | |||
87 | func _client_could_not_connect(): | ||
88 | emit_signal("could_not_connect") | ||
89 | |||
90 | |||
91 | func _client_connect_status(message): | ||
92 | emit_signal("connect_status", message) | ||
93 | |||
94 | |||
95 | func _client_connected(): | ||
96 | emit_signal("ap_connected") | ||
97 | |||
98 | |||
99 | func send_location(loc_id): | ||
100 | client.sendLocation(loc_id) | ||