Module: Lich::Messaging
- Defined in:
- lib/messaging.rb
Class Method Summary collapse
-
.make_cmd_link(link_text, link_action, encode: true) ⇒ String
Creates a command link message.
-
.mono(msg, encode: false) ⇒ void
Sends a message in a monospaced format.
-
.monsterbold(msg, encode: true) ⇒ String
Formats a message to be displayed as monster bold.
-
.msg(type = "info", msg = "", encode: true) ⇒ void
Sends a message to the user with a specific type and optional encoding.
-
.msg_format(type = "info", msg = "", cmd_link: nil, encode: true) ⇒ String
Formats a message with specific color and style based on its type.
-
.stream_window(msg, window = "familiar", encode: true) ⇒ void
Sends a message to a specific stream window.
-
.xml_encode(msg) ⇒ String
Encodes a message in XML format.
Class Method Details
.make_cmd_link(link_text, link_action, encode: true) ⇒ String
Creates a command link message.
178 179 180 |
# File 'lib/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 only works with String parameters.
This method returns an undefined value.
Sends a message in a monospaced format.
191 192 193 194 195 196 197 198 199 |
# File 'lib/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 as monster bold.
29 30 31 32 |
# File 'lib/messaging.rb', line 29 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 message to the user with a specific type and optional encoding.
165 166 167 168 |
# File 'lib/messaging.rb', line 165 def self.msg(type = "info", msg = "", encode: true) return if type == "debug" && (Lich.debug_messaging.nil? || 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 color and style based on its type.
80 81 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 |
# File 'lib/messaging.rb', line 80 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.
Sends a message to a specific stream window.
42 43 44 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 |
# File 'lib/messaging.rb', line 42 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 |