⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bullet.h

📁 吃豆子游戏源码
💻 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 + -