HPLLib:タスク処理を行いたい

出典: YKAwiki

目次

概要

ショットや敵など、大量に出現するモノを管理したいとき

目標の実行画面

次節で示すソースコードを実行した画面

ソースファイル等

■sample08.zip

ソースコード説明

タスクマネージャー作成

//タスクマネージャー宣言
HPLTaskManager<Shot> *tmShotTask;
//タスクマネージャーのインスタンス生成
tmShotTask = new HPLTaskManager<Shot>( 0,
  UpdateShot,DrawShot,IsAliveShot,KillShot);

タスクマネージャー(デザインパターンで言うとListVisitor)は手動で作成、管理する必要があります。上に示す方法で作成しています。

与えた関数の実装

上でタスクマネージャに与えた関数を実装します。返り値にも注意

void DrawShot( Shot *obj){
 //obj->draw();
 HPLRect rNowShotArea = obj->getArea();
 gGame->drawImageTopLeft( eSpriteImage, rPShotSrcRect,
     rNowShotArea.x,rNowShotArea.y, 255);
}

追加

HPLTaskManager#addObject( T obj)で追加します。

void addShot( float x, float y, float dx, float dy){
 Shot *shot = new Shot(x,y,dx,dy,fPShotRadius,
     rPShotSrcRect.w,rPShotSrcRect.h,
     fPShotSpeed);
 shot->setRadius( fPShotRadius);
 tmShotTask->addObject(shot);
}

生きてるかどうかの処理、死亡時の処理は省略

呼び出し

HPLLib:Mainの中などに

//弾タスク更新(描画も。)
tmShotTask->updateAll();

これを入れればおしまい

重要関連項目

HPLTaskManager
BasicObject