引き続きタスクシステムの勉強。
タスクシステムにはTaskControllerクラスとSceneControllerクラスを用いる。
シーンコントローラーにはタスク名の列挙体を渡し、TaskFactoryを設定する。そして、このシーンコントローラーもタスクなのでタスクコントローラーに登録する。
class GameInfo { public TaskController taskController; public SceneController<TaskName> sceneController; } GameInfo info; private void Form1_Load(object sender, EventArgs e) { info = new GameInfo(); // タスクコントローラーの作成 info.taskController = new TaskController(); // シーンコントローラーの作成 info.sceneController = new SceneController<TaskName>(); // TaskFactoryの設定 info.sceneController.TaskFactory = new MySceneFactory(); // タスクコントローラーに登録。プライオリティは1 info.taskController.AddTask(info.sceneController, 1); } // タスク名の列挙体 enum TaskName { Task0 }; // タスクを生成するためのFactory class MySceneFactory : TaskFactoryBase<TaskName> { public override TaskBase CreateTask(TaskName name) { switch( name ) { case TaskName.Task0: return new Task0(); } throw null; } } // タスククラス class Task0 : TaskBase { public override int Task(Object o) { return 0; } }
ほとんど、サンプルそのまま。
デザインパターンをよく知らないのでTaskFactoryの部分がいまいち理解できていない。デザインパターンも勉強しないと。