亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? world.h

?? 吃豆子游戲源碼
?? H
字號(hào):
/**
 *	File	:	World.h
 *  Author	:	Kevin Lynx
 *	Date	:	2007/7/29
 */
#ifndef	_WORLD_H_
#define	_WORLD_H_

#include "Singleton.h"
#include <map>

using std::map;

/**
 * World class
 *
 * Implements the world in PacShooter, mainly building the map
 */
class World : public Singleton<World>
{
public:
	/**
	 * Stone type
	 *
	 */
	enum E_StoneType
	{
		STONE_NONE = -1,
		/// these stones below cannot be destroyed
		STONE_DESTROY_MIN,
		STONE1_1 = 1,
		STONE2_1,
		STONE_DESTROY_MAX,
		/// these stones below can be destroyed 
		STONE1_2,
		STONE1_3,
		STONE2_2,
		STONE2_3,
		STONE2_4,
		STONE_COUNT
	};

	/**
	 * Monster type
	 *
	 */
	enum E_MonsterType
	{
		MONSTER_NONE = -1,
		MONSTER_2,
		MONSTER_3,
		MONSTER_4
	};

	/**
	 * Bonus type
	 *
	 */
	enum E_BonusType
	{
		BONUS_NONE = -1,
		B_BEAN,					/// 豆子
		B_4_SIDES,				/// 朝四個(gè)方向發(fā)射子彈的獎(jiǎng)勵(lì)
		B_ARMOUR,				/// 保護(hù)主角不受傷害的盾牌獎(jiǎng)勵(lì)
		B_MONEY,				/// 增加分?jǐn)?shù)
		B_TIME,					/// 延長(zhǎng)游戲時(shí)間
		B_GLUE,					/// 使所有怪物移動(dòng)速度下降
		B_SUPER_FIRE,			/// 可以連續(xù)發(fā)射子彈,不用等到子彈消失
		B_LIFE,					/// 增加生命值
		B_COUNT
	};

	/**
	 * resources set type
	 *
	 * key : the model's type 
	 * value: the resources, i mean the model
	 */
	typedef map<int, IAnimatedMesh*>	tModelSet;

	/**
	 * monster texture set
	 *
	 * key : the monster's type
	 * value : the texture
	 */
	typedef map<int, ITexture*>		tMonsterTexture;

public:
	/**
	 * Constructor
	 *
	 */
	World( IrrlichtDevice *device );

	/**
	 * Destructor
	 *
	 */
	~World();

	/**
	 * load a level 
	 *
	 */
	bool	load( bool nextLevel = false);

	/**
	 * createGround
	 *
	 */
	void	createGround();

	/**
	 * release
	 *
	 */
	void	release();

	/**
	 * collision
	 *
	 * You should know, in this game the collision between sprite(model) and
	 * world only depends on xz plane ( donot care y value in 3d world ).
	 * So just provide the rect around the model on xz plane, and the direction
	 * of the model that means the model is moving toward dir now.
	 *
	 * and this function will return the collision check result .
	 * 0 means it can move , otherwise, it got something like stone( cannot move),
	 * bonuses , especially for our hero.
	 */
	int		collision( const rect<float> &box2d, const vector3df &dir );

	/**
	 * adjustPos
	 *
	 * mainly adjust the player's position
	 */
	void	adjustPos( const rect<float> &box2d, const vector3df &dir, vector3df &outPos );

	/**
	 * an assist function.
	 *
	 */
	int		collision( const vector3df &pos );

	void	worldToMap( float x, float z, int &ax, int &az );
	void	mapToWorld( int ax, int az, float &x,float &z );
	void	mapToWorldCenter( int ax, int az, float &cx, float &cz );

	/**
	 * check whether got a bean
	 * It's impossible that our hero can eat two beans at the same time!
	 *
	 */
	bool	isGotBean( const aabbox3df &box  );

	/**
	 * getMonsterRes
	 *
	 * return a monster's mesh texture 
	 */
	bool	getMonsterRes( int type, IAnimatedMesh *&mesh, ITexture *&texture );
	
	/**
	 * getBonusRes
	 *
	 */
	bool	getBonusRes( int type, IAnimatedMesh *&mesh );
	
	/**
	 * getMapValue
	 *
	 * 
	 */
	int		getMapValue( int ax,int az );

	/**
	 * check whether the grid you can get
	 *
	 */
	bool	canReach( int ax, int az );

