//------------------------------------------------------------------------------
// CUISiegeWarfareDoc::RemainFiledTime
// Explain: 야전전투가 종료되기 5분전부터 1분 간격으로 공성에 참여한 유저에게 전체공지 
// Date : 2005-07-06,Author: Lee Ki-hwan
//------------------------------------------------------------------------------
void CUISiegeWarfareDoc::RemainFiledTime( int nZoneIndex, int nRemainSec )
{
	m_nZoneIndex	= nZoneIndex;
	SetLeftTime( nRemainSec );
	
	CTString strMessage;
	strMessage.PrintF(_S( 2016,  "[%s]지역 [야전전투]가 %d분 남았습니다." ), CZoneInfo::getSingleton()->GetZoneName( nZoneIndex ), (m_lLeftTime) / 60);	
	// [2012/06/04 : Sora] ITS 8986 공성시작전 공성시작 지점으로 이동 시 캐릭터 이동불가 상태 발생 수정
	// 공성 메시지 출력하면서 해당 UI를 활성화 시켜주어햐 한다. 공성 메시지 출력 방식 변경
	CUIManager::getSingleton()->GetSiegeWarfare()->SetNotice( strMessage );	
}
//------------------------------------------------------------------------------
// CUISiegeWarfareDoc::UpdatePoint
// Explain:  전투 중 갱신되는 점수
// Date : 2005-07-06,Author: Lee Ki-hwan
//------------------------------------------------------------------------------
void CUISiegeWarfareDoc::UpdatePoint( int nRemainSec, SGuild Guild1, SGuild Guild2, SGuild Guild3, int nMyPoint, int nDefensPoint )
{
	m_gdGuild[0]	= Guild1;
	m_gdGuild[1]	= Guild2;
	m_gdGuild[2]	= Guild3;
	
	m_nGuildPoint = nMyPoint;
	m_gdDefGuild.m_nPoint = nDefensPoint;

	SetLeftTime( nRemainSec );
}
示例#3
0
void COpenLock::ScheduleLeftTime(float dt)
{
	if (m_nLeftTime>=0)
	{
		m_pCountNum->setString(CCString::createWithFormat("%d",GetLeftTime())->getCString());
		SetLeftTime(GetLeftTime()-1);
	}
	else
	{
		unschedule(SEL_SCHEDULE(&COpenLock::ScheduleLeftTime));
		gGameUILayer->close(this);
	}
}
//------------------------------------------------------------------------------
// WSS_DRATAN_SIEGEWARFARE 070725
// Explain:  공성 상황 알림(공지) 및 전투상황 셋팅 for Dratan
//------------------------------------------------------------------------------
void CUISiegeWarfareDoc::CastleState( int nZoneIndex, int nState, int nGateState, int nRemainSec)
{
	SetGateState( 0, nGateState ); 
	
	if( _pNetwork->MyCharacterInfo.sbJoinFlagDratan == WCJF_NONE )
		return;
	
	m_nZoneIndex	= nZoneIndex;
		
	if( nState == WCSF_WAR_CASTLE )
	{
		// 공성중 세팅
		CUIManager::getSingleton()->GetSiegeWarfareNew()->SetWarState(TRUE);
	}
	else return;
	
	SetLeftTime( nRemainSec );
	RestartEffect(nZoneIndex);
	RestartGuildMasterEffect();
}
示例#5
0
void COpenLock::ResetLockInfo()
{
	Open_lockCfg* lockCfg = OpenLockData.get(GetLockId());
	if(!lockCfg) return;

	int randRange = abs(lockCfg->random_min)+lockCfg->random_max;
	srand (time(NULL));
	m_openDegreeMin = rand()%randRange + 1;
	if(m_openDegreeMin>lockCfg->random_max)
	{
		m_openDegreeMin = lockCfg->random_max - m_openDegreeMin;
	}
	m_openDegreeMax = m_openDegreeMin + lockCfg->section;
	m_openDegreeMiddle = (m_openDegreeMin+m_openDegreeMax)/2;

	SetMaxTime(lockCfg->max_time);
	SetLeftTime(lockCfg->max_time);
	unschedule(SEL_SCHEDULE(&COpenLock::ScheduleLeftTime));
	schedule(SEL_SCHEDULE(&COpenLock::ScheduleLeftTime),1.0f,GetMaxTime()+1,0.0f);
}
//------------------------------------------------------------------------------
// CUISiegeWarfareDoc::CastleState
// Explain:  공성 상황 알림(공지) 및 전투상황 셋팅
// Date : 2005-07-06,Author: Lee Ki-hwan
//------------------------------------------------------------------------------
void CUISiegeWarfareDoc::CastleState( int nZoneIndex, int nState, int nGateState, int nRemainSec, SGuild Guild1, SGuild Guild2, SGuild Guild3, int nMyPoint, int nDefensPoint )
{
	// Date : 2005-07-22(오전 10:00:32), By Lee Ki-hwan 
	// 비 참가자인 경우에는 
	SetGateState( 0, nGateState ); 
	
	if( _pNetwork->MyCharacterInfo.sbJoinFlagMerac == WCJF_NONE )
		return;
	
	m_nZoneIndex	= nZoneIndex;
		
	m_gdGuild[0]	= Guild1;
	m_gdGuild[1]	= Guild2;
	m_gdGuild[2]	= Guild3;
	
	m_nGuildPoint	= nMyPoint;
	m_gdDefGuild.m_nPoint = nDefensPoint;

	CUIManager* pUIManager = CUIManager::getSingleton();

	if( nState == WCSF_WAR_FIELD )
	{
		pUIManager->GetSiegeWarfare()->OpenSelectBattle();
	}
	else if( nState == WCSF_WAR_CASTLE )
	{
		pUIManager->GetSiegeWarfare()->OpenBattle();
	}
	else
	{
		return;
	}
	
	SetLeftTime( nRemainSec );
	RestartEffect(nZoneIndex);
	RestartGuildMasterEffect();
}
//------------------------------------------------------------------------------
// CUISiegeWarfareDoc::StartCastle
// Explain: 야전끝 공성 시작 알림(공지) 
// Date : !2005-07-06,Author: Lee Ki-hwan
//------------------------------------------------------------------------------
void CUISiegeWarfareDoc::StartCastle( int nZoneIndex, int nRemainSec, int GuildIndex1, CTString GuildName1, int GuildIndex2, CTString GuildName2, int GuildIndex3, CTString GuildName3 )
{
	CUIManager* pUIManager = CUIManager::getSingleton();

	if(nZoneIndex == 7)
	{	
		// 공성이 시작되면 모든 문을 닫아 둔다.
		// FIXME : 문 닫아주기.	
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 0, FALSE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 1, FALSE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 2, FALSE );	

		if( _pNetwork->MyCharacterInfo.sbJoinFlagMerac == WCJF_NONE )
			return;

		if( g_slZone == 7 )
			((CPlayerEntity*)CEntity::GetPlayerEntity(0))->PlayBGM( MUSIC_CASTLE_BATTLE );

		_pNetwork->SendCastleMapRecent();
		
		m_nZoneIndex = nZoneIndex;
		
		m_gdGuild[0].SetGuildInfo( GuildIndex1, GuildName1 );	
		m_gdGuild[1].SetGuildInfo( GuildIndex2, GuildName2 );
		m_gdGuild[2].SetGuildInfo( GuildIndex3, GuildName3 );
		
		CTString strMessage1, strMessage2;
		for( int i = 0; i< 3; i++ )
		{
			if( m_gdGuild[i].m_nGuildIndex > 0 )
			{
				if( i >= 1 )
				{
					strMessage1 += ", ";
				}
				strMessage1 += m_gdGuild[i].m_strGuildName;
				strMessage1 += CTString(" ");
				strMessage1 += _S(75 , "길드" );	
			}
		}
		
		strMessage1 += _S( 2014, "가 공성측 길드로 선정 되었습니다." );	
		strMessage2.PrintF(_S( 2015,  "성주의 권좌가 얼마 남지 않았습니다. 진격하십시오." ) );		
		// [2012/06/04 : Sora] ITS 8986 공성시작전 공성시작 지점으로 이동 시 캐릭터 이동불가 상태 발생 수정
		// 공성 메시지 출력하면서 해당 UI를 활성화 시켜주어햐 한다. 공성 메시지 출력 방식 변경
		pUIManager->GetSiegeWarfare()->SetNotice( strMessage1, strMessage2 );
		
		pUIManager->GetSiegeWarfare()->OpenBattle();
		
		RestartEffect(nZoneIndex);
		RestartGuildMasterEffect();
		SetLeftTime( nRemainSec );

		//SetDealy();
	}
	else if(nZoneIndex ==4 )
	{
		// WSS_DRATAN_SIEGEWARFARE 0070725
		// TODO :: 드라탄 공성 시작 루틴
		// 공성이 시작되면 모든 문을 닫아 둔다.
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 3, FALSE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 4, FALSE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 5, FALSE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 6, FALSE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 7, FALSE );

		CTString strMessage =_S( 3684,"공성이 시작되었습니다." );		
		// [2012/06/04 : Sora] ITS 8986 공성시작전 공성시작 지점으로 이동 시 캐릭터 이동불가 상태 발생 수정
		// 공성 메시지 출력하면서 해당 UI를 활성화 시켜주어햐 한다. 공성 메시지 출력 방식 변경
		CUIManager::getSingleton()->GetSiegeWarfare()->SetNotice( strMessage );
		pUIManager->GetSiegeWarfareNew()->SetWarState(TRUE);

		m_nZoneIndex = nZoneIndex;
		RestartEffect(nZoneIndex);
	}
}
//------------------------------------------------------------------------------
// CUISiegeWarfareDoc::GuildWarStart
// Explain:  
// Date : 2005-07-06,Author: Lee Ki-hwan
//------------------------------------------------------------------------------
void CUISiegeWarfareDoc::GuildWarStart( int nZoneIndex,  int nRemainSec )	
{
	CUIManager* pUIManager = CUIManager::getSingleton();

	if(nZoneIndex == 7)
	{
		// FIXME : 문 닫아주기.	
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 0, FALSE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 1, FALSE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 2, FALSE );	

		if( _pNetwork->MyCharacterInfo.sbJoinFlagMerac == WCJF_NONE )
			return;	

		if( g_slZone == 7 )
			((CPlayerEntity*)CEntity::GetPlayerEntity(0))->PlayBGM( MUSIC_CASTLE_BATTLE );

		Clear();
		
		_pNetwork->SendCastleMapRecent();

		m_nZoneIndex = nZoneIndex;
			
		CTString strMessage,  strMessage2;
		
		strMessage.PrintF(_S(2012, "[%s]지역 [%s]공성이 시작됩니다." ), CZoneInfo::getSingleton()->GetZoneName( nZoneIndex ), GetCastleName( nZoneIndex ));	
		strMessage2.PrintF(_S(2013,  "[%s]지역 내에 있는 공성 참여 유저들은 공성 시작 지점으로 이동합니다."), CZoneInfo::getSingleton()->GetZoneName( nZoneIndex ));	

		// [2012/06/04 : Sora] ITS 8986 공성시작전 공성시작 지점으로 이동 시 캐릭터 이동불가 상태 발생 수정
		// 공성 메시지 출력하면서 해당 UI를 활성화 시켜주어햐 한다. 공성 메시지 출력 방식 변경
		pUIManager->GetSiegeWarfare()->SetNotice( strMessage, strMessage2 );
		pUIManager->GetSiegeWarfare()->OpenSelectBattle();
		
		RestartEffect(nZoneIndex);
		RestartGuildMasterEffect();
		SetLeftTime( nRemainSec );

		m_tmLeftTime = _pTimer->GetHighPrecisionTimer().GetMilliseconds();


		//SetDealy();	
	}
	else if( nZoneIndex == 4)
	{
		// WSS_DRATAN_SIEGEWARFARE 0070725
		// TODO :: 드라탄 공성 시작 루틴
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 3, FALSE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 4, FALSE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 5, FALSE );	
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 6, FALSE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 7, FALSE );
		CTString strMessage;
		strMessage.PrintF( _S( 2012, "[%s]지역 공성이 시작됩니다." ), CZoneInfo::getSingleton()->GetZoneName( nZoneIndex ));	
		// [2012/06/04 : Sora] ITS 8986 공성시작전 공성시작 지점으로 이동 시 캐릭터 이동불가 상태 발생 수정
		// 공성 메시지 출력하면서 해당 UI를 활성화 시켜주어햐 한다. 공성 메시지 출력 방식 변경
		pUIManager->GetSiegeWarfare()->SetNotice( strMessage );

		m_nZoneIndex = nZoneIndex;
		RestartEffect(nZoneIndex);
	}
}