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

📄 battle.h

📁 墨香最新私服
💻 H
字号:
// Battle.h: interface for the CBattle class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_BATTLE_H__5D88F50D_0E8C_46C3_86EA_B0F0D5CE11E0__INCLUDED_)
#define AFX_BATTLE_H__5D88F50D_0E8C_46C3_86EA_B0F0D5CE11E0__INCLUDED_

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

class CPlayer;
class CMonster;
class CBattleTeam;
class CBattleObject;


#define ToEachTeam(ValuableName)	{	\
	CBattleTeam* ValuableName;			\
	for(int TeamNumber=0;TeamNumber<eBattleTeam_Max;++TeamNumber)	\
	{									\
		ValuableName = m_TeamArray[TeamNumber];	
		
#define EndToEachTeam	}}

enum
{
	eBattleTeam1 = 0,
	eBattleTeam2,
	eBattleTeam_Max,
};

enum
{
	eBATTLE_STATE_READY = 0,
	eBATTLE_STATE_FIGHT,
	eBATTLE_STATE_RESULT,
};

#define BATTLE_FLAG_NONE			0x00000000
#define BATTLE_FLAG_LOGINBATTLE		0x00000001

class CBattle  
{
protected:
	BATTLE_INFO_BASE m_BattleInfo;
	union{
		struct{
			CBattleTeam* m_Team1;
			CBattleTeam* m_Team2;
			CBattleTeam* m_TeamObserver;
		};
		CBattleTeam* m_TeamArray[eBattleTeam_Max];
	};

	DWORD m_BattleFlag;
	int m_WinnerTeam;
	
	BOOL m_bDestroyFlag;

public:
	CBattle();
	virtual ~CBattle();

	inline BYTE  GetBattleKind()	{ return m_BattleInfo.BattleKind; }
	inline DWORD GetBattleID()		{ return m_BattleInfo.BattleID;	}
	inline DWORD GetBattleFlag()	{ return m_BattleFlag; }
	inline BYTE  GetBattleState()	{ return m_BattleInfo.BattleState; }

	virtual void Initialize(BATTLE_INFO_BASE* pCreateInfo, CBattleTeam* pTeam1, CBattleTeam* pTeam2);

	
#ifdef _MAPSERVER_
	void SendBattleInfo(CPlayer* pPlayer);

	BOOL AddObjectToBattle(CObject* pObject);
	BOOL DeleteObjectFromBattle(CObject* pObject);
	BOOL IsAddableBattle(CObject* pObject);
#endif

	void StartBattle();
	void SetDestroyFlag()		{	m_bDestroyFlag = TRUE;	}

	BOOL IsDestroyed()	{	return m_bDestroyFlag;	}
	
	//////////////////////////////////////////////////////////////////////////
	// { start virtual func 馆靛矫 坷滚扼捞爹 秦具窃

	// Battle 沥焊 包访
#ifdef _MAPSERVER_
	virtual void GetBattleInfo(char* pInfo,WORD* size);
	virtual DWORD GetTeamMemberNum(int i);
#endif

	// 利,酒焙 备喊
	virtual BOOL IsEnemy(CObject* pOperator,CObject* pTarget);
	virtual BOOL IsFriend(CObject* pOperator,CObject* pTarget);
	
	// event func
	virtual void OnCreate(BATTLE_INFO_BASE* pCreateInfo, CBattleTeam* pTeam1, CBattleTeam* pTeam2);
	virtual void OnFightStart();
	virtual void OnDestroy();
	virtual void OnTeamMemberAdd(int Team,DWORD MemberID,char* Name);
	virtual BOOL OnTeamMemberDelete(int Team,DWORD MemberID,char* Name);
	virtual BOOL OnTeamMemberDie(int Team,DWORD VictimMemberID,DWORD KillerID);
	virtual void OnTeamMemberRevive(int Team,CObject* pReviver);
	virtual void OnTeamObjectCreate(int Team,CBattleObject* pBattleObject);
	virtual void OnTeamObjectDestroy(int Team,CBattleObject* pBattleObject);
	virtual void OnMonsterDistribute(CMonster* pMonster,CObject* pKiller);

	virtual void OnTick();
	
	// 铰菩 魄沥
	virtual BOOL Judge();		// Judge俊辑 Victory唱 Draw 窃荐甫 龋免秦林绢具 茄促.
	virtual void Victory(int WinnerTeamNum,int LoserTeamNum);
	virtual void Draw();

	
#ifdef _MHCLIENT_
	// Render		(努扼捞攫飘父 荤侩窃)
	virtual void Render();	
#endif

	// } end virtual func
	//////////////////////////////////////////////////////////////////////////
	
	
};

#endif // !defined(AFX_BATTLE_H__5D88F50D_0E8C_46C3_86EA_B0F0D5CE11E0__INCLUDED_)

⌨️ 快捷键说明

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