Module: Lich::Messaging
- Defined in:
- documented/messaging.rb
Class Method Summary collapse
-
.make_cmd_link(link_text, link_action, encode: true) ⇒ String
Creates a command link formatted message.
-
.mono(msg, encode: false) ⇒ void
Sends a message in a mono format.
-
.monsterbold(msg, encode: true) ⇒ String
Formats a message to be displayed in bold for monsters.
-
.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 its 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 formatted message.
170 171 172 |
# File 'documented/messaging.rb', line 170 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.
Sends a message in a mono format.
180 181 182 183 184 185 186 187 188 |
# File 'documented/messaging.rb', line 180 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.supports_mono? _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 bold for monsters.
29 30 31 32 |
# File 'documented/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 formatted message to the user.
159 160 161 162 |
# File 'documented/messaging.rb', line 159 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 its type.
76 77 78 79 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 |
# File 'documented/messaging.rb', line 76 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.supports_xml? 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.supports_gsl? 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.
40 41 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 |
# File 'documented/messaging.rb', line 40 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.supports_streams? && 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 |
.xml_encode(msg) ⇒ String
Encodes a message into XML format.
16 17 18 19 20 21 22 |
# File 'documented/messaging.rb', line 16 def self.xml_encode(msg) if Frontend.supports_gsl? sf_to_wiz(msg.encode(:xml => :text), bypass_multiline: true) || "" # sf_to_wiz returns nil when blank/new line only, which causes issue for messaging, always return string if nil else msg.encode(:xml => :text) end end |