class Model::TeamsSetup

Constants

COMPUTER_TYPE
HUMAN_TYPE
TEAM_TYPES

Attributes

team_types[R]

Public Class Methods

new(args) click to toggle source
# File lib/tic_tac_toe/model/teams_setup.rb, line 9
def initialize(args)
  @team_klass = args[:team_klass]
  @piece_klass = args[:piece_klass]
  @move_klass = args[:move_klass]
  @move_strategy_klass = args[:move_strategy_klass]
  @team_types = { "Player": HUMAN_TYPE, "Computer": COMPUTER_TYPE }
end

Public Instance Methods

create_teams(teams_args) click to toggle source
# File lib/tic_tac_toe/model/teams_setup.rb, line 17
def create_teams(teams_args)
  teams_args.map { |args| create_team(args) }
end
valid_team_type?(type) click to toggle source
# File lib/tic_tac_toe/model/teams_setup.rb, line 21
def valid_team_type?(type)
  TEAM_TYPES.include?(type)
end

Private Instance Methods

create_team(args) click to toggle source
# File lib/tic_tac_toe/model/teams_setup.rb, line 27
def create_team(args)
  name = args[:name]
  piece = @piece_klass.new(name, @move_klass)
  move_strategy = args[:type] == COMPUTER_TYPE ? @move_strategy_klass.new : nil

  @team_klass.new(name: name,
                  move_strategy: move_strategy,
                  pieces: [piece])
end