📄 bullet.h
字号:
/**
* File : Bullet.h
* Author : Kevin Lynx
* Date : 2007/8/1
*/
#ifndef _BULLET_H_
#define _BULLET_H_
#include <list>
#include "Sprite.h"
#include "Singleton.h"
using std::list;
class Player;
/**
* Bullet
*
* Implements a bullet fired by player or a monster
*/
class Bullet : public Sprite
{
public:
/**
* Constructor
*
*/
Bullet( vector3df dir );
/**
* Destructor
*
*/
~Bullet();
/**
* collision with a box
*
* @param box the bounding box for a sprite ( player or monster )
* @return true if collision check ok
*/
bool collision( const aabbox3df &box );
/**
* getExpPosition
*
* only used to create an exploding effect
*/
const vector3df getExpPosition();
/**
* isFireStone
*
* check whether the bullet fired on a stone
*/
bool isFireStone();
/// inherited from base class
void update( float dt );
public:
int mDamage;
};
/**
* Bullet speed
*
*/
//const float BS_SPEED1 = 4;//here you can add more speed constant :)
/**
* bullet manager
*
* manage the bullets fired by the monsters and bullets
* fired by the player
*/
class BulletManager : public Singleton<BulletManager>
{
public:
/**
* some types
*
*/
typedef list<Bullet*> tBullets;
/**
* Bullet damages
*
*/
enum
{
BD_DAMAGE = 10
};
public:
/**
* Constructor
*
*/
BulletManager( IrrlichtDevice *device );
/**
* Destructor
*
*/
~BulletManager();
/**
* init
*
*/
bool init();
/**
* reset
*
* it just delete all bullets
*/
void reset();
/**
* release
*
* it will destroy all the bullets
*/
void release();
/**
* update
*
*/
void update( float dt );
/**
* createBullet
*
* @return a new bullet object
*/
Bullet *createBullet( const vector3df &pos, vector3df dir );
/**
* createPlayerBullet
*
* create a bullet for the player
*/
void createPlayerBullet( const vector3df &pos, vector3df dir );
/**
* createMonsterBullet
*
* create a bullet for monsters
*/
void createMonsterBullet( const vector3df &pos, vector3df dir );
/**
* checkPlayer
*
* collision check between player and monster bullets
*/
bool checkPlayer( Player *player );
/**
* getPlayerBulletCount
*
* returns the bullet count that fired by the player
*/
int getPlayerBulletCount();
/**
* getCurrentPlayerBullet
*
* this function will return the current bullet for colllision check
* between the player bullets and monsters
*/
Bullet *getCurrentPlayerBullet();
void beginCheckPlayerBullet();
void delCurrentPlayerBullet();
void advanceCurrentPlayerBullet();
private:
IrrlichtDevice *mDevice;
tBullets mPlayerBullets;
tBullets mMonsterBullets;
tBullets::iterator mCurPlayerBullet;
};
#endif //end _BULLET_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -