Module: Lich::Messaging
- Defined in:
- documented/messaging.rb
Overview
The Messaging module contains methods for handling messaging capabilities in Lich.
Class Method Summary collapse
-
.make_cmd_link(link_text, link_action, encode: true) ⇒ String
Creates a command link message.
-
.mono(msg, encode: false) ⇒ void
defaulting encoding here to false instead of true like other methods due to backwards compatibility that it never encoded before whereas all the other methods were already encoding and therefor should default to allow for them.
-
.monsterbold(msg, encode: true) ⇒ String
Formats a message to be displayed in monster bold style.
-
.msg(type = "info", msg = "", encode: true) ⇒ void
Sends a formatted message to the user.
-
.msg_format(type = "info", msg = "", cmd_link: nil, encode: true) ⇒ String
Formats a message with specific styling based on type.
-
.stream_window(msg, window = "familiar", encode: true) ⇒ void
Prepares a message for display in a specific stream window.
-
.xml_encode(msg) ⇒ String
Encodes a message into XML format.
Class Method Details
.make_cmd_link(link_text, link_action, encode: true) ⇒ String
Creates a command link message.
178 179 180 |
# File 'documented/messaging.rb', line 178 def self.make_cmd_link(link_text, link_action, encode: true) return msg_format("cmd", link_text, cmd_link: link_action, encode: encode) end |
.mono(msg, encode: false) ⇒ void
This method returns an undefined value.
defaulting encoding here to false instead of true like other methods due to backwards compatibility that it never encoded before whereas all the other methods were already encoding and therefor should default to allow for them. Sends a message in mono format.
191 192 193 194 195 196 197 198 199 |
# File 'documented/messaging.rb', line 191 def self.mono(msg, encode: false) return raise StandardError.new 'Lich::Messaging.mono only works with String parameters!' unless msg.is_a?(String) msg = xml_encode(msg) if encode if $frontend =~ /^(?:stormfront|wrayth|genie)$/i _respond "<output class=\"mono\"/>\n" + msg + "\n<output class=\"\"/>" else _respond msg.split("\n") end end |
.monsterbold(msg, encode: true) ⇒ String
Formats a message to be displayed in monster bold style.
33 34 35 36 |
# File 'documented/messaging.rb', line 33 def self.monsterbold(msg, encode: true) # return monsterbold_start + self.xml_encode(msg) + monsterbold_end return msg_format("monster", msg, encode: encode) end |
.msg(type = "info", msg = "", encode: true) ⇒ void
This method returns an undefined value.
Sends a formatted message to the user.
166 167 168 169 |
# File 'documented/messaging.rb', line 166 def self.msg(type = "info", msg = "", encode: true) return if type == "debug" && (Lich.debug_messaging.nil? || Lich.debug_messaging == "false" || Lich.debug_messaging == false) _respond msg_format(type, msg, encode: encode) end |
.msg_format(type = "info", msg = "", cmd_link: nil, encode: true) ⇒ String
Formats a message with specific styling based on type.
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
# File 'documented/messaging.rb', line 82 def self.msg_format(type = "info", msg = "", cmd_link: nil, encode: true) msg = xml_encode(msg) if encode preset_color_before = "" preset_color_after = "" wizard_color = { "white" => 128, "black" => 129, "dark blue" => 130, "dark green" => 131, "dark teal" => 132, "dark red" => 133, "purple" => 134, "gold" => 135, "light grey" => 136, "blue" => 137, "bright green" => 138, "teal" => 139, "red" => 140, "pink" => 141, "yellow" => 142 } if $frontend =~ /^(?:stormfront|frostbite|profanity|wrayth)$/ case type when "error", "yellow", "bold", "monster", "creature" preset_color_before = monsterbold_start preset_color_after = monsterbold_end when "warn", "orange", "gold", "thought" preset_color_before = "<preset id='thought'>" preset_color_after = "</preset>" when "info", "teal", "whisper" preset_color_before = "<preset id='whisper'>" preset_color_after = "</preset>" when "green", "speech", "debug", "light green" preset_color_before = "<preset id='speech'>" preset_color_after = "</preset>" when "link", "command", "selectedLink", "watching", "roomName" preset_color_before = "" preset_color_after = "" when "cmd" preset_color_before = "<d cmd='#{xml_encode(cmd_link)}'>" preset_color_after = "</d>" end elsif $frontend =~ /^(?:wizard|avalon)$/ case type when "error", "yellow", "bold", "monster", "creature" preset_color_before = monsterbold_start preset_color_after = (monsterbold_end + " ") when "warn", "orange", "gold", "thought" preset_color_before = wizard_color["gold"].chr.force_encoding(Encoding::ASCII_8BIT) preset_color_after = "\240".force_encoding(Encoding::ASCII_8BIT) when "info", "teal", "whisper" preset_color_before = wizard_color["teal"].chr.force_encoding(Encoding::ASCII_8BIT) preset_color_after = "\240".force_encoding(Encoding::ASCII_8BIT) when "green", "speech", "debug", "light green" preset_color_before = wizard_color["bright green"].chr.force_encoding(Encoding::ASCII_8BIT) preset_color_after = "\240".force_encoding(Encoding::ASCII_8BIT) when "link", "command", "selectedLink", "watching", "roomName" preset_color_before = "" preset_color_after = "" when "cmd" # these browsers can't handle links preset_color_before = "" preset_color_after = "" end else case type when "error", "yellow", "bold", "monster", "creature" preset_color_before = monsterbold_start preset_color_after = monsterbold_end when "warn", "orange", "gold", "thought" preset_color_before = "!! " preset_color_after = "" when "info", "teal", "whisper" preset_color_before = "-- " preset_color_after = "" when "green", "speech", "debug", "light green" preset_color_before = ">> " preset_color_after = "" when "link", "command", "selectedLink", "watching", "roomName" preset_color_before = "" preset_color_after = "" when "cmd" # these browsers can't handle links preset_color_before = "" preset_color_after = "" end end return (preset_color_before + msg + preset_color_after) end |
.stream_window(msg, window = "familiar", encode: true) ⇒ void
This method returns an undefined value.
Prepares a message for display in a specific stream window.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'documented/messaging.rb', line 45 def self.stream_window(msg, window = "familiar", encode: true) msg = xml_encode(msg) if encode if XMLData.game =~ /^GS/ allowed_streams = ["familiar", "speech", "thoughts", "loot", "voln"] elsif XMLData.game =~ /^DR/ allowed_streams = ["familiar", "speech", "thoughts", "combat"] end stream_window_before_txt = "" stream_window_after_txt = "" if $frontend =~ /stormfront|profanity/i && allowed_streams.include?(window) stream_window_before_txt = "<pushStream id=\"#{window}\" ifClosedStyle=\"watching\"/>" stream_window_after_txt = "\r\n<popStream/>\r\n" else if window =~ /familiar/i stream_window_before_txt = "\034GSe\r\n" stream_window_after_txt = "\r\n\034GSf\r\n" elsif window =~ /thoughts/i stream_window_before_txt = "You hear the faint thoughts of LICH-MESSAGE echo in your mind:\r\n" stream_window_after_txt = "" elsif window =~ /voln/i stream_window_before_txt = %{The Symbol of Thought begins to burn in your mind and you hear LICH-MESSAGE thinking, "} stream_window_after_txt = %{"\r\n} end end _respond stream_window_before_txt + msg + stream_window_after_txt end |