class ClasslessMud::AccountBuilder

Attributes

client[R]
game[R]
player[R]

Public Class Methods

create(client, game, &on_complete) click to toggle source
# File lib/classless_mud/account_builder.rb, line 5
def self.create client, game, &on_complete
  builder = self.new(client, game, on_complete)
  builder.login_or_create
end
new(client, game, on_complete) click to toggle source
# File lib/classless_mud/account_builder.rb, line 10
def initialize client, game, on_complete
  @client = client
  @game = game
  @on_complete = on_complete
end

Public Instance Methods

create(account_name) click to toggle source
# File lib/classless_mud/account_builder.rb, line 49
def create account_name
  client.puts "No account by the name #{account_name} exists. Create this account now? [y/N]"
  client.on do |confirm_create|
    if confirm_create == 'y' || confirm_create == 'Y'
      create_password account_name
    else
      login_or_create
    end
  end
end
create_password(account_name) click to toggle source
# File lib/classless_mud/account_builder.rb, line 60
def create_password account_name
  client.puts "Ok, #{account_name}. What is your password?"
  client.on do |password|
    client.puts "Confirm password:"
    client.on do |confirm_password|
      if password == confirm_password
        player = Player.new(name: account_name, password: password)
        player.client = client
        player.game = game
        ::ClasslessMud::CharacterSheetBuilder.create(player) {
          GameMaster.setup_player player
          login! player
        }
      else
        client.puts "Retrying.."
        create_password account_name
      end
    end
  end
end
login(player) click to toggle source
# File lib/classless_mud/account_builder.rb, line 38
def login player
  client.puts "Password:"
  client.on do |password|
    if player.password == password
      login! player
    else
      login_or_create
    end
  end
end
login!(player) click to toggle source
# File lib/classless_mud/account_builder.rb, line 16
def login! player
  @player = player
  player.client = client
  player.game = game
  player.puts "Logged in as #{player.name}"
  game.add_player player
  player.save!
  @on_complete.call(player)
end
login_or_create() click to toggle source
# File lib/classless_mud/account_builder.rb, line 26
def login_or_create
  client.puts 'Enter account name: '
  client.on do |account_name|
    player = Player.first(name: account_name)
    if player
      login player
    else
      create account_name
    end
  end
end