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

📄 tile.h

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 H
字号:
//////////////////////////////////////////////////////////////////////////////// FileName		: Tile.h// Written By	: reiot@ewestsoft.com// Description	: //////////////////////////////////////////////////////////////////////////////#ifndef __TILE_H__#define __TILE_H__#include <slist>#include "Types.h"#include "Exception.h"#include "Object.h"#include "Creature.h"#include "Item.h"#include "Obstacle.h"#include "Effect.h"#include "Portal.h"#include "Sector.h"// macro#define FLAG_ZERO(set)       (set=0)#define FLAG_SET(set,flag)   (set|=(1<<(flag)))#define FLAG_CLEAR(set,flag) (set&=~(1<<(flag)))#define FLAG_ISSET(set,flag) (set&(1<<(flag)))// type redefinitiontypedef WORD BuildingID_t;typedef WORD TerrainID_t;//////////////////////////////////////////////////////////////////////////////// Tile class://////////////////////////////////////////////////////////////////////////////class Packet;class Tile {public:	enum TileFlags 	{		TILE_GROUND_BLOCKED = 0 ,	// 鸥老狼 瘤惑捞 阜躯阑 版快		TILE_AIR_BLOCKED ,			// 鸥老狼 傍吝捞 阜躯阑 版快		TILE_UNDERGROUND_BLOCKED ,	// 鸥老狼 瘤窍啊 阜躯阑 版快		TILE_WALKING_CREATURE ,		// 鸥老狼 瘤惑俊 农府贸啊 乐阑 版快 		TILE_FLYING_CREATURE ,		// 鸥老狼 傍吝俊 农府贸啊 乐阑 版快 		TILE_BURROWING_CREATURE ,	// 鸥老狼 瘤窍俊 农府贸啊 乐阑 版快 		TILE_ITEM, 					// 鸥老 困俊 酒捞袍捞 初咯 乐阑 版快		TILE_OBSTACLE ,				// 鸥老 困俊 惑怕甫 啊柳 厘局拱捞 初咯 乐阑 版快		TILE_EFFECT,				// 鸥老 困俊 付过 按眉啊 乐阑 版快 		TILE_BUILDING ,				// 鸥老 困俊 扒拱捞 乐阑 版快		TILE_PORTAL ,				// 鸥老 困俊 器呕捞 初咯 乐阑 版快 		TILE_TERRAIN				// 瓤苞甫 林绰 硅版 鸥老老 版快	};public:	Tile(WORD m_Flag = 0, WORD m_Opt = 0) throw();	~Tile() throw();public:	bool addCreature(Creature* pCreature, bool bCheckEffect=true, bool bCheckPortal=true) throw(GameException, DuplicatedException, Error);	void deleteCreature(ObjectID_t creatureID) throw(NoSuchElementException, Error);	void deleteCreature(Creature::MoveMode mode) throw(NoSuchElementException, Error);	Creature* getCreature(ObjectID_t creatureID) throw(NoSuchElementException, Error);	Creature* getCreature(Creature::MoveMode mode) throw(NoSuchElementException, Error);	bool hasWalkingCreature() const throw() { return FLAG_ISSET(m_wFlags, TILE_WALKING_CREATURE) > 0; }	bool hasFlyingCreature() const throw() { return FLAG_ISSET(m_wFlags, TILE_FLYING_CREATURE) > 0; }	bool hasBurrowingCreature() const throw() { return FLAG_ISSET(m_wFlags, TILE_BURROWING_CREATURE) > 0; }	bool hasCreature(Creature::MoveMode mode) const throw() { return FLAG_ISSET(m_wFlags, mode + TILE_WALKING_CREATURE) > 0; }	bool hasCreature() const throw() { 		return FLAG_ISSET(m_wFlags, TILE_WALKING_CREATURE) ||			   FLAG_ISSET(m_wFlags, TILE_BURROWING_CREATURE) ||			   FLAG_ISSET(m_wFlags, TILE_FLYING_CREATURE) ; 	}public:	void addItem(Item* pItem) throw(DuplicatedException, Error);	void deleteItem() throw(NoSuchElementException, Error);	Item* getItem() throw(NoSuchElementException, Error);	bool hasItem() const throw() { return FLAG_ISSET(m_wFlags, TILE_ITEM) > 0; }	public:	void addObstacle(Obstacle* pObstacle) throw(DuplicatedException, Error);	void deleteObstacle() throw(NoSuchElementException, Error);	Obstacle* getObstacle() throw(NoSuchElementException, Error);	bool hasObstacle() const throw() { return FLAG_ISSET(m_wFlags, TILE_OBSTACLE) > 0; }public:	void addEffect(Effect* pEffect) throw(DuplicatedException, Error);	bool canAddEffect() throw(Error);	void deleteEffect(ObjectID_t effectID) throw(NoSuchElementException, Error);	Effect* getEffect(ObjectID_t effectID) throw(NoSuchElementException, Error);	bool hasEffect() const throw() { return FLAG_ISSET(m_wFlags, TILE_EFFECT) > 0; }	Effect* getEffect(Effect::EffectClass effectClass) throw(Error);public:	void addBuilding(BuildingID_t buildingID) throw(Error);	void deleteBuilding() throw(Error);	BuildingID_t getBuilding() const throw(Error);	bool hasBuilding() const throw() { return FLAG_ISSET(m_wFlags, TILE_BUILDING) > 0; }public:	void addPortal(Portal* pPortal) throw(Error);	void deletePortal() throw(Error);	Portal* getPortal() const throw(Error);	bool hasPortal() const throw() { return FLAG_ISSET(m_wFlags, TILE_PORTAL) > 0; }public:	void addTerrain(TerrainID_t terrainID) throw(Error);	void deleteTerrain() throw(Error);	TerrainID_t getTerrain() const throw(Error);	bool isTerrain() const throw() { return FLAG_ISSET(m_wFlags, TILE_TERRAIN) > 0; }public:	bool isGroundBlocked() const throw() { return FLAG_ISSET(m_wFlags, TILE_GROUND_BLOCKED) > 0; }	bool isAirBlocked() const throw() { return FLAG_ISSET(m_wFlags, TILE_AIR_BLOCKED) > 0; }	bool isUndergroundBlocked() const throw() { return FLAG_ISSET(m_wFlags, TILE_UNDERGROUND_BLOCKED) > 0; }	bool isBlocked(Creature::MoveMode mode) const throw() { return FLAG_ISSET(m_wFlags, TILE_GROUND_BLOCKED + mode) > 0; }	void setBlocked(Creature::MoveMode mode) throw() { FLAG_SET(m_wFlags, TILE_GROUND_BLOCKED + mode); }	void clearBlocked(Creature::MoveMode mode) throw() { FLAG_CLEAR(m_wFlags, TILE_GROUND_BLOCKED + mode); }	bool isFixedGroundBlocked() const throw() { return isGroundBlocked() && !hasWalkingCreature(); }public:	void addObject(Object* pObject) throw(DuplicatedException);	void deleteObject(ObjectID_t objectID) throw(NoSuchElementException);	void deleteObject(ObjectPriority tilePriority) throw(NoSuchElementException);	Object* getObject(ObjectID_t objectID) const throw(NoSuchElementException);	Object* getObject(ObjectPriority tilePriority) const throw(NoSuchElementException);public:	WORD getOption() const throw() { return m_wOption; }	void setOption(WORD option) throw() { m_wOption = option; }public:	Sector* getSector(void) const { return m_pSector; }	void setSector(Sector* pSector) { m_pSector = pSector; }public:	const slist<Object*> & getObjectList() const throw() { return m_Objects; }	slist<Object*> & getObjectList() throw() { return m_Objects; }	string toString() const throw();private:	WORD           m_wFlags;  // 鸥老 加己 敲贰弊	WORD           m_wOption; // 可记 敲贰弊, 鸥老 加己 敲贰弊俊 蝶扼辑 促福霸 荤侩等促.	slist<Object*> m_Objects; // 坷宏璃飘 器牢磐狼 府胶飘	Sector*        m_pSector; // 捞 鸥老捞 加茄 冀磐俊 措茄 器牢磐};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -