#include "stdafx.h" #include "InventoryWindow.h" #include "UIImage.h" //#include "../Common/Item_Common.h" #include "GameUIManager.h" #include "PushButton.h" #include "RadioButton.h" #include "ItemIcon.h" #include "ItemManager.h" #include "InvenSheetWindow.h" #include "InvenEquipWindow.h" #include "ObjectManager.h" #include "Hero.h" #include "Gauge.h" #include "NumberEditBox.h" #include "BagWindow.h" #include "UserSellWindow.h" #include "Npc_Common.h" #include "NpcDealRegistSheet.h" #include "NpcDealWindow.h" #include "TradeWindow.h" #include "ChatManager.h" #include "EnhancedWindow.h" #include "ChatWindow.h" #include "NpcDisjointWindow.h" #include "MoneyWindow.h" #include "PutCardWindow.h" #include "MailWindow.h" #include "MailSheet.h" #include "GameResourceManager.h" #include "MegaphoneWindow.h" cInventoryWindow::cInventoryWindow() : mWeightGauge(0) , mSelectIcon(0) , mpMoney(0) , mShowBit(0) , mpSelectImage(0) , mShowSelect( false ) , mpEquipWindow(0) , mpForcePointEdit(0) { mBagButton[0] = 0; mBagButton[1] = 0; mBagButton[2] = 0; mIsBackup = false; mBackupBagBtn[0] = false; mBackupBagBtn[1] = false; mBackupBagBtn[2] = false; ::ZeroMemory( mpForceRadio, sizeof(mpForceRadio) ); } cInventoryWindow::~cInventoryWindow() { SAFE_DELETE( mpSelectImage ); } void cInventoryWindow::Open() { mShowBit = 0; if( mpEquipWindow ) { mpEquipWindow->Open(); } else assert(0); /// µ· Ãʱ⠼³Á¤ SetMoney( HERO->GetMoney() ); SetBagEndSlot( HERO->GetBagEndSlot() ); } void cInventoryWindow::Close() { cUIWindow::Close(); for( int i = 0; i < 3; ++i ) { cUIWindow* b = (cUIWindow*)GAMEUI->GetBagWindow(i); if( b ) b->Hide( false ); } UIMAN->HideTip(); UIMAN->HideDrag( this ); mSelectIcon = 0; mShowSelect = false; /// npc »óÁ¡Ã¢ÀÌ ¿­·ÁÀÖÀ¸¸é ´Ý±â if( HERO->IsOpenNpcTalk() == true ) HERO->CloseNpcTalk( false ); ApplyBackupPos(); } void cInventoryWindow::Show( bool onsound ) { cUIWindow::Show( onsound ); UpdateUIByInven( true ); BYTE byte = mShowBit; for( int i = 0; i < 3; ++i ) { cUIWindow* b = (cUIWindow*)GAMEUI->GetBagWindow(i); if( b && (byte & 1) ) b->Show(); byte = byte >> 1; } } void cInventoryWindow::OnHide() { cUIWindow::OnHide(); for( int i = 0; i < 3; ++i ) { cUIWindow* b = (cUIWindow*)GAMEUI->GetBagWindow(i); if( b ) b->Hide( false ); } UIMAN->HideTip(); UIMAN->HideDrag( this ); mSelectIcon = 0; mShowSelect = false; ApplyBackupPos(); /// npc »óÁ¡Ã¢ÀÌ ¿­·ÁÀÖÀ¸¸é ´Ý±â if( HERO->IsOpenNpcTalk() == true ) { HERO->CloseNpcTalk(); } } /// ESC ·Î ÀÎÇØ ´ÝÈú¶§ °¡¹æµµ °°À̴ݴ´٠void cInventoryWindow::HideESC( bool onsound ) { cUIWindow::HideESC( onsound ); for( unsigned int i = 0; i < 3; ++i ) { cUIWindow* b = (cUIWindow*)GAMEUI->GetBagWindow(i); if( b ) b->Hide( false ); } } void cInventoryWindow::SetBagButtonPressed( unsigned int i, bool pressed ) { assert( i >= 0 && i <= 2 && "index out of range" ); /// Çã¿ëµÈ °¡¹æ¸¸ º¸À̱â unsigned int endBagIndex = UINT_MAX; unsigned short endBagSlot = HERO->GetBagEndSlot(); switch( endBagSlot ) { case INVENTORY_BAG0_END: return; case INVENTORY_BAG1_END: endBagIndex = 0; break; case INVENTORY_BAG2_END: endBagIndex = 1; break; case INVENTORY_BAG3_END: endBagIndex = 2; break; default: { assert( 0 && "Bad slot index" ); return; } break; } if( i > endBagIndex ) return; if( mBagButton[i] ) mBagButton[i]->SetPress( pressed ); //ƯÁ¤ºñÆ®¸¦ 1·Î ÁöÁ¤ÇÏ´Â °ø½ÄÀº a | (a<<(n-1)) °¡ µÇ°í //ƯÁ¤ºñÆ®¸¦ 0À¸·Î ÁöÁ¤ÇÏ´Â °ø½ÄÀº (a&~(1<> bagIdx); return (byte & 1); } bool cInventoryWindow::OnCreate( cUINodeProperty* property ) { if( cTabWindow::OnCreate( property ) == false ) return false; mpEquipWindow = (cUIWindow*)GetChild( eUIID_INVENTORY_EQUIPWINDOW ); /// ÅÇÀ©µµ¿ì ¼¼ÆÃ cInvenSheetWindow* p = 0; for( unsigned int i = 0; i < MAX_INVENTAB; ++i ) { p = (cInvenSheetWindow*)GetChild( eUIID_INVEN_SHEET1 + i ); if( p ) { p->BindSlot( i ); p->Hide(); } } SetCurrent( 0 ); /// ÀåÂø À©µµ¿ì¸¦ »ý¼º cUIWindow* pEquipWindow = (cUIWindow*)GetChild( eUIID_INVENTORY_EQUIPWINDOW ); if( pEquipWindow ) { pEquipWindow->Show( false ); } else { assert(0); } /// ¹«°Ô °ÔÀÌÁö mWeightGauge = (cGauge*)GetChild( eUIID_INVENTORY_WEIGHT ); mpMoney = (cNumberEditBox*)GetChild( eUIID_INVENTORY_MONEY ); if( mWeightGauge ) { ITEMMAN->SetWeightGauge( mWeightGauge ); } else { assert(0); } /// °¡¹æ ¹öư mBagButton[0] = (cPushButton*)GetChild( eUIID_INVENTORY_BAG0 ); mBagButton[1] = (cPushButton*)GetChild( eUIID_INVENTORY_BAG1 ); mBagButton[2] = (cPushButton*)GetChild( eUIID_INVENTORY_BAG2 ); /// ÀüÀå °ü·Ã UI mpForceRadio[0] = (cRadioButton*)GetChild( eUIID_INVENTORY_FIRE_RADIO ); mpForceRadio[1] = (cRadioButton*)GetChild( eUIID_INVENTORY_WATER_RADIO ); mpForceRadio[2] = (cRadioButton*)GetChild( eUIID_INVENTORY_WIND_RADIO ); mpForceRadio[3] = (cRadioButton*)GetChild( eUIID_INVENTORY_EARTH_RADIO ); mpForcePointEdit = (cNumberEditBox*)GetChild( eUIID_INVENTORY_FORCE_POINT ); InitForcePoint(); /// ¹«°Ô°ÔÀÌÁö ¶Ñ²±À̹ÌÁö cUISkin* pSkin = UIMAN->GetSkin(); if( !pSkin ) { assert(0); return false; } /// ¼±Åà À̹ÌÁö »ý¼º cUINodeSkin* selectSkin = pSkin->GetNodeSkin( "Inventory_SelectImage" ); if( selectSkin ) { mpSelectImage = new cUIImage( selectSkin->mpTexture ); unsigned int tx = selectSkin->mSkinInfo->mTexX; unsigned int ty = selectSkin->mSkinInfo->mTexY; unsigned int w = selectSkin->mSkinInfo->mWidth; unsigned int h = selectSkin->mSkinInfo->mHeight; unsigned int x = selectSkin->mSkinInfo->mX; unsigned int y = selectSkin->mSkinInfo->mY; mpSelectImage->SetTextureRect( tx, ty, tx + w, ty + h ); mpSelectImage->SetScreenRect( cUIRect( x, y, x + w, y + h ) ); } return true; } void cInventoryWindow::UpdateRect() { cTabWindow::UpdateRect(); if( mSelectIcon && mpSelectImage ) { cUIRect rc = mSelectIcon->GetAbsoluteRect(); mpSelectImage->SetPos( rc.mLeft-2, rc.mTop-2 ); } } void cInventoryWindow::UpdateSkin() { UpdateRect(); /// ±âÁ¸ ÇØ»óµµ ÀúÀå mOldScreenWidth = GetScreenWidth(); mOldScreenHeight = GetScreenHeight(); /// ÀÚ½Ä ½ºÅ² Àû¿ë cChildList::cIterator i = mChildList.Begin(); cChildList::cIterator end = mChildList.End(); for( ; i != end; ++i ) { cUINode* n = (cUINode*)(*i); if( n ) n->UpdateSkin(); } UpdateUIByInven( false ); } void cInventoryWindow::UpdateUIByInven( bool backup ) { cUIWindow* trade = (cUIWindow*)GAMEUI->GetTradeWindow(); if( trade && trade->IsVisible() ) { GAMEUI->UpdateInvenWithUI( trade, backup ); return; } cUIWindow* sell = (cUIWindow*)GAMEUI->GetUserSellWindow(); if( sell && sell->IsVisible() ) { GAMEUI->UpdateInvenWithUI( sell, backup ); return; } } void cInventoryWindow::OnRender(cUIFontItemKeeper* pKeeper ) { cTabWindow::OnRender( pKeeper ); if( mShowSelect && mpSelectImage ) mpSelectImage->Draw(); } void cInventoryWindow::OnCommand( cUINode* /*node*/, unsigned int id ) { if( id == eUIID_INVENTORY_CLOSE ) Hide(); } void cInventoryWindow::OnTabButtonPressed( cUINode* caller, unsigned int id ) { cTabWindow::OnTabButtonPressed( caller, id ); mShowSelect = false; } void cInventoryWindow::OnPushButtonPressed( cUINode* /*caller*/, unsigned int id ) { switch( id ) { case eUIID_INVENTORY_BAG0: { cBagWindow* bag = GAMEUI->GetBagWindow( 0 ); if( bag ) { bag->Toggle(); SetBagButtonPressed( 0, bag->IsVisible() ); } } break; case eUIID_INVENTORY_BAG1: { cBagWindow* bag = GAMEUI->GetBagWindow( 1 ); if( bag ) { bag->Toggle(); SetBagButtonPressed( 1, bag->IsVisible() ); } } break; case eUIID_INVENTORY_BAG2: { cBagWindow* bag = GAMEUI->GetBagWindow( 2 ); if( bag ) { bag->Toggle(); SetBagButtonPressed( 2, bag->IsVisible() ); } } break; } } void cInventoryWindow::OnRadioPressed( cUINode* , unsigned int id ) { switch( id ) { case eUIID_INVENTORY_FIRE_RADIO: SetForcePoint( eFORCETYPE_FIRE ); break; case eUIID_INVENTORY_WATER_RADIO: SetForcePoint( eFORCETYPE_WATER ); break; case eUIID_INVENTORY_WIND_RADIO: SetForcePoint( eFORCETYPE_WIND ); break; case eUIID_INVENTORY_EARTH_RADIO: SetForcePoint( eFORCETYPE_EARTH ); break; } } /// void cInventoryWindow::OnIconClicked( cUINode* caller, unsigned int ) { UpdateSelect( (cItemIcon*)caller ); } void cInventoryWindow::OnIconDoubleClicked(cUINode* caller, unsigned int ) { cItemIcon* icon = (cItemIcon*)caller; if( icon ) { if( HERO->GetNpcFunc() == NPC_FUNC_MAX ) { /// °­È­ Ä«µå¸é °­È­ ½Ãµµ cItem* pItem = ITEMMAN->GetItem( icon->GetSlotIndex() ); if( pItem ) { if( pItem->GetDefine()->GetType() == ITEM_CARD && pItem->GetDefine()->GetSubType() >= ITEM_CARD_ENHANCE_WEAPON_LV1 && pItem->GetDefine()->GetSubType() <= ITEM_CARD_ENHANCE_WEAR_LV2_75 ) { unsigned long textIndex = 0; int ret = ITEMMAN->CheckLimit( pItem->GetIndex() ); switch( ret ) { case ITEMLIMIT_RACE: textIndex = 280; break; case ITEMLIMIT_GENDER: textIndex = 281; break; case ITEMLIMIT_JOB: textIndex = 282; break; case ITEMLIMIT_LEVEL: textIndex = 283; break; case ITEMLIMIT_PVPONLY: textIndex = 284; break; case ITEMLIMIT_TUTORIALONLY:textIndex = 291; break; case ITEMLIMIT_FIELDONLY: textIndex = 12400; break; case ITEMLIMIT_FORCETYPE: textIndex = 285; break; case ITEMLIMIT_MAKESKILL: textIndex = 286; break; case ITEMLIMIT_MAKESKILLEXP: textIndex = 292; break; case ITEMLIMIT_MIXSKILLSTEP: textIndex = 288; break; case ITEMLIMIT_MIXRECIPESTEP:textIndex = 289; break; case ITEMLIMIT_MIXRECIPEEXP: textIndex = 290; break; case ITEMLIMIT_ERROR: assert(0); textIndex = 239; break; } if( ret != ITEMLIMIT_SUCCESS ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( textIndex ) ); return; } /// ¾ÆÀÌÅÛ °­È­Ã¢ ¿­±â cEnhancedWindow* pEnhan = GAMEUI->GetEnhancedWindow(); if( pEnhan ) { if( pEnhan->IsVisible() == false ) { pEnhan->Show(); pEnhan->AddCard( icon->GetSlotIndex() ); } } /// Àκ¥Ã¢ ¿­±â cUIWindow* inven = (cUIWindow*)GAMEUI->GetInventoryWindow(); if( pEnhan->IsVisible() == true ) { if( inven && inven->IsVisible() == false ) inven->Show(false); } } } ITEMMAN->TryToEquipItem( icon->GetSlotIndex() ); } } } void cInventoryWindow::OnIconRightClicked(cUINode* caller, unsigned int , bool shift ) { cItemIcon* icon = (cItemIcon*)caller; if( !icon ) { assert(0); return; } unsigned short curSlotIdx = icon->GetSlotIndex(); /// »óÁ¡Àΰæ¿ì switch( HERO->GetNpcFunc() ) { case NPC_FUNC_STORE: { cItem* item = ITEMMAN->GetItem( curSlotIdx ); if( item && item->GetCount() > 0 ) { if( shift == true ) { ITEMMAN->TryToSellItem( curSlotIdx, item->GetCount() ); } else { GAMEUI->ShowItemSellAskWindow( curSlotIdx, item->GetCount() ); } } } break; case NPC_FUNC_DEAL: { /// ÆÇ¸Å´ëÇà cNpcDealWindow* dealWin = GAMEUI->GetNpcDealWindow(); if( dealWin ) { cNpcDealRegistSheet* registSheet = dealWin->GetRegistSheet(); if( registSheet && registSheet == dealWin->GetCurrentSheet() ) { registSheet->RegistItem( curSlotIdx ); } } } break; case NPC_FUNC_WAREHOUSE: { /// â°í unsigned short slotIdx = 0; unsigned short wareHouseEnd = HERO->GetWareHouseEndSlot(); if( ITEMMAN->FindEmptySlot( &slotIdx, INVENTORY_WAREHOUSE0_BEGIN, wareHouseEnd ) == true ) { ITEMMAN->TryToMoveItem( curSlotIdx, slotIdx, icon ); } else { UIMAN->CreateMsgBox( eStage_Game, eMSGBOX_MODAL, eMBEVENT_NONE, eSKIN_OK, GAMERESOURCEMAN->GetGameText( 202 ), GAMERESOURCEMAN->GetGameText( 301 ) ); } } break; case NPC_FUNC_ITEMDISJOINT: { unsigned short curSlotIdx = icon->GetSlotIndex(); /// ºÐÇØ cNpcDisjointWindow* disWin = GAMEUI->GetNpcDisjointWindow(); if( disWin ) { disWin->AddItem( curSlotIdx ); } } break; case NPC_FUNC_MAIL: { cMailWindow* win = GAMEUI->GetMailWindow(); cMailSendSheet* sendSheet = win->GetSendSheet(); if( sendSheet && sendSheet == win->GetCurrentSheet() ) { if( win->IsNetLock() == false ) { sendSheet->AddItem( curSlotIdx ); } } } break; default: { /// shift + ¿ìŬ¸¯ = ¾ÆÀÌÅÛ ¸µÅ© if( shift == true ) { cMegaphoneWindow* megaWin = GAMEUI->GetMegaphoneWindow(); if( megaWin && megaWin->IsVisible() ) { megaWin->AddLinkItem( icon->GetSlotIndex(), 0 ); return; } cChatWindow* chatWin = GAMEUI->GetChatWindow(); if( chatWin && chatWin->IsVisible() ) { chatWin->AddLinkItem( icon->GetSlotIndex(), 0 ); return; } } else { if( HERO->GetState() == eOBJECT_STATE_STOP ) { if( HERO->GetStopFlag() == eSTOP_OPENSTALL ) { /// ÆÇ¸Å ³ëÁ¡ cUserSellWindow* userSell = GAMEUI->GetUserSellWindow(); if( userSell && userSell->IsVisible() ) { if( userSell->GetStatus() == eUSERSELL_JOIN ) return; if( userSell->IsNetLock() == false ) { if( userSell->IsOpen() == false ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 2509 ) ); } else { GAMEUI->ShowMoneyWindow( eMONEY_NONE, eMBEVENT_USERSELL_ITEMMONEYADD, curSlotIdx ); } } return; } } else if( HERO->GetStopFlag() == eSTOP_SUMMON_PAPER ) { tPointerList* pManagedList = UIMAN->GetManagedSortUIList(); if( pManagedList == 0 ) return; if( pManagedList->IsEmpty() == false ) { tPointerList::cIterator i = pManagedList->Begin(); tPointerList::cIterator end = pManagedList->End(); for( ; i != end; ++i ) { cUINode* node = (cUINode*)(*i); if( node == 0 ) continue; int id = node->GetID(); switch( id ) { case eUIID_MAIL_WINDOW: { cMailWindow* win = (cMailWindow*)node; cMailSendSheet* sendSheet = win->GetSendSheet(); if( sendSheet && sendSheet == win->GetCurrentSheet() ) { if( win->IsNetLock() == false ) { sendSheet->AddItem( curSlotIdx ); } } } return; case eUIID_WAREHOUSE_WINDOW: { /// â°í unsigned short slotIdx = 0; unsigned short wareHouseEnd = HERO->GetWareHouseEndSlot(); if( ITEMMAN->FindEmptySlot( &slotIdx, INVENTORY_WAREHOUSE0_BEGIN, wareHouseEnd ) == true ) { ITEMMAN->TryToMoveItem( curSlotIdx, slotIdx, icon ); } else { UIMAN->CreateMsgBox( eStage_Game, eMSGBOX_MODAL, eMBEVENT_NONE, eSKIN_OK, GAMERESOURCEMAN->GetGameText( 202 ), GAMERESOURCEMAN->GetGameText( 301 ) ); } } return; case eUIID_NPCDEAL_WINDOW: { /// ÆÇ¸Å´ëÇà cNpcDealWindow* win = (cNpcDealWindow*)node; if( win ) { cNpcDealRegistSheet* registSheet = win->GetRegistSheet(); if( registSheet && registSheet == win->GetCurrentSheet() ) { registSheet->RegistItem( curSlotIdx ); } } } return; } } } } } else { tPointerList* pManagedList = UIMAN->GetManagedSortUIList(); if( pManagedList == 0 ) return; if( pManagedList->IsEmpty() == false ) { tPointerList::cIterator i = pManagedList->Begin(); tPointerList::cIterator end = pManagedList->End(); for( ; i != end; ++i ) { cUINode* node = (cUINode*)(*i); if( node == 0 ) continue; int id = node->GetID(); switch( id ) { case eUIID_GAME_ENHANCED_WINDOW: { cEnhancedWindow* win = (cEnhancedWindow*)node; if( win && win->IsVisible() ) { cItem* item = ITEMMAN->GetItem( curSlotIdx ); if( item ) { cItemDefine* pItemDefine = item->GetDefine(); if( pItemDefine ) { if( pItemDefine->GetType() == ITEM_CARD && (pItemDefine->GetSubType() >= ITEM_CARD_ENHANCE_WEAPON_LV1 && pItemDefine->GetSubType() <= ITEM_CARD_ENHANCE_WEAR_LV2_75 ) ) { win->AddCard( curSlotIdx, true ); } else if( pItemDefine->GetType() == ITEM_MATERIAL && ( pItemDefine->GetSubType() == ITEM_MATERIAL_ENHANCED_DOWN_30 || pItemDefine->GetSubType() == ITEM_MATERIAL_ENHANCED_DOWN_60 || pItemDefine->GetSubType() == ITEM_MATERIAL_ENHANCED_DESTROY_30 || pItemDefine->GetSubType() == ITEM_MATERIAL_ENHANCED_DESTROY_60 ) ) { win->AddCashProtectCard( curSlotIdx, true ); } else win->AddItem( curSlotIdx, true ); } } } } return; case eUIID_GAME_PUTCARD_WINDOW: { cPutCardWindow* win = (cPutCardWindow*)node; if( win && win->IsVisible() ) win->AddItem( curSlotIdx ); } return; case eUIID_TRADE_WINDOW: { /// °³ÀÎ °Å·¡ cTradeWindow* trade = GAMEUI->GetTradeWindow(); if( trade && trade->IsVisible() ) { if( trade->IsNetLock() == false ) { ITEMMAN->TryToTradeItemAdd( curSlotIdx ); } } } return; } } } else { // »óÀ§¿¡ ¶á °ü·Ã À©µµ¿ì°¡ ¾øÀ¸¸é ¾ÆÀÌÅÛ »ç¿ëÀ¸·Î º¸³»±â ITEMMAN->TryToEquipItem( icon->GetSlotIndex() ); } } } } break; } } /// »õ·Î¿î ½½·ÔÀ¸·Î ¼±Åà °»½Å void cInventoryWindow::ChangeSelect( unsigned short slotIndex ) { cItem* item = ITEMMAN->GetItem( slotIndex ); if( item ) { cItemIcon* newIcon = item->GetIcon(); UpdateSelect( newIcon ); /// ÀÏ¹Ý ½¬Æ® ¾Æ´Ï¸é º¸ÀÌÁö ¾Ê°Ô Çϱâ cUIWindow* sheet = GetCurrentSheet(); if( sheet && sheet->GetID() != eUIID_INVEN_SHEET1 ) mShowSelect = false; } } /// ´­¸°¾ÆÀÌÄÜÀ» ¼±ÅÃµÈ ¾ÆÀÌÄÜÀ¸·Î ÀúÀå. void cInventoryWindow::UpdateSelect( cItemIcon* icon ) { if( icon == 0 ) { assert(0); return; } unsigned int itemIdex = icon->GetItemIndex(); if( mpSelectImage && itemIdex > 0 ) { /// »õ ¼±Åà ¾ÆÀÌÄÜ ´­¸²È¿°ú cUIRect rc = icon->GetAbsoluteRect(); mpSelectImage->SetPos( rc.mLeft-2, rc.mTop-2 ); mSelectIcon = icon; mShowSelect = true; ITEMMAN->SetInvenSelect( this ); } else mShowSelect = false; } void cInventoryWindow::SetMoney( unsigned long money ) { if( mpMoney ) { mpMoney->SetValue( money ); } else { assert(0); } } unsigned long cInventoryWindow::GetMoney() { if( mpMoney ) { return mpMoney->GetValue(); } else { assert(0); return 0; } } void cInventoryWindow::BackupWindowPos() { cUIRect rt; mIsBackup = true; /// inven rt = GetAbsoluteRect(); mBackupPos[0].mX = rt.mLeft; mBackupPos[0].mY = rt.mTop; /// bag for( unsigned int i=0; i<3; i++ ) { cUIWindow* b = (cUIWindow*)GAMEUI->GetBagWindow(i); if( b ) { rt = b->GetAbsoluteRect(); mBackupPos[i+1].mX = rt.mLeft; mBackupPos[i+1].mY = rt.mTop; } else { mBackupPos[i+1].mX = 0; mBackupPos[i+1].mY = 0; } mBackupBagBtn[i] = IsShowBag(i); } } void cInventoryWindow::ApplyBackupPos() { if( mIsBackup == false ) return; /// SetRelativePos( mBackupPos[0] ); /// for( unsigned int i=0; i<3; i++ ) { cUIWindow* b = (cUIWindow*)GAMEUI->GetBagWindow(i); if( b ) b->SetRelativePos( mBackupPos[i+1] ); SetBagButtonPressed(i, mBackupBagBtn[i]); } mIsBackup = false; } bool cInventoryWindow::SetBagEndSlot( unsigned short slotIndex ) { /// Çã¿ëµÈ °¡¹æ¸¸ º¸À̱â int bagButtonIndex = -1; unsigned short bagEnd = HERO->GetBagEndSlot(); switch( bagEnd ) { case INVENTORY_BAG0_END: break; case INVENTORY_BAG1_END: bagButtonIndex = 0; break; case INVENTORY_BAG2_END: bagButtonIndex = 1; break; case INVENTORY_BAG3_END: bagButtonIndex = 2; break; default: { assert( 0 && "Bad slot index" ); return false; } break; } cBagWindow* bagWin[3] = {0,}; bagWin[0] = GAMEUI->GetBagWindow(0); bagWin[1] = GAMEUI->GetBagWindow(1); bagWin[2] = GAMEUI->GetBagWindow(2); if( !bagWin[0] || !bagWin[1] || !bagWin[2] ) { assert(0); return false; } /// ÇØ´ç ½½·Ô À妽º±îÁö ¾ÆÀÌÄÜ enable ½Ã۱â for( int idx = 0; idx < 3; ++idx ) { if( idx <= bagButtonIndex ) { mBagButton[idx]->SetEnabled( true ); mBagButton[idx]->Show(); bagWin[idx]->SetUseFlag( true ); } else { mBagButton[idx]->SetEnabled( false ); mBagButton[idx]->Hide(); bagWin[idx]->SetUseFlag( false ); } } return true; } bool cInventoryWindow::SetWearCardSlot( unsigned short slotEnd ) { if( mpEquipWindow ) { return ((cInvenEquipWindow*)mpEquipWindow)->SetWearCardSlot( slotEnd ); } else { assert( 0 ); return false; } } /// ÀüÀå void cInventoryWindow::SetForcePoint( unsigned char force ) { if( mpForcePointEdit && HERO ) { unsigned long nPvpForcePoint = HERO->GetPVPPoint( force ); mpForcePointEdit->SetValue( nPvpForcePoint ); } else { assert(0); } } void cInventoryWindow::UpdateForcePoint() { for( int i = 0; i < 4; i++ ) { if( mpForceRadio[i]->IsPress() == true ) { SetForcePoint( (unsigned char)( eFORCETYPE_FIRE + i) ); break; } } } void cInventoryWindow::InitForcePoint() { if( HERO ) { if( mpForcePointEdit ) mpForcePointEdit->SetValue( 0 ); sPlayerExrInfo* exrInfo = HERO->GetPlayerExrInfo(); if( exrInfo ) { if( exrInfo->mForceType > eFORCETYPE_NONE ) { int index = exrInfo->mForceType - eFORCETYPE_FIRE; if( index < 0 ) return; if( mpForceRadio[ index ] ) { mpForceRadio[ index ]->SetPress( true ); SetForcePoint( exrInfo->mForceType ); } else { assert(0); return; } } else { for( int i = 0; i < 4; i++ ) { if( mpForceRadio[ i ] ) mpForceRadio[ i ]->SetPress(false); } if( mpForceRadio[ 0 ] ) mpForceRadio[ 0 ]->SetPress(true); } } else { assert(0); } } }