/* * 作成日: 2008/05/18 */ package jp.ac.fit.asura.nao.strategy; import java.util.Collection; import java.util.HashMap; import java.util.Map; import jp.ac.fit.asura.nao.RobotContext; //import jp.ac.fit.asura.nao.strategy.actions.BackShotTask; import jp.ac.fit.asura.nao.strategy.actions.FrontShotTask; import jp.ac.fit.asura.nao.strategy.actions.GeneralizedKickTask; import jp.ac.fit.asura.nao.strategy.actions.InitialTask; import jp.ac.fit.asura.nao.strategy.actions.InsideKickTask; import jp.ac.fit.asura.nao.strategy.actions.LookAroundTask; import jp.ac.fit.asura.nao.strategy.permanent.BallTrackingTask; import jp.ac.fit.asura.nao.strategy.permanent.GetUpTask; import jp.ac.fit.asura.nao.strategy.permanent.ManualSetupTask; import jp.ac.fit.asura.nao.strategy.schedulers.DefenderStrategyTask; import jp.ac.fit.asura.nao.strategy.schedulers.ExperimentalScheduler; import jp.ac.fit.asura.nao.strategy.schedulers.GoalieStrategyTask; import jp.ac.fit.asura.nao.strategy.schedulers.StrategySchedulerTask; import jp.ac.fit.asura.nao.strategy.schedulers.StrikerStrategyTask; import jp.ac.fit.asura.nao.strategy.schedulers.WalkConfigScheduler; import jp.ac.fit.asura.nao.strategy.tactics.ApproachBallTask; import jp.ac.fit.asura.nao.strategy.tactics.DefenceTask; import jp.ac.fit.asura.nao.strategy.tactics.FindBallTask; import jp.ac.fit.asura.nao.strategy.tactics.GetBallTask; import jp.ac.fit.asura.nao.strategy.tactics.GoalieKeepTask; import jp.ac.fit.asura.nao.strategy.tactics.GoalieTask; import jp.ac.fit.asura.nao.strategy.tactics.GoaliePkTask; import jp.ac.fit.asura.nao.strategy.tactics.GotoReadyPositionTask; import jp.ac.fit.asura.nao.strategy.tactics.TurnTask; import jp.ac.fit.asura.nao.strategy.tactics.BackAreaTask; import jp.ac.fit.asura.nao.strategy.tactics.DefenceAttackTask; import jp.ac.fit.asura.nao.strategy.tactics.KickOff01Task; import jp.ac.fit.asura.nao.strategy.tactics.KickOff02Task; import jp.ac.fit.asura.nao.strategy.tactics.KickOff03Task; import org.apache.log4j.Logger; /** * * タスクマネージャ. * * タスクのインスタンスを管理します. タスクの登録、検索、一覧など. * * @author $Author: sey $ * * @version $Id: TaskManager.java 709 2008-11-23 07:40:31Z sey $ * */ public class TaskManager { private Logger log = Logger.getLogger(TaskManager.class); private Map<String, Task> tasks; private boolean initialized; public TaskManager() { tasks = new HashMap<String, Task>(64); initialized = false; } /** * タスクマネージャ * * @param context */ public void init(RobotContext context) { registerTasks(); initialized = true; for (Task task : tasks.values()) task.init(context); } /** * タスクを登録する. * * これ全部schemeにやらせてよくね? */ private void registerTasks() { add(new BallTrackingTask()); add(new GetUpTask()); add(new ManualSetupTask()); add(new GotoReadyPositionTask()); add(new FindBallTask()); add(new ApproachBallTask()); add(new GoalieKeepTask()); add(new DefenceTask()); add(new LookAroundTask()); add(new InitialTask()); //add(new BackShotTask()); // add(new ShootTask()); // add(new BackShootTask()); add(new InsideKickTask()); add(new FrontShotTask()); add(new GeneralizedKickTask()); add(new BackAreaTask()); add(new DefenceAttackTask()); add(new GoalieTask()); add(new GoaliePkTask()); add(new GetBallTask()); add(new TurnTask()); add(new StrategySchedulerTask()); add(new GoalieStrategyTask()); add(new StrikerStrategyTask()); add(new DefenderStrategyTask()); add(new KickOff01Task()); add(new KickOff02Task()); add(new KickOff03Task()); add(new ExperimentalScheduler()); add(new WalkConfigScheduler()); } public void add(Task task) { assert !tasks.containsKey(task.getName()); assert !initialized; tasks.put(task.getName(), task); } public Task find(String name) { if (!tasks.containsKey(name)) { log.error("TaskManager: task not found " + name); return null; } return tasks.get(name); } public Collection<Task> values() { return tasks.values(); } }