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

📄 corearena.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
字号:
// CoreArena.cpp: implementation of the CCoreArena class.
//
//////////////////////////////////////////////////////////////////////

#include "..\stdafx.h"
#include "CoreArena.h"

///////////////////////////////////////////////////////////////////////////////
// Construction/Destruction
///////////////////////////////////////////////////////////////////////////////

CCoreArena::CCoreArena(int nIndex, int nType)
{
	m_nIndex = nIndex;
	m_nArenaType = nType;
	m_bGameOver = false;
}

CCoreArena::~CCoreArena()
{

}

///////////////////////////////////////////////////////////////////////////////
// Public Method
///////////////////////////////////////////////////////////////////////////////

void CCoreArena::StartGame(DWORD dwTime)
{
	CBaseArena::StartGame(dwTime);

	for (ITOR_TEAM i = m_ltTeam.begin(); i != m_ltTeam.end(); ++i)
	{
		const int nTeam = (*i)->GetTeamNumber();
		const int nCount = (*i)->GetAliveCount();
		SendRemainCount(nTeam, nCount);
	}

	m_bGameOver = false;
}

void CCoreArena::EndGame(CArenaInfo* pArena)
{
	CBaseArena::EndGame(pArena);
}
	
bool CCoreArena::PlayGame(DWORD dwTime)
{
	DWORD dwRemainTime = m_pState->GetRemainTime(dwTime);

	for (ITOR_TEAM i = m_ltTeam.begin(); i != m_ltTeam.end(); ++i)
	{
		const int nTeam = (*i)->GetTeamNumber();
		const int nCount = (*i)->GetAliveCount();
		SendRemainCount(nTeam, nCount);

		if (nCount <= 0 && !m_bGameOver)
		{
			m_pState->SetContinueTime(dwTime + 5);
			m_bGameOver = true;
			break;
		}
	}
	
	if (dwRemainTime <= 0)
	{
		/////////////////////////////////////////////////////////////////////////////
		//	铰菩 搬沥篮 啊厘 腹捞 混酒 乐绰 评捞 快铰窍绊 趣矫 
		// 混酒 乐绰 荐啊 鞍阑 版快 啊厘 撤篮 饭骇 评捞 快铰茄促.
		// 啊厘 腹捞 混酒 乐绰 评狼 混酒 巢篮 荐客 饭骇阑 历厘秦滴绊 唱吝俊 贸府茄促.
		/////////////////////////////////////////////////////////////////////////////
		int top = -1;		// 啊厘 腹捞 混酒 乐绰 评狼 荐 
		int bottom_level = 1000000;		// 啊厘 撤篮 饭骇
		bool is_over = false;	// 啊厘 腹捞 混酒 乐绰 评捞 2评 捞惑牢啊?

		for (ITOR_TEAM j = m_ltTeam.begin(); j != m_ltTeam.end(); ++j)
		{
			const int nCount = (*j)->GetAliveCount();
			const int nTotal = (*j)->GetTeamLevel();

			if (top < nCount)
			{
				top = nCount;
				is_over = true;
				bottom_level = nTotal;
			}
			else if (top == nCount)
			{
				if (bottom_level > nTotal) 
				{
					bottom_level = nTotal;
				}
			}			
		}

		if (is_over) // 巢篮 荐啊 鞍篮 版快 饭骇鳖瘤 眉农茄促.
		{
			for (ITOR_TEAM k = m_ltTeam.begin(); k != m_ltTeam.end(); ++k)
			{
				CArenaTeam* pTeam = *k;

				const int nCount = pTeam->GetAliveCount();
				const int nTotal = pTeam->GetTeamLevel();
				
				if (nCount == top && nTotal == bottom_level)
				{
					pTeam->SetGameResult(FST_WIN);
					pTeam->GiveBonus(); // 白喉 酒捞袍阑 霖促.

					const DWORD dwFlowTime = m_pState->GetFlowTime(dwTime);
					
					if (dwFlowTime < 300)		// 5盒 捞郴扼搁
					{
						MyLog(LOG_NORMAL, "Team Battle End!!! time = %d", dwFlowTime);
					}
				}
				else
				{
					pTeam->SetGameResult(FST_DEFEAT);
				}

				DoResult(pTeam);
			}
		}

		return false;
	}

	return CBaseArena::PlayGame(dwTime);
}

///////////////////////////////////////////////////////////////////////////////
// Protected Method
///////////////////////////////////////////////////////////////////////////////

void CCoreArena::DoResult(CArenaTeam* pTeam)
{
	CBaseArena::DoResult(pTeam);
}

void CCoreArena::DoVictory(CArenaTeam* pTeam)
{
	CBaseArena::DoVictory(pTeam);
}

void CCoreArena::DoDefeat(CArenaTeam* pTeam)
{
	CBaseArena::DoDefeat(pTeam);
}

⌨️ 快捷键说明

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