Class: Lich::GameBase::GameInstance::Base
- Inherits:
-
Object
- Object
- Lich::GameBase::GameInstance::Base
- Includes:
- RoomFormatter
- Defined in:
- documented/games.rb
Overview
Base instance class that defines the interface
Direct Known Subclasses
Constant Summary
Constants included from RoomFormatter
RoomFormatter::OBVIOUS_EXIT_PATTERN
Instance Method Summary collapse
-
#atmospherics ⇒ Boolean
Returns the current atmospheric stream flag state.
-
#atmospherics=(value) ⇒ Boolean
private
Sets the atmospheric stream flag state.
-
#buffer_room_objs(server_string) ⇒ Object
Buffer split
or when server sends "...wait N seconds." on separate line Returns [should_skip, server_string]. - #clean_serverstring(server_string) ⇒ Object
-
#combat_count ⇒ Integer
Returns the current depth of combat stream nesting.
- #get_documentation_url ⇒ Object
- #handle_atmospherics(server_string) ⇒ Object
- #handle_combat_tags(server_string) ⇒ Object
- #increment_combat_count(server_string) ⇒ Object protected
-
#initialize ⇒ Base
constructor
A new instance of Base.
- #modify_room_display(alt_string) ⇒ Object
- #process_game_specific_data(server_string, stripped_server = nil) ⇒ Object
-
#process_room_display(alt_string) ⇒ String
private
Prepends room exit and StringProc navigation lines to the server output.
Constructor Details
#initialize ⇒ Base
Returns a new instance of Base.
192 193 194 195 196 197 |
# File 'documented/games.rb', line 192 def initialize @atmospherics = false @combat_count = 0 @end_combat_tags = ["<prompt", "<clearStream", "<component", "<pushStream id=\"percWindow"] @pending_room_objs = nil end |
Instance Method Details
#atmospherics ⇒ Boolean
Returns the current atmospheric stream flag state.
245 246 247 |
# File 'documented/games.rb', line 245 def atmospherics @atmospherics end |
#atmospherics=(value) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Sets the atmospheric stream flag state.
254 255 256 |
# File 'documented/games.rb', line 254 def atmospherics=(value) @atmospherics = value end |
#buffer_room_objs(server_string) ⇒ Object
Buffer split
260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 |
# File 'documented/games.rb', line 260 def buffer_room_objs(server_string) if @pending_room_objs if server_string.include?("</component>") combined = @pending_room_objs + server_string.sub(/\r\n$/, '') Lich.log "Combined split room component: #{combined.inspect}" @pending_room_objs = nil return [false, combined] else @pending_room_objs = @pending_room_objs + server_string.sub(/\r\n$/, '') return [true, nil] end end if server_string =~ /^(?:<\/?(?:pushStream|popStream)[^>]*>\s*)*<component id='room (?:objs|players)'>.*\.\.\.wait \d+ seconds?\.\r\n$/ && !server_string.include?("</component>") Lich.log "Open-ended room component tag, buffering: #{server_string.inspect}" # Strip the "...wait N seconds.\r\n" part, keep the opening tag and any content before it @pending_room_objs = server_string.sub(/\.\.\.wait \d+ seconds?\.\r\n$/, '') return [true, nil] end [false, server_string] end |
#clean_serverstring(server_string) ⇒ Object
199 200 201 |
# File 'documented/games.rb', line 199 def clean_serverstring(server_string) raise NotImplementedError, "#{self.class} must implement #clean_serverstring" end |
#combat_count ⇒ Integer
Returns the current depth of combat stream nesting.
238 239 240 |
# File 'documented/games.rb', line 238 def combat_count @combat_count end |
#get_documentation_url ⇒ Object
211 212 213 |
# File 'documented/games.rb', line 211 def get_documentation_url raise NotImplementedError, "#{self.class} must implement #get_documentation_url" end |
#handle_atmospherics(server_string) ⇒ Object
207 208 209 |
# File 'documented/games.rb', line 207 def handle_atmospherics(server_string) raise NotImplementedError, "#{self.class} must implement #handle_atmospherics" end |
#handle_combat_tags(server_string) ⇒ Object
203 204 205 |
# File 'documented/games.rb', line 203 def (server_string) raise NotImplementedError, "#{self.class} must implement #handle_combat_tags" end |
#increment_combat_count(server_string) ⇒ Object (protected)
285 286 287 288 289 |
# File 'documented/games.rb', line 285 def increment_combat_count(server_string) @combat_count += server_string.scan("<pushStream id=\"combat\" />").length @combat_count -= server_string.scan("<popStream id=\"combat\" />").length @combat_count = 0 if @combat_count < 0 end |
#modify_room_display(alt_string) ⇒ Object
219 220 221 |
# File 'documented/games.rb', line 219 def modify_room_display(alt_string) raise NotImplementedError, "#{self.class} must implement #modify_room_display" end |
#process_game_specific_data(server_string, stripped_server = nil) ⇒ Object
215 216 217 |
# File 'documented/games.rb', line 215 def process_game_specific_data(server_string, stripped_server = nil) raise NotImplementedError, "#{self.class} must implement #process_game_specific_data" end |
#process_room_display(alt_string) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Prepends room exit and StringProc navigation lines to the server output.
Subclasses must override to provide game-specific room display processing.
231 232 233 |
# File 'documented/games.rb', line 231 def process_room_display(alt_string) raise NotImplementedError, "#{self.class} must implement #process_room_display" end |