	/**
	 * check whether a sprite is at the center position
	 *
	 * you know, a sprite is always at some array position (a grid) , 
	 * so this function check whether the sprite is at the center of the grid
	 */
	bool	isCenterPos( const vector3df &worldPos );

	/**
	 * getValidPos
	 *
	 * return a valid position in world space, there can put a monster
	 */
	void	getValidPos( float &x, float &z );

	void	setLevelIndex( int index );

	/**
	 * isLevelClear
	 *
	 * when all the beans were eaten, the level is clear,so return true
	 */
	bool	isLevelClear();
	
	/**
	 * isOutOfWorld
	 *
	 * return whether the given rect on xz plane is out of world
	 */
	bool	isOutOfWorld( const rect<f32> &rect );

	int		getBeanCount() { return mBeanCount; }
private:
	/**
	 * load resources which used to build the world
	 *
	 * @param file the level resources config file
	 */
	bool	loadModels( const std::string &file );

	/**
	 * load map
	 *
	 * this function will read map array data and put stones on the ground
	 * @param mapFile the map array config file, the file name is 
	 *        specified in the level resources config file
	 */
	bool	loadMap( const std::string &mapFile );

	/**
	 * create map item
	 *
	 */
	void	createMapItem( int value, int x, int z );

	/**
	 * caculate a scene node id
	 *
	 */
	int		getNodeId( int ax, int az );

	/**
	 * getNextLevelIndex
	 *
	 */
	int		getNextLevelIndex( int curIndex );


private:
	IrrlichtDevice *mDevice;
	
	tModelSet		mStoneSet;
	tModelSet		mMonsterSet;
	tModelSet		mBonusSet;
	tMonsterTexture mMonsterTextSet;

	ITexture       *mBkTexture;
	ISceneNode	   *mGroundNode;
	
	int		*mMapData;
	int		mBeanCount;	
	int		mCurLevelIndex;
public:
	dimension2d<int>	mMapSize;
	dimension2d<float>	mStartPos;
	dimension2d<int>	mStoneSize;

	position2d<float>   mPlayerWorldPos;

};

