From 96d5da7ae8459509780e99e3e53fd146f6b055b1 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Mon, 22 Sep 2025 21:50:10 -0400 Subject: [Client] Proguseful is now rainbow --- client/Archipelago/manager.gd | 31 +++++++++++++++++++++---------- client/Archipelago/messages.gd | 3 +++ client/Archipelago/rainbowText.gd | 10 ++++++++++ client/Archipelago/settings_screen.gd | 1 + 4 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 client/Archipelago/rainbowText.gd (limited to 'client') 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): if client._player_name_by_slot.has(float(from)): player_name = client._player_name_by_slot[float(from)] - var item_color = colorForItemType(flags) - var full_item_name = item_name if prog_id != null: var door = gamedata.objects.get_doors()[prog_id] @@ -218,10 +216,10 @@ func _process_item(item, index, from, flags, amount): var message if from == client._slot: - message = "Found [color=%s]%s[/color]" % [item_color, full_item_name] + message = "Found %s" % wrapInItemColorTags(full_item_name, flags) else: message = ( - "Received [color=%s]%s[/color] from %s" % [item_color, full_item_name, player_name] + "Received %s from %s" % [wrapInItemColorTags(full_item_name, flags), player_name] ) if gamedata.anti_trap_ids.has(item): @@ -267,13 +265,20 @@ func _process_message(message): if !message.has("found") || !message["found"]: global.get_node("Messages").showMessage( ( - "Hint: [color=%s]%s[/color]%s is on %s" - % [item_color, item_name, is_for, location_name] + "Hint: %s%s is on %s" + % [ + wrapInItemColorTags(item_name, message["item"]["flags"]), + is_for, + location_name + ] ) ) else: if message["receiving"] != client._slot: - var sentMsg = "Sent [color=%s]%s[/color] to %s" % [item_color, item_name, player_name] + var sentMsg = ( + "Sent %s to %s" + % [wrapInItemColorTags(item_name, message["item"]["flags"]), player_name] + ) #if _hinted_locations.has(message["item"]["location"]): # sentMsg += " ([color=#fafad2]Hinted![/color])" global.get_node("Messages").showMessage(sentMsg) @@ -298,9 +303,7 @@ func parse_printjson_for_textclient(message): if client._item_id_to_name[item_player_game].has(int(message_part["text"])): item_name = client._item_id_to_name[item_player_game][int(message_part["text"])] - parts.append( - "[color=%s]%s[/color]" % [colorForItemType(message_part["flags"]), item_name] - ) + parts.append(wrapInItemColorTags(item_name, message_part["flags"])) elif message_part["type"] == "location_id": var location_name = "Unknown" var location_player_game = client._game_by_player[message_part["player"]] @@ -512,6 +515,14 @@ func colorForItemType(flags): return "#14de9e" +func wrapInItemColorTags(text, flags): + var int_flags = int(flags) + if int_flags & 1 and int_flags & 2: # proguseful + return "[rainbow]%s[/rainbow]" % text + else: + return "[color=%s]%s[/color]" % [colorForItemType(flags), text] + + func get_letter_behavior(key, level2): if shuffle_letters == kSHUFFLE_LETTERS_UNLOCKED: 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 @@ extends CanvasLayer +var SCRIPT_rainbowText + var _message_queue = [] var _font var _container @@ -23,6 +25,7 @@ func _ready(): func _add_message(text): var new_label = RichTextLabel.new() + new_label.install_effect(SCRIPT_rainbowText.new()) new_label.push_font(_font) new_label.push_font_size(36) 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 @@ +extends RichTextEffect + +var bbcode = "rainbow" + + +func _process_custom_fx(char_fx: CharFXTransform): + char_fx.color = Color.from_hsv( + char_fx.elapsed_time - floor(char_fx.elapsed_time), 1.0, 1.0, 1.0 + ) + 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(): var messages_script = load("user://maps/Archipelago/messages.gd") var messages_instance = messages_script.new() messages_instance.name = "Messages" + messages_instance.SCRIPT_rainbowText = load("user://maps/Archipelago/rainbowText.gd") global.add_child(messages_instance) var textclient_script = load("user://maps/Archipelago/textclient.gd") -- cgit 1.4.1