diff options
Diffstat (limited to 'Archipelago/client.gd')
-rw-r--r-- | Archipelago/client.gd | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/Archipelago/client.gd b/Archipelago/client.gd index a990fa2..5f8be4e 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd | |||
@@ -8,6 +8,7 @@ var SCRIPT_mypainting | |||
8 | var SCRIPT_notifier | 8 | var SCRIPT_notifier |
9 | var SCRIPT_panel | 9 | var SCRIPT_panel |
10 | var SCRIPT_pilgrimage_terminator | 10 | var SCRIPT_pilgrimage_terminator |
11 | var SCRIPT_textclient | ||
11 | var SCRIPT_uuid | 12 | var SCRIPT_uuid |
12 | 13 | ||
13 | var ap_server = "" | 14 | var ap_server = "" |
@@ -467,6 +468,8 @@ func _on_data(): | |||
467 | i += 1 | 468 | i += 1 |
468 | 469 | ||
469 | elif cmd == "PrintJSON": | 470 | elif cmd == "PrintJSON": |
471 | parse_printjson(message) | ||
472 | |||
470 | if ( | 473 | if ( |
471 | !message.has("receiving") | 474 | !message.has("receiving") |
472 | or !message.has("item") | 475 | or !message.has("item") |
@@ -700,6 +703,10 @@ func setValue(key, value, operation = "replace"): | |||
700 | ) | 703 | ) |
701 | 704 | ||
702 | 705 | ||
706 | func say(textdata): | ||
707 | sendMessage([{"cmd": "Say", "text": textdata}]) | ||
708 | |||
709 | |||
703 | func completedGoal(): | 710 | func completedGoal(): |
704 | sendMessage([{"cmd": "StatusUpdate", "status": 30}]) # CLIENT_GOAL | 711 | sendMessage([{"cmd": "StatusUpdate", "status": 30}]) # CLIENT_GOAL |
705 | 712 | ||
@@ -892,6 +899,43 @@ func colorForItemType(flags): | |||
892 | return "#14de9e" | 899 | return "#14de9e" |
893 | 900 | ||
894 | 901 | ||
902 | func parse_printjson(message): | ||
903 | var parts = [] | ||
904 | for message_part in message["data"]: | ||
905 | if !message_part.has("type") and message_part.has("text"): | ||
906 | parts.append(message_part["text"]) | ||
907 | elif message_part["type"] == "player_id": | ||
908 | if int(message_part["text"]) == _slot: | ||
909 | parts.append("[color=#ee00ee]%s[/color]" % _player_name_by_slot[_slot]) | ||
910 | else: | ||
911 | var from = float(message_part["text"]) | ||
912 | parts.append("[color=#fafad2]%s[/color]" % _player_name_by_slot[from]) | ||
913 | elif message_part["type"] == "item_id": | ||
914 | var item_name = "Unknown" | ||
915 | var item_player_game = _game_by_player[message_part["player"]] | ||
916 | if _item_id_to_name[item_player_game].has(float(message_part["text"])): | ||
917 | item_name = _item_id_to_name[item_player_game][float(message_part["text"])] | ||
918 | |||
919 | parts.append( | ||
920 | "[color=%s]%s[/color]" % [colorForItemType(message_part["flags"]), item_name] | ||
921 | ) | ||
922 | elif message_part["type"] == "location_id": | ||
923 | var location_name = "Unknown" | ||
924 | var location_player_game = _game_by_player[message_part["player"]] | ||
925 | if _location_id_to_name[location_player_game].has(float(message_part["text"])): | ||
926 | location_name = _location_id_to_name[location_player_game][float( | ||
927 | message_part["text"] | ||
928 | )] | ||
929 | |||
930 | parts.append("[color=#00ff7f]%s[/color]" % location_name) | ||
931 | elif message_part.has("text"): | ||
932 | parts.append(message_part["text"]) | ||
933 | |||
934 | var textclient_node = get_tree().get_root().get_node_or_null("Spatial/AP_TextClient") | ||
935 | if textclient_node != null: | ||
936 | textclient_node.parse_printjson("".join(parts)) | ||
937 | |||
938 | |||
895 | func compareVersion(lhs, rhs): | 939 | func compareVersion(lhs, rhs): |
896 | if lhs["major"] == rhs["major"]: | 940 | if lhs["major"] == rhs["major"]: |
897 | if lhs["minor"] == rhs["minor"]: | 941 | if lhs["minor"] == rhs["minor"]: |