about summary refs log tree commit diff stats
path: root/client
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-09-22 21:50:10 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2025-09-22 21:50:10 -0400
commit96d5da7ae8459509780e99e3e53fd146f6b055b1 (patch)
tree415be7d880b7d4a9a81438b35972be7d93c21ccb /client
parent6e758b70bf35063df270494932bb0fcfa8cacd14 (diff)
downloadlingo2-archipelago-96d5da7ae8459509780e99e3e53fd146f6b055b1.tar.gz
lingo2-archipelago-96d5da7ae8459509780e99e3e53fd146f6b055b1.tar.bz2
lingo2-archipelago-96d5da7ae8459509780e99e3e53fd146f6b055b1.zip
[Client] Proguseful is now rainbow
Diffstat (limited to 'client')
-rw-r--r--client/Archipelago/manager.gd31
-rw-r--r--client/Archipelago/messages.gd3
-rw-r--r--client/Archipelago/rainbowText.gd10
-rw-r--r--client/Archipelago/settings_screen.gd1
4 files changed, 35 insertions, 10 deletions
diff --git a/client/Archipelago/manager.gd b/client/Archipelago/manager.gd index c804109..608a106 100644 --- a/client/Archipelago/manager.gd +++ b/client/Archipelago/manager.gd
@@ -209,8 +209,6 @@ func _process_item(item, index, from, flags, amount):
209 if client._player_name_by_slot.has(float(from)): 209 if client._player_name_by_slot.has(float(from)):
210 player_name = client._player_name_by_slot[float(from)] 210 player_name = client._player_name_by_slot[float(from)]
211 211
212 var item_color = colorForItemType(flags)
213
214 var full_item_name = item_name 212 var full_item_name = item_name
215 if prog_id != null: 213 if prog_id != null:
216 var door = gamedata.objects.get_doors()[prog_id] 214 var door = gamedata.objects.get_doors()[prog_id]
@@ -218,10 +216,10 @@ func _process_item(item, index, from, flags, amount):
218 216
219 var message 217 var message
220 if from == client._slot: 218 if from == client._slot:
221 message = "Found [color=%s]%s[/color]" % [item_color, full_item_name] 219 message = "Found %s" % wrapInItemColorTags(full_item_name, flags)
222 else: 220 else:
223 message = ( 221 message = (
224 "Received [color=%s]%s[/color] from %s" % [item_color, full_item_name, player_name] 222 "Received %s from %s" % [wrapInItemColorTags(full_item_name, flags), player_name]
225 ) 223 )
226 224
227 if gamedata.anti_trap_ids.has(item): 225 if gamedata.anti_trap_ids.has(item):
@@ -267,13 +265,20 @@ func _process_message(message):
267 if !message.has("found") || !message["found"]: 265 if !message.has("found") || !message["found"]:
268 global.get_node("Messages").showMessage( 266 global.get_node("Messages").showMessage(
269 ( 267 (
270 "Hint: [color=%s]%s[/color]%s is on %s" 268 "Hint: %s%s is on %s"
271 % [item_color, item_name, is_for, location_name] 269 % [
270 wrapInItemColorTags(item_name, message["item"]["flags"]),
271 is_for,
272 location_name
273 ]
272 ) 274 )
273 ) 275 )
274 else: 276 else:
275 if message["receiving"] != client._slot: 277 if message["receiving"] != client._slot:
276 var sentMsg = "Sent [color=%s]%s[/color] to %s" % [item_color, item_name, player_name] 278 var sentMsg = (
279 "Sent %s to %s"
280 % [wrapInItemColorTags(item_name, message["item"]["flags"]), player_name]
281 )
277 #if _hinted_locations.has(message["item"]["location"]): 282 #if _hinted_locations.has(message["item"]["location"]):
278 # sentMsg += " ([color=#fafad2]Hinted![/color])" 283 # sentMsg += " ([color=#fafad2]Hinted![/color])"
279 global.get_node("Messages").showMessage(sentMsg) 284 global.get_node("Messages").showMessage(sentMsg)
@@ -298,9 +303,7 @@ func parse_printjson_for_textclient(message):
298 if client._item_id_to_name[item_player_game].has(int(message_part["text"])): 303 if client._item_id_to_name[item_player_game].has(int(message_part["text"])):
299 item_name = client._item_id_to_name[item_player_game][int(message_part["text"])] 304 item_name = client._item_id_to_name[item_player_game][int(message_part["text"])]
300 305
301 parts.append( 306 parts.append(wrapInItemColorTags(item_name, message_part["flags"]))
302 "[color=%s]%s[/color]" % [colorForItemType(message_part["flags"]), item_name]
303 )
304 elif message_part["type"] == "location_id": 307 elif message_part["type"] == "location_id":
305 var location_name = "Unknown" 308 var location_name = "Unknown"
306 var location_player_game = client._game_by_player[message_part["player"]] 309 var location_player_game = client._game_by_player[message_part["player"]]
@@ -512,6 +515,14 @@ func colorForItemType(flags):
512 return "#14de9e" 515 return "#14de9e"
513 516
514 517
518func wrapInItemColorTags(text, flags):
519 var int_flags = int(flags)
520 if int_flags & 1 and int_flags & 2: # proguseful
521 return "[rainbow]%s[/rainbow]" % text
522 else:
523 return "[color=%s]%s[/color]" % [colorForItemType(flags), text]
524
525
515func get_letter_behavior(key, level2): 526func get_letter_behavior(key, level2):
516 if shuffle_letters == kSHUFFLE_LETTERS_UNLOCKED: 527 if shuffle_letters == kSHUFFLE_LETTERS_UNLOCKED:
517 return kLETTER_BEHAVIOR_UNLOCKED 528 return kLETTER_BEHAVIOR_UNLOCKED
diff --git a/client/Archipelago/messages.gd b/client/Archipelago/messages.gd index 82fdbc4..ab4f071 100644 --- a/client/Archipelago/messages.gd +++ b/client/Archipelago/messages.gd
@@ -1,5 +1,7 @@
1extends CanvasLayer 1extends CanvasLayer
2 2
3var SCRIPT_rainbowText
4
3var _message_queue = [] 5var _message_queue = []
4var _font 6var _font
5var _container 7var _container
@@ -23,6 +25,7 @@ func _ready():
23 25
24func _add_message(text): 26func _add_message(text):
25 var new_label = RichTextLabel.new() 27 var new_label = RichTextLabel.new()
28 new_label.install_effect(SCRIPT_rainbowText.new())
26 new_label.push_font(_font) 29 new_label.push_font(_font)
27 new_label.push_font_size(36) 30 new_label.push_font_size(36)
28 new_label.push_outline_color(Color(0, 0, 0, 1)) 31 new_label.push_outline_color(Color(0, 0, 0, 1))
diff --git a/client/Archipelago/rainbowText.gd b/client/Archipelago/rainbowText.gd new file mode 100644 index 0000000..9a4c1d0 --- /dev/null +++ b/client/Archipelago/rainbowText.gd
@@ -0,0 +1,10 @@
1extends RichTextEffect
2
3var bbcode = "rainbow"
4
5
6func _process_custom_fx(char_fx: CharFXTransform):
7 char_fx.color = Color.from_hsv(
8 char_fx.elapsed_time - floor(char_fx.elapsed_time), 1.0, 1.0, 1.0
9 )
10 return true
diff --git a/client/Archipelago/settings_screen.gd b/client/Archipelago/settings_screen.gd index 44c614a..b29fb19 100644 --- a/client/Archipelago/settings_screen.gd +++ b/client/Archipelago/settings_screen.gd
@@ -62,6 +62,7 @@ func _ready():
62 var messages_script = load("user://maps/Archipelago/messages.gd") 62 var messages_script = load("user://maps/Archipelago/messages.gd")
63 var messages_instance = messages_script.new() 63 var messages_instance = messages_script.new()
64 messages_instance.name = "Messages" 64 messages_instance.name = "Messages"
65 messages_instance.SCRIPT_rainbowText = load("user://maps/Archipelago/rainbowText.gd")
65 global.add_child(messages_instance) 66 global.add_child(messages_instance)
66 67
67 var textclient_script = load("user://maps/Archipelago/textclient.gd") 68 var textclient_script = load("user://maps/Archipelago/textclient.gd")