/*
	MapData : 1---STONE_COUNT : cannot move
			  STONE_COUNT - STONE_COUNT + B_COUNT : get bonus	
*/
#endif // end _WORLD_H_

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲免费观看视频| 午夜视黄欧洲亚洲| 欧美剧在线免费观看网站| 国内精品写真在线观看| 一区二区三区四区不卡视频| 久久久久久久久久电影| 欧美男生操女生| 97精品电影院| 国产成人综合在线| 喷水一区二区三区| 亚洲一区二区三区在线| 国产精品久久免费看| 91精品国产综合久久久久久| 色av一区二区| 国产xxx精品视频大全| 午夜伊人狠狠久久| 综合久久久久久| 国产亚洲婷婷免费| 欧美成人一区二区三区| 欧美另类久久久品| 欧美在线看片a免费观看| 成人免费毛片a| 国产激情视频一区二区三区欧美| 污片在线观看一区二区| 亚洲精品少妇30p| 精品午夜一区二区三区在线观看 | 欧美日韩第一区日日骚| 成人av集中营| 国产91在线观看| 精品在线观看视频| 麻豆91在线播放免费| 天堂精品中文字幕在线| 亚洲午夜av在线| 亚洲国产精品人人做人人爽| 亚洲精品国产成人久久av盗摄| 中文字幕日韩一区二区| 国产精品久久午夜夜伦鲁鲁| 国产精品毛片久久久久久久| 国产精品久久久爽爽爽麻豆色哟哟| 久久久久久9999| 国产午夜精品美女毛片视频| 国产亚洲精品中文字幕| 日本一区二区成人在线| 欧美高清一级片在线观看| 国产精品视频第一区| 亚洲国产精品av| 国产精品国产a| 亚洲精品视频免费看| 亚洲国产美女搞黄色| 亚洲18色成人| 免费的国产精品| 精品一区二区三区在线视频| 国产资源在线一区| 成人精品视频一区二区三区 | 国产日产亚洲精品系列| 国产亚洲制服色| 国产精品乱人伦一区二区| 亚洲丝袜精品丝袜在线| 亚洲va韩国va欧美va| 美女视频黄免费的久久| 国产一区二区在线观看免费| 国产精品白丝jk白祙喷水网站 | av高清久久久| 欧美性受极品xxxx喷水| 91精品国产综合久久香蕉麻豆| 制服.丝袜.亚洲.中文.综合| 日韩精品在线一区| 国产欧美日韩亚州综合| 亚洲摸摸操操av| 青青草伊人久久| 国产不卡在线播放| 日本乱码高清不卡字幕| 日韩天堂在线观看| 中文字幕av一区二区三区| 亚洲精品欧美在线| 欧美女孩性生活视频| 91久久精品一区二区| 色综合天天综合给合国产| 国产成人精品亚洲777人妖| 色婷婷久久久综合中文字幕| 欧美视频在线一区二区三区| 亚洲最新视频在线播放| 精品美女一区二区三区| 欧美怡红院视频| 成人教育av在线| 国产高清精品网站| 亚洲国产综合人成综合网站| 在线视频亚洲一区| 亚洲丝袜制服诱惑| 亚洲国产综合人成综合网站| 国产主播一区二区| 国产欧美一区视频| 欧美亚洲自拍偷拍| 蜜臀91精品一区二区三区| 色综合久久久久久久久| 欧美精品在线一区二区| 亚洲国产裸拍裸体视频在线观看乱了| 午夜精品影院在线观看| 韩国三级在线一区| 色综合色综合色综合色综合色综合| 99久久99久久精品免费看蜜桃| 色呦呦网站一区| 欧美mv日韩mv国产| 成人午夜短视频| 国产欧美日韩视频一区二区| 水蜜桃久久夜色精品一区的特点 | 国产午夜精品一区二区| 美女视频一区二区三区| 日韩欧美一级二级三级久久久| 美日韩黄色大片| 在线观看国产91| 香蕉乱码成人久久天堂爱免费| 97精品视频在线观看自产线路二| 91精品国产福利| 国产精品久久久99| 成人手机在线视频| 欧美精品一区二区三区蜜桃 | 日韩av中文字幕一区二区| 久久久欧美精品sm网站| 中文字幕一区二区三区乱码在线| 一级特黄大欧美久久久| 粉嫩蜜臀av国产精品网站| 精品日韩一区二区三区免费视频| 亚洲三级电影网站| 欧美日本精品一区二区三区| 亚洲三级在线免费| 成人精品小蝌蚪| 麻豆国产91在线播放| 亚洲综合偷拍欧美一区色| 欧美日本国产视频| 日本欧美加勒比视频| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 亚洲国产一二三| 99久久精品99国产精品| 国产精品色呦呦| 色狠狠桃花综合| 热久久国产精品| 欧美在线色视频| 亚洲精品ww久久久久久p站| 欧美日本精品一区二区三区| 蜜臀av亚洲一区中文字幕| 国产精品亚洲综合一区在线观看| 91福利在线看| 一区二区三区视频在线看| 色哟哟一区二区在线观看| 亚洲人成精品久久久久| 欧美四级电影在线观看| 亚洲va欧美va人人爽| 91精品国产aⅴ一区二区| 久久精品国产**网站演员| 精品国产3级a| 国产精品69毛片高清亚洲| 国产精品久久久久婷婷二区次| 国产精品一区二区免费不卡| 国产欧美综合在线| 99久久综合国产精品| 伊人一区二区三区| 国产精品伦一区二区三级视频| 国产精品资源网| 国产精品精品国产色婷婷| 欧美午夜片在线观看| 日韩不卡在线观看日韩不卡视频| 日韩欧美的一区二区| 国产毛片一区二区| 自拍av一区二区三区| 日本伊人午夜精品| www.日本不卡| 国产精品沙发午睡系列990531| 日本不卡中文字幕| 91久久线看在观草草青青| 成人性视频免费网站| 99久久精品国产毛片| 7777精品久久久大香线蕉| 欧美精品一区二区三区四区| 亚洲免费观看高清完整版在线观看 | 激情小说欧美图片| 国产91丝袜在线播放九色| 国产日韩欧美一区二区三区乱码| 国产尤物一区二区| 激情深爱一区二区| 亚洲欧美另类久久久精品2019| 欧美日韩在线直播| 国产另类ts人妖一区二区| 亚洲精品免费看| 欧美一级久久久| 成人免费视频免费观看| 午夜欧美视频在线观看| 久久久精品tv| 欧美日韩精品一二三区| 成人一二三区视频| 日韩成人一级大片| 国产精品成人午夜| 日韩欧美在线不卡| 91丨九色丨黑人外教| 久久国产精品色| 亚洲一区二区影院| 国产精品高清亚洲| 欧美成人aa大片| 91久久精品一区二区三区| 国产成人一级电影|