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

📄 battlemanager.h

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 H
字号:
// BattleManager.h: interface for the CBattleManager class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_BATTLEMANAGER_H__D73AA91E_7319_4B3E_B315_CAFEB42E9086__INCLUDED_)
#define AFX_BATTLEMANAGER_H__D73AA91E_7319_4B3E_B315_CAFEB42E9086__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

///////////////////////////////////////////////////////////////////////////////
// 傈捧俊 包茄 努贰胶
class CBattle;
class CBattleManager : public TSingleton<CBattleManager>
{
	typedef vector<CBattle*> VECTOR;
	
public:
	CBattleManager();
	virtual ~CBattleManager();
	
public:
	void Elapse(DWORD dwSecond = 1);
	void ClearCombat(BYTE nCombat, WORD idMaster);
	void ChangeCombat(BYTE nCombat, WORD idMaster);
	void ResetCombat(BYTE nCombat, WORD idMaster);
	
	void SendNpcAttack(WORD idNpc);
	void SendNpcThrow(WORD idNpc);
	void SendNpcMagic(WORD idNpc, BYTE nMagic);
	void SendNpcMagic(WORD idNpc, BYTE nMagic, int nX, int nY, bool bTimeDisable);
	void SendNpcRecall(WORD idNpc, BYTE nMagic, BYTE nMonster, int nX, int nY);
	void SendNpcTeleport(WORD idNpc, int nX, int nY); // CSD_030314
	
	void RecvNpcAttack(t_npc_attack* pPacket);
	void RecvStrikeAttack(WORD idCaster, t_player_attack* pPacket);
	
	void RecvNpcThrow(t_npc_throw* pPacket);
	void RecvThrowAttack(WORD idCaster, t_client_throw_attack* pPacket);
	void RecvThrowResult(WORD idCaster, t_client_throw_result* pPacket);

	void RecvEffectResult(WORD idCaster, t_client_effect_result* pPacket); // CSD-031007
	
	void RecvMagicLearn(WORD idMaster, k_client_learn_magic* pPacket);
	void RecvNpcMagic(t_client_npc_magic* pPacket);
	void RecvNpcRecall(t_client_npc_magic* pPacket); // CSD-021119
	void RecvNpcTeleport(t_client_npc_magic* pPacket); // CSD-030306
	
	void RecvMagicSelect(WORD idCaster, t_client_magic_select* pPacket); // CSD-TW-030606
	void RecvMagicCasting(WORD idCaster, t_client_magic_casting* pPacket); // CSD-TW-030606
	void RecvMagicExecute(WORD idCaster, t_client_magic_execute* pPacket); // CSD-TW-030606
	void RecvMagicResult(WORD idCaster, t_client_magic_result* pPacket);
	void RecvMagicResult(t_magic_result_d* pPacket);
	
	void RecvCombatReset(WORD idMaster);
	void RecvCombatObtain(WORD idMaster, t_client_combat_obtain* pPacket);
	void RecvCombatRequest(WORD idMaster, t_client_combat_request* pPacket);
	void RecvCombatLearn(WORD idMaster, t_client_combat_learn* pPacket);
	void RecvCombatClear(WORD idMaster, t_client_combat_clear* pPacket); // CSD-TW-030606
	void RecvCombatSelect(WORD idCaster, t_client_combat_select* pPacket);
	void RecvCombatAttack(WORD idCaster, t_client_combat_attack* pPacket);
	void RecvCombatResult(WORD idCaster, t_client_combat_result* pPacket);
	
protected:
	void AutoCurse(WORD idCaster, WORD idTarget);
	
