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

📄 hunting.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 CPP
字号:
#include "StdAfx.h"
#include ".\hunting.h"
#include "Player.h"
#include "PartyManager.h"
#include "Map.h"

__IMPL_ZONE_POOL(Hunting);
Hunting::Hunting(void)
{
}

Hunting::~Hunting(void)
{
}

BOOL Hunting::Init( KEYTYPE Key, CODETYPE MapCode, KEYTYPE LeaderPlayerKey, HUNTING_DESC & IN desc )
{
	if( !Room::Init( Key, MapCode, LeaderPlayerKey ) ) return FALSE;

	setType( eZONE_HUNTING );

	memcpy( &m_RoomDesc, &desc, sizeof(HUNTING_DESC) );


	// TEMP : 烙矫 
	// 内靛 荐沥捞 鞘夸茄 两摹救篮 内靛
	// TAIYO
	ASSERT( desc.m_byMonsterType < eBATTLE_MONSTER_DIFFICULT_MAX );
	util::SolarHashTable<Field *> * pHash = GetMap()->GetFieldHashTable();
	Field * pField = NULL;
	pHash->SetFirst();
	while( (pField = pHash->GetNext()) != NULL )
	{
		pField->InitRegenManager( desc.m_byMonsterType+1 );
	}

	return TRUE;
}


BOOL Hunting::readyPlayer( Player * pPlayer, CODETYPE FieldCode )
{
	// 惑怕 眉农
	if( !readyCheck( isLeaderPlayer( pPlayer->GetObjectKey() ) ) ) return FALSE;

	DEBUG_CODE( Zone * pEnterZone		= NULL;
	CODETYPE EnterFieldCode = 0;
	eZONE_STATE eRoomState = pPlayer->GetZone( &pEnterZone, EnterFieldCode );
	if( eRoomState & ePRS_AT_ZONE ) 
		return FALSE;);

	pPlayer->SetZone( ePRS_BEFORE_ENTER_HUNTING, this, FieldCode );
	return TRUE;
}

BOOL Hunting::joinPlayer( Player * pPlayer, CODETYPE FieldCode )
{
	if( !joinCheck( isLeaderPlayer( pPlayer->GetObjectKey() ) ) ) return FALSE;

	Zone * pEnterZone		= NULL;
	CODETYPE EnterFieldCode = 0;
	eZONE_STATE eRoomState = pPlayer->GetZone( &pEnterZone, EnterFieldCode );
	if( !(eRoomState & ePRS_BEFORE_ENTER_HUNTING) ) 
	{
		SASSERT( NULL, "蜡历狼 规惑怕啊 捞惑钦聪促.JoinPlayer() : 甸绢棵妨绰 规捞 清泼捞酒聪促." );
		return FALSE;
	}

	pPlayer->SetZone( ePRS_AT_HUNTING, this, FieldCode );

	addPlayer( pPlayer );


	// 惑怕 函版
	if( isLeaderPlayer( pPlayer->GetObjectKey() ) )
	{
		setState( eROOM_ACTIVE );
	}

	return TRUE;
}


BOOL Hunting::leavePlayer( Player * pPlayer )
{
	if( !leaveCheck( isLeaderPlayer( pPlayer->GetObjectKey() ) ) ) return FALSE;

	removePlayer( pPlayer->GetObjectKey() );

	// 规厘捞 唱啊搁 困烙 贸府
	if( isLeaderPlayer( pPlayer->GetObjectKey() ) )
	{
		if( getNumberOfPlayers() == 0 )
		{
			// 规颇鲍 惑怕
			setState( eROOM_DEACTIVE );

		}
		else
		{
			delegateLeaderPlayer();
		}
	}

	pPlayer->SetZone( ePRS_NOT_AT_ZONE, NULL, 0 );

	return TRUE;
}

BOOL Hunting::Update( DWORD dwDeltaTick )
{
	if( !Room::Update( dwDeltaTick ) ) 
		return FALSE;

	if( m_PlayerTimer.IsExpiredManual() )
	{
		if( getState() == eROOM_READY )
			return FALSE;
	}

	return TRUE;
}

⌨️ 快捷键说明

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