class JamesBond::Core::MissionPool

Attributes

mission_by_main_command[RW]
mission_list[RW]

Public Class Methods

new(params={}) click to toggle source
# File lib/james_bond/core/mission_pool.rb, line 6
def initialize(params={})
  @mission_list = params[:mission_list]
  build_mission_by_main_command
end

Public Instance Methods

decide_mission(command) click to toggle source
# File lib/james_bond/core/mission_pool.rb, line 11
def decide_mission(command)
  @mission_by_main_command[command.main_command]
end

Private Instance Methods

build_mission_by_main_command() click to toggle source
# File lib/james_bond/core/mission_pool.rb, line 17
def build_mission_by_main_command
  @mission_by_main_command = {}
  @mission_list.each do |mission|
    mission.core_mission_config.main_commands.each do |main_command|
      another_mission = @mission_by_main_command[main_command]
      raise "Mission conflict! Two missions (\"#{another_mission.name}\" and \"#{mission.name}\") " \
          + "are assigned for the same command (\"#{main_command}\")" if another_mission
      @mission_by_main_command[main_command] = mission
    end
  end
end