def update(msg)
case msg
when :disconnected
@conn = nil
unsubscribe_all
Engine.instance.db.makeswap(id)
if @character
world.connected_characters.delete(@character.id)
world.connected_characters.each do |pid|
add_event(@character.id,pid,:show,"#{name} has disconnected.")
end
Engine.instance.db.makeswap(@character.id)
@character.account = nil
if @character.name =~ /Guest/i
world.all_characters.delete(@character.id)
delete_object(@character.id)
end
@character = nil
end
if name =~ /Guest/i
world.all_accounts.delete(id)
delete_object(id)
end
when :termsize
@termsize = @conn.query(:termsize)
if @terminal =~ /^vt|xterm/
publish("[home #{@termsize[1]},1][clearline][cursave]" +
"[home 1,1][scrreset][clear][scrreg 1,#{@termsize[1]-3}][currest]")
end
when :initdone
@echo = @conn.query(:echo)
@termsize = @conn.query(:termsize)
@terminal = @conn.query(:terminal)
if @terminal =~ /^vt|xterm/
publish("[home #{@termsize[1]},1][clearline][cursave]" +
"[home 1,1][scrreset][clear][scrreg 1,#{@termsize[1]-3}][currest]")
sendmsg(LOGO)
end
sendmsg(BANNER)
sendmsg(append_echo("login> "))
@mode = :name
when String
parse_messages(msg)
else
log.error "Account#update unknown message - #{msg.inspect}"
end
rescue
log.error $!
end