def parse_messages(msg)
case @mode
when :initialize
when :name
publish("[clearline]") if @terminal =~ /^vt|xterm/
@login_name = msg.proper_name
if options['guest_accounts'] && @login_name =~ /Guest/i
self.name = "Guest#{id}"
@character = new_char
put_object(self)
world.all_accounts << id
Engine.instance.db.makenoswap(id)
@conn.set(:color, color)
welcome
@mode = :playing
elsif @login_name.empty?
sendmsg(append_echo("login> "))
@mode = :name
else
acctid = world.all_accounts.find {|a|
@login_name == get_object(a).name
}
@account = get_object(acctid)
sendmsg(append_echo("password> "))
@conn.set(:hide, true)
@mode = :password
end
when :password
@login_passwd = msg
@conn.set(:hide, false)
if @account.nil?
sendmsg(append_echo("Create new user?\n'Y/y' to create, Hit enter to retry login> "))
@mode = :newacct
else
if @login_passwd.is_passwd?(@account.passwd)
unsubscribe_all
@conn.unsubscribe_all
@conn.subscribe(@account.id)
Engine.instance.db.makenoswap(@account.id)
@conn.set(:color, @account.color)
switch_acct(@account)
reconnect = false
if @account.subscriber_count > 0
@account.publish(:reconnecting)
@account.unsubscribe_all
reconnect = true
end
@account.subscribe(@conn)
if options['account_system']
@account.sendmsg(append_echo(login_menu))
@account.mode = :menu
else
@character = get_object(@account.characters.first)
Engine.instance.db.makenoswap(@character.id)
world.connected_characters << @character.id
@character.account = @account
@account.character = @character
welcome(reconnect)
@account.mode = :playing
end
else
@checked -= 1
sendmsg(append_echo("Sorry wrong password."))
if @checked < 1
disconnect
else
@mode = :name
sendmsg(append_echo("login> "))
end
end
end
when :newacct
if msg =~ /^y/i
self.name = @login_name
self.passwd = @login_passwd.encrypt
put_object(self)
Engine.instance.db.makenoswap(id)
world.all_accounts << id
@conn.set(:color, color)
if options['account_system']
sendmsg(append_echo(login_menu))
@mode = :menu
else
@character = new_char
welcome
@mode = :playing
end
else
@mode = :name
sendmsg(append_echo("login> "))
end
when :menu, :menucr, :menupl
parse_menu(msg)
when :playing
@character.parse(msg)
else
log.error "Account#parse_messages unknown :mode - #{@mode.inspect}"
end
end