summary refs log tree commit diff stats
path: root/client/Archipelago/manager.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/Archipelago/manager.gd')
-rw-r--r--client/Archipelago/manager.gd100
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 @@
1extends Node
2
3const my_version = "0.1.0"
4
5var SCRIPT_client
6var SCRIPT_locationListener
7var SCRIPT_uuid
8
9var ap_server = ""
10var ap_user = ""
11var ap_pass = ""
12var connection_history = []
13
14var client
15
16signal could_not_connect
17signal connect_status
18signal ap_connected
19
20
21func _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
33func saveSettings():
34 pass
35
36
37func connectToServer():
38 client.connectToServer(ap_server, ap_user, ap_pass)
39
40
41func getSaveFileName():
42 return "zzAP_%s_%d" % [client._seed, client._slot]
43
44
45func disconnect_from_ap():
46 client.disconnect_from_ap()
47
48
49func 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
61func has_item(item_id):
62 return client.hasItem(item_id)
63
64
65func _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
83func _process_message(_message):
84 pass
85
86
87func _client_could_not_connect():
88 emit_signal("could_not_connect")
89
90
91func _client_connect_status(message):
92 emit_signal("connect_status", message)
93
94
95func _client_connected():
96 emit_signal("ap_connected")
97
98
99func send_location(loc_id):
100 client.sendLocation(loc_id)