引き続きタスクシステムの勉強。
タスクシステムには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の部分がいまいち理解できていない。デザインパターンも勉強しないと。