#include "stdafx.h" #include "SGameManager.h" #include "SStringDB.h" #include "SItemDB.h" #include "SUINotifyWnd.h" #include "SGameMessage.h" //#include "SGameMessageUI.h" //#include "KUIControl.h" ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // bool SUIResurrectWnd::InitData( bool bReload /*= false*/ ) { m_nUseItem = 0; m_hOwner = 0; //910004 요정의 병 //910005 대모요정의 병 //두가지 모두 소유 시, 대모요정의 병이 먼저 사용 return true; } void SUIResurrectWnd::ProcMsgAtStatic( SGameMessage* pMsg ) { switch( pMsg->nType ) { case IMSG_UI_RESURRECTION: { SIMSG_UI_RESURRECTION* pResurrection = dynamicCast(pMsg); SetChildCaption( "button_resurrect_town", GetStringDB().GetString( 6423 ) ); KUIControl* pResurrectTown = dynamicCast(GetChild( "button_resurrect_town" )); KUIControl* pResurrectItem = dynamicCast(GetChild( "button_resurrect_item" )); KUIControl* pResurrectState = dynamicCast(GetChild( "button_resurrect_buff" )); // 대련 부활 추가, kappamind. KUIControl* pResurrectPVPState = dynamicCast(GetChild( "button1" )); KUIControl* pResurrectPVPTown = dynamicCast(GetChild( "butoon2" )); if( pResurrection->nResurrectionType == RESURRECTION_BY_ITEM ) { m_hOwner = 0; m_nUseItem = pResurrection->nUseItem; std::string strMsg = SStringDB::ParseString( GetStringDB().GetString( 6422 ), "#@item_name@#", GetStringDB().GetString(GetItemDB().GetTextID(m_nUseItem)) ); std::string strText = SStringDB::ParseString( GetStringDB().GetString( 6424 ), "#@item_name@#", GetStringDB().GetString(GetItemDB().GetTextID(m_nUseItem)) ); std::string strText2 = S( 6500 ); SetChildCaption( "static_msg" , strMsg.c_str() ); if( pResurrectTown ) pResurrectTown->Enable(); if( pResurrectItem ) { pResurrectItem->SetCaption( strText.c_str() ); pResurrectItem->Enable(); } if( pResurrectState ) { pResurrectState->SetCaption( strText2.c_str() ); pResurrectState->Disable(); } } else if( pResurrection->nResurrectionType == RESURRECTION_BY_ITEM_STATE ) { m_hOwner = pResurrection->hOwner; m_nUseItem = pResurrection->nUseItem; std::string strMsg = SStringDB::ParseString( S( 6479 ), "#@item_name@#", GetStringDB().GetString(GetItemDB().GetTextID(m_nUseItem)), "#@state_name@#", pResurrection->szStateName ); std::string strText = SStringDB::ParseString( GetStringDB().GetString( 6424 ), "#@item_name@#", GetStringDB().GetString(GetItemDB().GetTextID(m_nUseItem)) ); std::string strText2 = SStringDB::ParseString( GetStringDB().GetString( 6499 ), "#@resurrect_buff@#", pResurrection->szStateName ); SetChildCaption( "static_msg" , strMsg.c_str() ); if( pResurrectTown ) pResurrectTown->Enable(); if( pResurrectItem ) { pResurrectItem->SetCaption( strText.c_str() ); pResurrectItem->Enable(); } if( pResurrectState ) { pResurrectState->SetCaption( strText2.c_str() ); pResurrectState->Enable(); } } else if( pResurrection->nResurrectionType == RESURRECTION_BY_STATE ) { m_hOwner = pResurrection->hOwner; std::string strMsg = SStringDB::ParseString( GetStringDB().GetString( 6422 ), "#@item_name@#", pResurrection->szStateName ); std::string strText = SStringDB::ParseString( GetStringDB().GetString( 6424 ), "#@item_name@#", GetStringDB().GetString(GetItemDB().GetTextID(pResurrection->nUseItem)) ); std::string strText2 = SStringDB::ParseString( GetStringDB().GetString( 6499 ), "#@resurrect_buff@#", pResurrection->szStateName ); SetChildCaption( "static_msg" , strMsg.c_str() ); if( pResurrectTown ) pResurrectTown->Enable(); if( pResurrectItem ) { pResurrectItem->SetCaption( strText.c_str() ); pResurrectItem->Disable(); } if( pResurrectState ) { pResurrectState->SetCaption( strText2.c_str() ); pResurrectState->Enable(); } } else if( pResurrection->nResurrectionType == RESURRECTION_CREATURE_BY_STATE ) { m_hOwner = pResurrection->hOwner; std::string strMsg = SStringDB::ParseString( GetStringDB().GetString( 6422 ), "#@item_name@#", pResurrection->szStateName ); std::string strText = SStringDB::ParseString( GetStringDB().GetString( 6424 ), "#@item_name@#", GetStringDB().GetString(GetItemDB().GetTextID(pResurrection->nUseItem)) ); std::string strText2 = SStringDB::ParseString( GetStringDB().GetString( 6499 ), "#@resurrect_buff@#", pResurrection->szStateName ); SetChildCaption( "static_msg" , strMsg.c_str() ); if( pResurrectTown ) pResurrectTown->Disable(); if( pResurrectItem ) { pResurrectItem->SetCaption( strText.c_str() ); pResurrectItem->Disable(); } if( pResurrectState ) { pResurrectState->SetCaption( strText2.c_str() ); pResurrectState->Enable(); } // 1:1 대련, kappamind. else if( pResurrection->nResurrectionType == RESURRECTION_PVP ) { if( pResurrectPVPState ) pResurrectPVPState->Enable(); if( pResurrectPVPTown ) pResurrectPVPTown->Enable(); } } } break; } } void SUIResurrectWnd::PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam ) { switch(nMessage) { case KUI_MESSAGE::KBUTTON_CLICK: { /** 1:1 대련 추가 * 2009-01-20: hunee */ if( ::_stricmp( lpszControlID, "button_resurrect_town" ) == 0 ) { //그냥 부활 // 서버에 기본 부활 메세지 보냄 m_pGameManager->PostMsgAtDynamic( new SMSG_RESURRECTION( 0, 0, false ) ); m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RESURRECT, false, true ) ); m_nUseItem = 0; } if( ::_stricmp( lpszControlID, "button_resurrect_item" ) == 0 ) { //아이템 사용 m_pGameManager->PostMsgAtDynamic( new SMSG_RESURRECTION( 0, m_nUseItem, false ) ); m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RESURRECT, false, true ) ); m_nUseItem = 0; } if( ::_stricmp( lpszControlID, "button_resurrect_buff" ) == 0 ) { //지속 효과 사용 m_pGameManager->PostMsgAtDynamic( new SMSG_RESURRECTION( m_hOwner, 0, false ) ); m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RESURRECT, false, true ) ); m_hOwner = 0; m_nUseItem = 0; } // #kappamind. 대련중 죽었을 때, 제자리 부활. if( ::_stricmp( lpszControlID, "button1" ) == 0 ) { m_pGameManager->PostMsgAtDynamic( new SMSG_RESURRECTION( 0, 0, true ) ); m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RESURRECT_PVP, false, true ) ); m_nUseItem = 0; } // #kappamind. 대련중 죽었을 때, 마을에서 부활. if( ::_stricmp( lpszControlID, "butoon2" ) == 0 ) { m_pGameManager->PostMsgAtDynamic( new SMSG_RESURRECTION( 0, 0, false ) ); m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RESURRECT_PVP, false, true ) ); m_nUseItem = 0; } } break; } SUIWnd::PumpUpMessage( lpszControlID, nMessage, lparam, wparam ); } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // namespace { const int RECALL_WAIT_TIME = 30; }; bool SUIRecallWnd::InitData( bool bReload/* = false*/ ) { m_dwCheckTime = 0; m_nWaitSecond = RECALL_WAIT_TIME; SetChildCaption( "static_msg02", "" ); // 커스텀 윈도우 move 영역 설정 SetCustomMovingRect( KRect( 0, 0, GetRect().GetWidth(), (GetRect().GetHeight()-GetRect().GetHeight()/3) ) ); return true; } void SUIRecallWnd::Process(DWORD dwTime) { if( m_dwCheckTime==0 )m_dwCheckTime = dwTime; if( (dwTime-m_dwCheckTime) >= 1000 ) { m_dwCheckTime = dwTime; if( m_nWaitSecond > 0 ) m_nWaitSecond--; else m_pGameManager->PostMsgAtDynamic( new SMSG_SEND_DATA( m_nDynamicWndID, "RECALL_DYNAMIC_CLOSE" ) ); char szNum[10]; itoa( m_nWaitSecond, szNum, 10 ); // <#fbe6af>00 : 00 SetChildCaption( "static_msg02", CStringUtil::StringFormat( "<#fbe6af>%s", SStringDB::ParseString( GetStringDB().GetString( 6421 ), "#@time@#", szNum ).c_str() ).c_str() ); } } void SUIRecallWnd::PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam ) { switch(nMessage) { case KUI_MESSAGE::KBUTTON_CLICK: { if( ::_stricmp( lpszControlID, "button_ok" ) == 0 ) { //트리거 날리고 초기화 std::string strTrigger = CStringUtil::StringFormat( "%s", m_strTrigger.c_str() ).c_str(); m_pGameManager->ProcMsgAtStatic( &SIMSG_UI_ACT_NPCDIALOG( strTrigger.c_str() ) ); m_pGameManager->PostMsgAtDynamic( new SMSG_SEND_DATA( m_nDynamicWndID, "RECALL_DYNAMIC_CLOSE" ) ); } if( ::_stricmp( lpszControlID, "button_cancel" ) == 0 ) { //닫고 초기화 m_strTrigger=""; m_pGameManager->PostMsgAtDynamic( new SMSG_SEND_DATA( m_nDynamicWndID, "RECALL_DYNAMIC_CLOSE" ) ); } } break; } SUIWnd::PumpUpMessage( lpszControlID, nMessage, lparam, wparam ); } void SUIRecallWnd::ProcMsgAtStatic( SGameMessage* pMsg ) { switch( pMsg->nType ) { case MSG_SCRIPT_SHOW_WINDOW : { SMSG_SCRIPT_SHOW_WINDOW* pScriptShowWindow = dynamicCast(pMsg); m_strTrigger = pScriptShowWindow->strTrigger; m_strArgument = pScriptShowWindow->strArgument; /// 2012.08.08 예전 코드로 복원, 통합된 스크립트 윈도우 작업 할 때, 기존꺼는 그대로 나두기로 했는데, 수정이 되버린것 같다- prodongi //#@user_name@# 님이 소환하셨습니다. 소환에 응하시겠습니까? SetChildCaption( "static_msg", CStringUtil::StringFormat( "<#fbe6af>%s",SStringDB::ParseString( GetStringDB().GetString( 6420 ), "#@user_name@#", m_strArgument.c_str() ).c_str() ).c_str() ); } break; } }