#include "SunClientPrecompiledHeader.h" #include "uiFateItemSystem.h" #include "BattleScene.h" #include "MouseHandler.h" #include "uiFateItemSystemMan/uiFateItemSystemMan.h" WzID uiFateItemSystem::m_wzID[DLGPOS_MAX] = { StrToWzID("B999"), //DLGPOS_BTN_EXIT, StrToWzID("B001"), //DLGPOS_BTN_START, StrToWzID("B002"), //DLGPOS_BTN_RESULT_VIEW, StrToWzID("B003"), //DLGPOS_BTN_OK, StrToWzID("BT00"), //DLGPOS_BTN_TARGET_ITEM, StrToWzID("PI00"), //DLGPOS_PIC_MOVIE, StrToWzID("ST11"), //DLGPOS_TXT_PHYSICAL StrToWzID("ST13"), //DLGPOS_TXT_DURATION StrToWzID("ST14"), //DLGPOS_TXT_DATE, }; //------------------------------------------------------------------------------ /** */ uiFateItemSystem::uiFateItemSystem(InterfaceManager * pUIMan) : uiBase(pUIMan), m_pPictureMovie(NULL), m_hBink(NULL), m_hRenderTargetTexture(INVALID_HANDLE_VALUE), m_dwAccmulateTick(0), m_iCaptionEffectCount(0), m_iState(eFIS_IDLE), m_pIconImage(NULL), m_iTargetItemPos(0) { } //------------------------------------------------------------------------------ /** */ uiFateItemSystem::~uiFateItemSystem() { } //------------------------------------------------------------------------------ /** */ void uiFateItemSystem::Init(CDrawBase* pDrawBase) { uiBase::Init(pDrawBase); for( int i =0; i < MAX_BUTTON ; ++i) { m_pButton[i]= (CCtrlButtonWZ *) getControl(DLGPOS_BTN_EXIT +i); assert(m_pButton[i]); } for ( int i =0; i x_pManagerTexture->LoadTexture("Data\\Icon\\Commercial\\activate_fate1.tga",TLS_ORIGINAL_SIZE | TLS_NO_MIPMAP | TLS_NO_MULTITHREAD | TLS_NEAREST); m_stAnimateSprite[EFFECT_POS_STATIC].hEffectTexture = g_pSunRenderer->x_pManagerTexture->LoadTexture("Data\\Icon\\Commercial\\activate_fate2.tga",TLS_ORIGINAL_SIZE | TLS_NO_MIPMAP | TLS_NO_MULTITHREAD | TLS_NEAREST); m_stAnimateSprite[EFFECT_POS_TARGET_SLOT].iEffectFrame = 0; m_stAnimateSprite[EFFECT_POS_STATIC].iEffectFrame = 0; } //------------------------------------------------------------------------------ /** */ void uiFateItemSystem::Release() { ReleaseBink(); if( m_hRenderTargetTexture ) { g_pSunRenderer->x_pManagerTexture->DestroyTexture(m_hRenderTargetTexture); m_hRenderTargetTexture = INVALID_HANDLE_VALUE; } } //------------------------------------------------------------------------------ /** */ void uiFateItemSystem::InitBink(bool bConsciousness) { if( m_hBink ) { ReleaseBink(); } if( m_iState == eFIS_MOVIE_RUNNING) { if(bConsciousness ) { m_hBink = BinkOpen( "Data\\Movie\\Effect2.bik",0); } else { m_hBink = BinkOpen( "Data\\Movie\\Effect.bik", 0 ); } } else m_hBink = BinkOpen("Data\\movie\\idle.bik",0); assert(m_hBink); if( m_hBink && m_hRenderTargetTexture == INVALID_HANDLE_VALUE ) { // 3 - RGB 4 - RGBA m_hRenderTargetTexture = g_pSunRenderer->x_pManagerTexture->GenerateEmptyTexture( m_hBink->Width, m_hBink->Height, 3, TLS_NO_MIPMAP | TLS_EMPTY_TEXTURE |TLS_NO_MULTITHREAD ); BinkSoundUseDirectSound( 0 ); } } //------------------------------------------------------------------------------ /** */ void uiFateItemSystem::ReleaseBink() { if( m_hBink ) { BinkClose(m_hBink); m_hBink =NULL; } } //------------------------------------------------------------------------------ /** */ void uiFateItemSystem::OnUpdateSolarDialog() { UpdateShowNHideButton(); } //------------------------------------------------------------------------------ /** */ void uiFateItemSystem::OnRenderSolarDialog() { RenderMovie(); if( m_pIconImage ) { m_pIconImage->Render(&m_pButton[DLGPOS_BTN_TARGET_ITEM]->GetSizeRect()); } #ifdef _NA_000000_20130114_RENEWER_UI RenderEffectTexture(EFFECT_POS_TARGET_SLOT, (int)m_pButton[DLGPOS_BTN_TARGET_ITEM]->GetSizeRect().left - (42 + (42/5)), (int)m_pButton[DLGPOS_BTN_TARGET_ITEM]->GetSizeRect().top - (28+ (28/5)),133,87,4,3,TRUE); #else RenderEffectTexture(EFFECT_POS_TARGET_SLOT, (int)m_pButton[DLGPOS_BTN_TARGET_ITEM]->GetSizeRect().left - 42, (int)m_pButton[DLGPOS_BTN_TARGET_ITEM]->GetSizeRect().top - 28,133,87,4,3,TRUE); #endif//#ifdef _NA_000000_20130114_RENEWER_UI if( m_iState == eFIS_RESULT_SUCCESS) { RenderEffectTexture(EFFECT_POS_STATIC, (int) m_pStatic[m_iCaptionEffectCount]->GetSizeRect().left - 55, (int) m_pStatic[m_iCaptionEffectCount]->GetSizeRect().top-33, 185,75,3,5, FALSE); } #ifdef _INTERNATIONAL_UI RenderTooltip(); #endif//_INTERNATIONAL_UI } //------------------------------------------------------------------------------ /** */ void uiFateItemSystem::Process(DWORD dwTick) { ProcessCaptionEffect(dwTick); static DWORD dwAccmulateTick = 0; dwAccmulateTick += dwTick; if( dwAccmulateTick > EFFECT_FRAME_UPDATE_TIME) { ProcessRollingNumber(); m_stAnimateSprite[0].iEffectFrame += 1; m_stAnimateSprite[1].iEffectFrame += 1; dwAccmulateTick = 0; } static DWORD dwSecondAccmulateTick = 0; dwSecondAccmulateTick += dwTick; if( dwSecondAccmulateTick > MOVIE_FRAME_UPDATE_TIME) { UpdateMovie(); dwSecondAccmulateTick =dwSecondAccmulateTick - MOVIE_FRAME_UPDATE_TIME; } } //------------------------------------------------------------------------------ /** */ void uiFateItemSystem::OnShowWindow(BOOL val) { if( val ) { m_iState = eFIS_IDLE; m_dwAccmulateTick = 0; m_iCaptionEffectCount = 0; m_bPlayNotLoopEffect = false; m_iTargetItemPos = 0; InitBaseAtributeCaption(); InitBink(false); MoveCenter(); g_SoundEffect.PlayUI(UI_SOUND_ITEM_CLICK_VALIDATION); MouseHandler::Instance()->RollbackItemAtHand(); g_InterfaceManager.LockDlgs(IM_FATEITEM_SYSTEM::FATEITEM_DLG); } else { g_InterfaceManager.UnLockDlgs(); if (m_pIconImage) { ICONMGR()->RemoveIcon(m_pIconImage); m_pIconImage = NULL; } ReleaseBink(); if( m_iState == eFIS_RESULT_SUCCESS ) { // eFIS_RESULT_SUCCESS¿¡¼­ âÀ» ´Ý´Â°æ¿ì°¡ »ý±â¸é(°­Á¦·Î Á¸À̵¿½Ã) ResultItemÀ» ³Ö°í ´ÝÀÚ!! InsertResultItem(); //InsertResultItemÀ» È£ÃâÇÑ ½ÃÁ¡Àº ÀÌ¹Ì SaveHero¸¦ È£ÃâÇÑ »óÅÂÀ̰í, Insert¸¦ ÇØºÁ¾ß Save°¡ ¾ÈµÆÀ¸¹Ç·Î // ´Ù½ÃÇѹø SaveHero¸¦ È£ÃâÇÑ´Ù. È¿À²Àº ¾ÈÁÁÁö¸¸, ¿ö³« ¿¹¿ÜÀûÀÎ »óȲ¿¡¼­ ¹ß»ýÇϹǷΠÀÌ·¸°Ô ÇÏÀÚ. if( g_pHero ) { BattleScene::SaveHero(g_pHero); } } SetTargetItemLock(FALSE); } } //------------------------------------------------------------------------------ /** */ void uiFateItemSystem::MessageProc(SI_MESSAGE * pMessage) { switch( pMessage->eResultMsg ) { case RT_MSG_LBUTTONCLICK: { switch( getControlIDToPos(pMessage->dwCtrlID) ) { case DLGPOS_BTN_OK: case DLGPOS_BTN_EXIT: { ShowInterface(FALSE); } break; case DLGPOS_BTN_START: { //6325 ·°Å° ¾ÆÀÌÅÛ ÀÎÁõ ÀǽÄÀÌ ½ÃÀÛ µÇ¾ú½À´Ï´Ù. g_SoundEffect.PlayUI(UI_SOUND_ITEM_VALIDATION_START); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, g_InterfaceManager.GetInterfaceString(6325)); m_iState = eFIS_MOVIE_RUNNING; InitBink(true); } break; case DLGPOS_BTN_RESULT_VIEW: { #ifdef __CN_000948_20080305_VALIDATE_REIHALT_IMMEDIATELY NET_SEND_CG_ITEM_VALIDATION_OF_REIHALT_SYN(); m_iState = eFIS_WAIT_RESPONSE; InitBink(false); #else //6325 ·°Å° ¾ÆÀÌÅÛ ÀÎÁõ ÀǽÄÀÌ ½ÃÀÛ µÇ¾ú½À´Ï´Ù. g_SoundEffect.PlayUI(UI_SOUND_ITEM_VALIDATION_START); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, g_InterfaceManager.GetInterfaceString(6325)); m_iState = eFIS_MOVIE_RUNNING; InitBink(false); #endif } break; } } break; } } //------------------------------------------------------------------------------ /** */ void uiFateItemSystem::NetworkProc(MSG_BASE * pMsg) { } void uiFateItemSystem::NET_SEND_CG_ITEM_VALIDATION_OF_REIHALT_SYN() { // Ÿ°Ù ¾ÆÀÌÅÛÀ» LOCKÀÌ ¼º°øÇϸé SYN º¸³¿. MSG_CG_ITEM_VALIDATION_OF_REIHALT_SYN SendMsg; SendMsg.m_TargetItemPos = m_iTargetItemPos; GlobalFunc::SendPacket(CI_GAMESERVERIDX, &SendMsg, sizeof(SendMsg)); }