📄 monsterfunctionobject.h
字号:
//////////////////////////////////////////////////////////////////////////////// Filename : MonsterFunctionObject.h// Written By : excel96// Description ://////////////////////////////////////////////////////////////////////////////#ifndef __MONSTER_FUNCTION_OBJECT_H__#define __MONSTER_FUNCTION_OBJECT_H__#include "Zone.h"#include "Slayer.h"#include "Vampire.h"#include "Ousters.h"#include "Monster.h"////////////////////////////////////////////////////////////////////////////////// class StrongerSlayer, WeakerSlayer, StrongerVampire, WeakerVampire;//// 捞 努贰胶甸篮, 阁胶磐俊霸 enemy 甫 眠啊窍绰 Monster::addEnemy() 皋筋靛// 俊辑 粮狼 农府贸 概聪历俊辑 货 enemy 狼 利例茄 火涝 困摹甫 茫酒尘 锭// 荤侩窍绰 function object 肺辑 荤侩等促.//// ex> 泅犁 阁胶磐狼 AttackOrder啊 ATTACK_WEAKEST 扼绊 啊沥窍磊. 捞 // 阁胶磐狼 m_Enemies 绰 距茄 鉴辑措肺 沥纺登绢 乐阑 巴捞促. 老窜 // 泅犁狼 胶棋俊绰 轨颇捞绢 阁胶磐父 粮犁窍扁 锭巩俊, 捞 阁胶磐甸篮// 轨颇捞绢客 浇饭捞绢俊霸 傍拜阑 鞍捞 罐霸 登搁, 漂沥 惑炔俊辑绰// 浇饭捞绢甫 刚历 傍拜窍霸 等促. 蝶扼辑, 捞 m_Enemies 绰 菊率俊// 浇饭捞绢甸狼 OID啊 历厘登绢 乐栏哥, 缔率俊 轨颇捞绢甸狼 OID啊// 历厘登绢 乐促. //// 捞力 SkillDomainLevelSum == 5000 牢 浇饭捞绢啊 捞 阁胶磐甫 傍拜秦辑// 利栏肺 瘤沥瞪妨绊 窍绰 鉴埃捞 登菌促绊 摹磊. 捞 浇饭捞绢甫 利例茄// 困摹俊 火涝窍扁 困秦辑绰, 啊厘 距茄 浇饭捞绢狼 困摹甫 舅酒郴具 茄促.// (浇饭捞绢啊 绝促搁 弥檬狼 轨颇捞绢狼 困摹甫 舅酒郴具 茄促.)//// 捞凡 版快, STL狼 find_if 舅绊府硫阑 荤侩窍搁 内靛啊 埃窜秦 瘤绰单,// 咯扁狼 颇扼固磐肺 WeakerSlayer(5000) 阑 瘤沥秦林搁 舅酒辑 茫霸 等促.//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class StrongerSlayer;// enemy list 绰 泅犁 距茄 鉴辑肺 沥纺登绢 乐促.// 蝶扼辑, operator()绰 浇饭捞绢啊 酒聪芭唱 磊脚焊促 碍茄 浇饭捞绢老 版快// true阑 府畔秦具 茄促. 弊贰辑, 弊 菊率 畴靛俊 眠啊窍搁 距茄 鉴辑甫 蜡瘤窍霸 等促.//////////////////////////////////////////////////////////////////////////////class StrongerSlayer {public: StrongerSlayer (Zone* pZone , SkillLevel_t skillLevelSum) throw () { m_pZone = pZone; m_SkillDomainLevelSum = skillLevelSum; } bool operator () (ObjectID_t objectID) { Assert(m_pZone != NULL); // by sigi Creature* pCreature = NULL; try { pCreature = m_pZone->getCreature(objectID); } catch (NoSuchElementException& nsee) { //cout << nsee.toString() << endl; pCreature = NULL; } if (pCreature == NULL) return false; // by sigi if (! pCreature->isSlayer()) return true; Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); return pSlayer->getSkillDomainLevelSum() > m_SkillDomainLevelSum; }private: Zone* m_pZone; SkillLevel_t m_SkillDomainLevelSum;};//////////////////////////////////////////////////////////////////////////////// class WeakerSlayer;// enemy list 绰 泅犁 碍茄 鉴辑肺 沥纺登绢 乐促.// 蝶扼辑, 浇饭捞绢啊 酒聪芭唱 磊脚焊促 距茄 浇饭捞绢老 版快// true阑 府畔秦具 茄促. 弊贰辑, 弊 菊率 畴靛俊 眠啊窍搁// 碍茄 鉴辑甫 蜡瘤窍霸 等促.//////////////////////////////////////////////////////////////////////////////class WeakerSlayer {public : // constructor WeakerSlayer (Zone* pZone , SkillLevel_t skillLevelSum) throw () { m_pZone = pZone; m_SkillDomainLevelSum = skillLevelSum; } bool operator () (ObjectID_t objectID) { Assert(m_pZone != NULL); // by sigi Creature* pCreature = NULL; try { pCreature = m_pZone->getCreature(objectID); } catch (NoSuchElementException& nsee) { //cout << nsee.toString() << endl; pCreature = NULL; } if (pCreature == NULL) return false; // by sigi if (! pCreature->isSlayer()) return true; Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); return pSlayer->getSkillDomainLevelSum() < m_SkillDomainLevelSum; }private: Zone* m_pZone; SkillLevel_t m_SkillDomainLevelSum;};//////////////////////////////////////////////////////////////////////////////// class StrongerVampire;// enemy list 绰 泅犁 距茄 鉴辑肺 沥纺登绢 乐促.// 蝶扼辑, 磊脚焊促 碍茄 轨颇捞绢老 版快俊父 true阑 府畔秦具 茄促. // 弊贰辑, 弊 菊率 畴靛俊 眠啊窍搁 距茄 鉴辑甫 蜡瘤窍霸 等促.//////////////////////////////////////////////////////////////////////////////class StrongerVampire {public: StrongerVampire (Zone* pZone , Level_t level) throw () { m_pZone = pZone; m_Level = level; } bool operator () (ObjectID_t objectID) { Assert(m_pZone != NULL); // by sigi Creature* pCreature = NULL; try { pCreature = m_pZone->getCreature(objectID); } catch (NoSuchElementException& nsee) { //cout << nsee.toString() << endl; pCreature = NULL; } if (pCreature == NULL) return false; // by sigi if (! pCreature->isVampire()) return false; Vampire* pVampire = dynamic_cast<Vampire*>(pCreature); return pVampire->getLevel() > m_Level; }private: Zone* m_pZone; Level_t m_Level;};//////////////////////////////////////////////////////////////////////////////// class WeakerVampire;// enemy list 绰 泅犁 碍茄 鉴辑肺 沥纺登绢 乐促.// 蝶扼辑, 磊脚焊促 距茄 轨颇捞绢老 版快俊父 true阑 府畔秦具 茄促. // 弊贰辑, 弊 菊率 畴靛俊 眠啊窍搁 距茄 鉴辑甫 蜡瘤窍霸 等促.//////////////////////////////////////////////////////////////////////////////class WeakerVampire {public: WeakerVampire (Zone* pZone , Level_t level) throw () { m_pZone = pZone; m_Level = level; } bool operator () (ObjectID_t objectID) { Assert(m_pZone != NULL); // by sigi Creature* pCreature = NULL; try { pCreature = m_pZone->getCreature(objectID); } catch (NoSuchElementException& nsee) { //cout << nsee.toString() << endl; pCreature = NULL; } if (pCreature == NULL) return false; // by sigi if (! pCreature->isVampire()) return false; Vampire* pVampire = dynamic_cast<Vampire*>(pCreature); return pVampire->getLevel() < m_Level; }private: Zone* m_pZone; Level_t m_Level;};class StrongerOusters {public: StrongerOusters (Zone* pZone , Level_t level) throw () { m_pZone = pZone; m_Level = level; } bool operator () (ObjectID_t objectID) { Assert(m_pZone != NULL); // by sigi Creature* pCreature = NULL; try { pCreature = m_pZone->getCreature(objectID); } catch (NoSuchElementException& nsee) { //cout << nsee.toString() << endl; pCreature = NULL; } if (pCreature == NULL) return false; // by sigi if (! pCreature->isOusters()) return false; Ousters* pOusters = dynamic_cast<Ousters*>(pCreature); return pOusters->getLevel() > m_Level; }private: Zone* m_pZone; Level_t m_Level;};//////////////////////////////////////////////////////////////////////////////// class WeakerOusters;// enemy list 绰 泅犁 碍茄 鉴辑肺 沥纺登绢 乐促.// 蝶扼辑, 磊脚焊促 距茄 轨颇捞绢老 版快俊父 true阑 府畔秦具 茄促. // 弊贰辑, 弊 菊率 畴靛俊 眠啊窍搁 距茄 鉴辑甫 蜡瘤窍霸 等促.//////////////////////////////////////////////////////////////////////////////class WeakerOusters {public: WeakerOusters (Zone* pZone , Level_t level) throw () { m_pZone = pZone; m_Level = level; } bool operator () (ObjectID_t objectID) { Assert(m_pZone != NULL); // by sigi Creature* pCreature = NULL; try { pCreature = m_pZone->getCreature(objectID); } catch (NoSuchElementException& nsee) { //cout << nsee.toString() << endl; pCreature = NULL; } if (pCreature == NULL) return false; // by sigi if (! pCreature->isOusters()) return false; Ousters* pOusters = dynamic_cast<Ousters*>(pCreature); return pOusters->getLevel() < m_Level; }private: Zone* m_pZone; Level_t m_Level;};//////////////////////////////////////////////////////////////////////////////// class StrongerMonster;// enemy list 绰 泅犁 距茄 鉴辑肺 沥纺登绢 乐促.// 蝶扼辑, 磊脚焊促 碍茄 轨颇捞绢老 版快俊父 true阑 府畔秦具 茄促. // 弊贰辑, 弊 菊率 畴靛俊 眠啊窍搁 距茄 鉴辑甫 蜡瘤窍霸 等促.//////////////////////////////////////////////////////////////////////////////class StrongerMonster {public: StrongerMonster (Zone* pZone , Level_t level) throw () { m_pZone = pZone; m_Level = level; } bool operator () (ObjectID_t objectID) { Assert(m_pZone != NULL); // by sigi Creature* pCreature = NULL; try { pCreature = m_pZone->getCreature(objectID); } catch (NoSuchElementException& nsee) { //cout << nsee.toString() << endl; pCreature = NULL; } if (pCreature == NULL) return false; // by sigi if (! pCreature->isMonster()) return false; Monster* pMonster = dynamic_cast<Monster*>(pCreature); return pMonster->getLevel() > m_Level; }private: Zone* m_pZone; Level_t m_Level;};//////////////////////////////////////////////////////////////////////////////// class WeakerMonster;// enemy list 绰 泅犁 碍茄 鉴辑肺 沥纺登绢 乐促.// 蝶扼辑, 磊脚焊促 距茄 轨颇捞绢老 版快俊父 true阑 府畔秦具 茄促. // 弊贰辑, 弊 菊率 畴靛俊 眠啊窍搁 距茄 鉴辑甫 蜡瘤窍霸 等促.//////////////////////////////////////////////////////////////////////////////class WeakerMonster {public: WeakerMonster (Zone* pZone , Level_t level) throw () { m_pZone = pZone; m_Level = level; } bool operator () (ObjectID_t objectID) { Assert(m_pZone != NULL); // by sigi Creature* pCreature = NULL; try { pCreature = m_pZone->getCreature(objectID); } catch (NoSuchElementException& nsee) { //cout << nsee.toString() << endl; pCreature = NULL; } if (pCreature == NULL) return false; // by sigi if (! pCreature->isMonster()) return false; Monster* pMonster = dynamic_cast<Monster*>(pCreature); return pMonster->getLevel() < m_Level; }private: Zone* m_pZone; Level_t m_Level;};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -