HPLLib:タスク処理を行いたい
出典: YKAwiki
目次 |
[編集]
概要
ショットや敵など、大量に出現するモノを管理したいとき
[編集]
目標の実行画面
次節で示すソースコードを実行した画面
[編集]
ソースファイル等
[編集]
ソースコード説明
[編集]
タスクマネージャー作成
//タスクマネージャー宣言 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();
これを入れればおしまい
[編集]