	bool FilterNpcAttack(CHARLIST* pCaster, CHARLIST* pTarget);
	bool FilterAttack(CHARLIST* pCaster, CHARLIST* pTarget);
	bool FilterThrow(CHARLIST* pCaster, CHARLIST* pTarget);
	bool FilterNpcMagic(BYTE nMagic, CHARLIST* pCaster, CHARLIST* pTarget, int nX, int nY);
	bool FilterStart(CHARLIST* pCaster);
	bool FilterMagic(CHARLIST* pCaster, CHARLIST* pTarget, int nX, int nY);
	bool FilterCombat(BYTE nCombat, CHARLIST* pCaster, CHARLIST* pTarget, int nX, int nY);
	bool FilterCombat(BYTE nCombat, CHARLIST* pCaster, CHARLIST* pTarget);
	bool FilterResult(CHARLIST* pCaster, CHARLIST* pTarget);
	bool FilterResult(BYTE nMagic, CHARLIST* pCaster, CHARLIST* pTarget);
	
protected:
	CBattle* GetBattle(int nIndex) const 
	{ 
		return m_vtBuffer[nIndex]; 
	}
	
	bool IsMagic(int nIndex) const
	{
		return (nIndex >= LIFE_UP && nIndex <= RAGE_LIGHT_BALL) ? true:false;
	}
	
	bool IsCombat(int nIndex) const
	{
		return (nIndex >= LIGHTNING_BOOM && nIndex <= WIND_EXTREME) ? true:false;
	}
	
private:  
	bool IsBattle() const;
	bool IsBattle(CHARLIST* pCaster) const;
	bool IsBattle(CHARLIST* pCaster, CHARLIST* pTarget) const;
	bool IsValid(BYTE nMagic, int nX, int nY) const;
	bool IsValid(BYTE nKind, CHARLIST* pCaster) const;
	bool IsValid(BYTE nKind, BYTE nStep, CHARLIST* pCaster) const;
	bool IsAbility(BYTE nMagic, CHARLIST* pCaster) const;
	bool IsEnable(BYTE nMagic, CHARLIST* pCaster) const;
	bool IsHarmfulMagic(BYTE nMagic) const;
	bool IsPlaceMagic(BYTE nMagic, int nX, int nY) const; // CSD-021127
	bool IsApply(BYTE nType, CHARLIST* pCaster, CHARLIST* pTarget) const;
	bool IsMissAttack(CHARLIST* pCaster, CHARLIST* pTarget) const;
	bool IsMissMagic(BYTE nType, CHARLIST* pCaster, CHARLIST* pTarget) const;
	bool IsBugMon(CHARLIST* pCaster, CHARLIST* pTarget) const;
	bool IsBreak(CHARLIST* pCaster, CHARLIST* pTarget) const;
	bool IsColleague(CHARLIST* pCaster, CHARLIST* pTarget) const;
	bool IsEnableClass(BYTE nCombat, CHARLIST* pCaster) const;
	bool IsEnableWeapon(BYTE nCombat, CHARLIST* pCaster) const;
	bool IsActiveCombat(BYTE nCombat) const;
	bool IsPassiveCombat(BYTE nCombat) const;
	bool IsRecoveryCombat(BYTE nCombat) const; // 030415 kyo
	
protected:
	static DWORD s_dwDelay;
	
private:
	enum 
	{
		CRAPPLE = 0,              // 林冈
		SWORDMANSHIP = 1,         // 茄颊八
		ARCHERY = 2,              // 劝
		FENCING = 3,              // 埔教八
		MACE_FIGHTING = 4,        // 茄颊档尝, 皋捞胶
		PIERCE = 5,               // 芒
		WHIRL = 6,                // 豪
		HURL = 7,                 // 厚档
		PARRYING = 8,             // 规菩 
		DOUBLE_SWORDMANSHIP = 9,  // 剧颊八
		DOUBLE_MACEFIGHTING = 10, // 剧颊档尝, 皋捞胶
		ALL_WEAPON = 11           // 葛电 公扁
	};
	
	VECTOR   m_vtBuffer;
	t_packet m_packet;
};
//
///////////////////////////////////////////////////////////////////////////////
#endif // !defined(AFX_BATTLEMANAGER_H__D73AA91E_7319_4B3E_B315_CAFEB42E9086__INCLUDED_)

⌨️ 快捷键说明

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