Ejemplo n.º 1
0
CastleScene::CastleScene(boost::shared_ptr<const Graph> default_frame_graph) :
	CampScene(default_frame_graph), current_step(GetCurrentStep()), title(GetCastleName()), script_window(new windows::ScriptWindow())
{
	BOOST_ASSERT(title);
	BOOST_ASSERT(script_window);
	Initialize();
}
Ejemplo n.º 2
0
//------------------------------------------------------------------------------
// CUISiegeWarfareDoc::TimeConfirm
// Explain:  공성 시간 확정 알림(공지)
// Date : 2005-07-06,Author: Lee Ki-hwan
//------------------------------------------------------------------------------
void CUISiegeWarfareDoc::TimeConfirm( int nZoneIndex, int nMonth, int nDay, int nHour, int nMin )
{
	m_nZoneIndex = nZoneIndex;
	
	CTString strMessage;
	strMessage.PrintF( _S( 2017, "[%s]지역 [%s]공성이 %d월 %d일 %d시로 예정되었습니다." ),	
		CZoneInfo::getSingleton()->GetZoneName( nZoneIndex ), GetCastleName( nZoneIndex ), nMonth, nDay, nHour );	
	// [2012/06/04 : Sora] ITS 8986 공성시작전 공성시작 지점으로 이동 시 캐릭터 이동불가 상태 발생 수정
	// 공성 메시지 출력하면서 해당 UI를 활성화 시켜주어햐 한다. 공성 메시지 출력 방식 변경
	CUIManager::getSingleton()->GetSiegeWarfare()->SetNotice( strMessage );
}
Ejemplo n.º 3
0
//------------------------------------------------------------------------------
// CUISiegeWarfareDoc::EndWar
// Explain:  메세지 표시후 공성 종료
// Date : 2005-07-07,Author: Lee Ki-hwan
//------------------------------------------------------------------------------
void CUISiegeWarfareDoc::EndWar( int nZoneIndex, int nWinDefense, int nOwnerGuildIndex, CTString strOwnerGuildName, int nOwnerIndex, CTString strOwnerName, int nNextMonth, int nNextDay, int nNextWeek, int nNextHour )
{
	CUIManager* pUIManager = CUIManager::getSingleton();

	INDEX	i;
	if( nZoneIndex == 7 )
	{
		SetUIState( SWS_END );	
		// 공성이 끝나면 모든 문을 열어 둔다.
		// FIXME : 문 열어주기.	
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 0, TRUE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 1, TRUE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 2, TRUE );

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

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

		// 이미지 출력 추가 
		_UISignBoard->ShowSingBoard ( 12, 7 );
			
		m_tmLeftTime = _pTimer->GetHighPrecisionTimer().GetMilliseconds();

		_pNetwork->MyCharacterInfo.sbJoinFlagMerac = WCJF_NONE;
		
		// Start My Guild, Enemy Guild Effect Start
		ACTORMGR()->SetJoinFlagMerac(WCJF_NONE);
	}
	else if( nZoneIndex == 4)
	{		
		// WSS_DRATAN_SEIGEWARFARE 2007/10/1 -------------------------------->>
		// 공성 종료 관련 수정...
		SetUIState( SWS_END ); // WSS_DRATAN_SEIGEWARFARE 2007/10/11 
		
		if( _pNetwork->MyCharacterInfo.sbJoinFlagDratan == WCJF_NONE )
			return;	
		// WSS_DRATAN_SIEGEWARFARE 2007/10/16
		//_pNetwork->MyCharacterInfo.sbJoinFlagDratan = WCJF_NONE;
		
		// Start My Guild, Enemy Guild Effect Start
		ACTORMGR()->SetJoinFlagMerac(WCJF_NONE);

		// -------------------------------------------------------------------<<

		// WSS_DRATAN_SIEGEWARFARE 0070725
		// TODO :: 드라탄 공성 종료 루틴
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 3, TRUE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 4, TRUE );
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 5, TRUE );	
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 6, TRUE );	
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->OpenGate( 7, TRUE );	

		pUIManager->GetSiegeWarfareNew()->SetWarState(FALSE);

		// WSS_DRATAN_SEIGEWARFARE 2007/08/14 -------------------------------->>
		// 390 ~ 399 공성 부활진지 초기화
		CTString tStr;
		for( i = 0; i < 10; i++)
		{	
			INDEX tNpcIdx = 390+i;
			_pNetwork->MyCharacterInfo.mQuarter[tNpcIdx] = -1;
			_pNetwork->MyCharacterInfo.mQuarterName[tNpcIdx] = CTString("");

			// Hard Cording ^^;; 어쩔수 없이....
			// 몹 이름 변경
			CMobData* MD = CMobData::getData(tNpcIdx);
			if(MD->GetMobIndex()>0)
			{
				tStr.PrintF(_S( 3685,"공성 부활진지%d"),tNpcIdx-389);
				MD->SetName(tStr);
			}		
		}	
		// -------------------------------------------------------------------<<

		if( pUIManager->GetSiegeWarfareNew()->IsEnabled()&&
			pUIManager->GetSiegeWarfareNew()->IsVisible() )
		{
			pUIManager->RearrangeOrder(UI_SIEGE_WARFARE_NEW,FALSE);
		}
		
		// WSS_DRATAN_SIEGEWARFARE 2007/10/17
		// 교감중 공성 종료 처리
		if( _pNetwork->MyCharacterInfo.bConsensus )
		{
			pUIManager->GetSiegeWarfareNew()->StopConsensus(_pNetwork->MyCharacterInfo.index);
		}			
		StopConsensusEffect(0,TRUE);
		
		// WSS_DRATAN_SIEGEWARFARE 2007/10/18
		// 상태 초기화
		((CPlayerEntity*)CEntity::GetPlayerEntity(0))->PlayerInit(false);

	}

	m_nZoneIndex = nZoneIndex;
	
	CTString strMessage1;
	CTString strMessage2;
	
	// 공성 끝났면 지도는 초기화 
	pUIManager->GetMap()->SetCurrentWorldMap( _pNetwork->MyCharacterInfo.zoneNo, 0 );
	pUIManager->GetMap()->ReSetData();

	if( nWinDefense )
	{
		if( strOwnerGuildName.Length() <= 0 )
		{
			strMessage1.PrintF( _S( 2019, "[%s]지역 [%s]공성에 실패 하였습니다." ), 
			CZoneInfo::getSingleton()->GetZoneName( nZoneIndex ), GetCastleName( nZoneIndex ) );	
		}
		else
		{
			strMessage1.PrintF( _S(2020 , "[%s]지역 [%s]공성이 종료되었습니다. [%s]길드가 수성에 성공하였습니다." ),
			CZoneInfo::getSingleton()->GetZoneName( nZoneIndex ), GetCastleName( nZoneIndex ), strOwnerGuildName );		
		}
		
	}
	else
	{
		strMessage1.PrintF( _S(2021 , "[%s]지역 [%s]공성이 종료되었습니다. 새로운 성주로 [%s]길드의 [%s]길드장이 선출 되었습니다." ), 
			CZoneInfo::getSingleton()->GetZoneName( nZoneIndex ), GetCastleName( nZoneIndex ), strOwnerGuildName, strOwnerName );	
	}
	
	strMessage2.PrintF(_S( 2022, "다음 공성전 신청은 %d월 %d일 %s요일 오후 %d시부터 신청이 가능합니다." ), 
		nNextMonth, nNextDay, pUIManager->GetWeekToString( nNextWeek ), nNextHour );	
	// [2012/06/04 : Sora] ITS 8986 공성시작전 공성시작 지점으로 이동 시 캐릭터 이동불가 상태 발생 수정
	// 공성 메시지 출력하면서 해당 UI를 활성화 시켜주어햐 한다. 공성 메시지 출력 방식 변경
	pUIManager->GetSiegeWarfare()->SetNotice( strMessage1, strMessage2 );
	
	// Date : 2005-11-18(오후 4:27:13), By Lee Ki-hwan
	// 메세지 박스 표시 추가 
	pUIManager->CloseMessageBox( MSGCMD_NULL );
	
	CUIMsgBox_Info	MsgBoxInfo;
	MsgBoxInfo.SetMsgBoxInfo( _S(2341, "공성 종료" ), UMBS_OK, UI_NONE, MSGCMD_NULL );
	MsgBoxInfo.AddString( strMessage1 );
	pUIManager->CreateMessageBox( MsgBoxInfo );
		
}
Ejemplo n.º 4
0
//------------------------------------------------------------------------------
// CUISiegeWarfareDoc::RemainStartTime
// Explain: 공성 시작 까지 남은 시간을 시작 10분전부터 1분간격으로 공지
// Date : 2005-07-06,Author: Lee Ki-hwan
//------------------------------------------------------------------------------
void CUISiegeWarfareDoc::RemainStartTime( int nZoneIndex, int nMin )
{
	m_nZoneIndex = nZoneIndex;
	
	CTString strMessage;
	
	strMessage.PrintF( _S( 2018, "[%s]지역 [%s]공성이 %d분 남았습니다." ), CZoneInfo::getSingleton()->GetZoneName( nZoneIndex ), GetCastleName( nZoneIndex ), nMin );	
	// [2012/06/04 : Sora] ITS 8986 공성시작전 공성시작 지점으로 이동 시 캐릭터 이동불가 상태 발생 수정
	// 공성 메시지 출력하면서 해당 UI를 활성화 시켜주어햐 한다. 공성 메시지 출력 방식 변경
	CUIManager::getSingleton()->GetSiegeWarfare()->SetNotice( strMessage );	
}
Ejemplo n.º 5
0
//------------------------------------------------------------------------------
// 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);
	}
}