#include "stdafx.h" #include "Item_Common.h" #include "ItemManager.h" #include "ObjectManager.h" #include "Hero.h" #include "ChatManager.h" #include "GameResourceManager.h" #include "PartyManager.h" #include "PartyUnionManager.h" bool cItemManager::TestMoveItemDown( unsigned short i0, unsigned short i1 ) { cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; if( item0.mEquipType == ITEM_EQUIP_TWO_HANDS ) { /// °Á ³Ñ¾î°¨ } else { if( item1.mEquipType == ITEM_EQUIP_TWO_HANDS ) { unsigned int i2 = 0; switch( i0 ) { case INVENTORY_HAND_LEFT1: i2 = INVENTORY_HAND_RIGHT1; break; case INVENTORY_HAND_RIGHT1: i2 = INVENTORY_HAND_LEFT1; break; case INVENTORY_HAND_LEFT2: i2 = INVENTORY_HAND_RIGHT2; break; case INVENTORY_HAND_RIGHT2: i2 = INVENTORY_HAND_LEFT2; break; } cItem& item2 = mItemArray[i2]; if( item2.mCount ) { unsigned short i3 = 0; if( FindEmptySlot( &i3, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 202 ) ); return false; } } } } return true; } bool cItemManager::TestMoveItemUp( unsigned short i0, unsigned short i1 ) { cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; if( item0.mEquipType == ITEM_EQUIP_TWO_HANDS ) { if( item1.mEquipType == ITEM_EQUIP_TWO_HANDS ) { } else if( item1.mCount ) { unsigned int i2 = 0; switch( i1 ) { case INVENTORY_HAND_LEFT1: i2 = INVENTORY_HAND_RIGHT1; break; case INVENTORY_HAND_RIGHT1: i2 = INVENTORY_HAND_LEFT1; break; case INVENTORY_HAND_LEFT2: i2 = INVENTORY_HAND_RIGHT2; break; case INVENTORY_HAND_RIGHT2: i2 = INVENTORY_HAND_LEFT2; break; } cItem& item2 = mItemArray[i2]; if( item2.mCount ) { unsigned short i3 = 0; if( FindEmptySlot( &i3, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 202 ) ); return false; } } } } return true; } bool cItemManager::TestEquipWeapon( unsigned short& i1, eItemEquip equipType ) { if( HERO->IsReadyUseSkill() == false ) { /// ½ºÅ³ µ¿ÀÛÁß Àåºñ±³Ã¼ ºÒ°¡ return false; } switch( equipType ) { case ITEM_EQUIP_ONE_HAND: if( TestEquipWeapon_OneHand( i1 ) == false ) return false; break; case ITEM_EQUIP_TWO_HANDS: if( TestEquipWeapon_TwoHands( i1 ) == false ) return false; break; case ITEM_EQUIP_SHIELD: if( TestEquipWeapon_Shield( i1 ) == false ) return false; break; default: assert( 0 && "invalid item equip type" ); return false; } return true; } bool cItemManager::TestEquipWeapon_OneHand( unsigned short& i1 ) { i1 = (unsigned short)(( mActiveWeapon == ItemActiveFront ) ? INVENTORY_HAND_RIGHT2 : INVENTORY_HAND_RIGHT1); return true; } bool cItemManager::TestEquipWeapon_TwoHands( unsigned short& i1 ) { unsigned short right = (unsigned short)(( mActiveWeapon == ItemActiveFront ) ? INVENTORY_HAND_RIGHT2 : INVENTORY_HAND_RIGHT1); unsigned short left = (unsigned short)(( mActiveWeapon == ItemActiveFront ) ? INVENTORY_HAND_LEFT2 : INVENTORY_HAND_LEFT1); i1 = right; cItem& item1 = mItemArray[right]; if( item1.mEquipType == ITEM_EQUIP_TWO_HANDS ) { /// °Á ³Ñ¾î°¨ } else if( item1.mCount ) { cItem& item2 = mItemArray[left]; if( item2.mCount ) { assert( item2.mEquipType == ITEM_EQUIP_SHIELD ); unsigned short i3 = 0; if( FindEmptySlot( &i3, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) return false; } } return true; } bool cItemManager::TestEquipWeapon_Shield( unsigned short& i1 ) { unsigned short right = (unsigned short)(( mActiveWeapon == ItemActiveFront ) ? INVENTORY_HAND_RIGHT2 : INVENTORY_HAND_RIGHT1); unsigned short left = (unsigned short)(( mActiveWeapon == ItemActiveFront ) ? INVENTORY_HAND_LEFT2 : INVENTORY_HAND_LEFT1); i1 = left; cItem& item1 = mItemArray[left]; cItem& item2 = mItemArray[right]; if( item2.mEquipType == ITEM_EQUIP_TWO_HANDS ) { } else if( item1.mCount ) { assert( item1.mEquipType == ITEM_EQUIP_SHIELD ); } return true; } bool cItemManager::TestEquipWear( unsigned short& i1, unsigned char subType ) { switch( subType ) { case ITEM_WEAR_HEAD: i1 = INVENTORY_WEAR_HAT; break; case ITEM_WEAR_UPPER: i1 = INVENTORY_WEAR_BODY1; break; case ITEM_WEAR_LOWER: i1 = INVENTORY_WEAR_BODY2; break; case ITEM_WEAR_HANDS: i1 = INVENTORY_WEAR_HAND; break; case ITEM_WEAR_FEET: i1 = INVENTORY_WEAR_FOOT; break; /*case ITEM_WEAR_ONEPIECE: break;*/ case ITEM_WEAR_COS_ONEPIECE: { // ÇÏÀÇ, ¼Õ, ¹ß cItem& item0 = mItemArray[INVENTORY_COSTUME_BODY2]; cItem& item1 = mItemArray[INVENTORY_COSTUME_HAND]; cItem& item2 = mItemArray[INVENTORY_COSTUME_FOOT]; unsigned int cnt = 0; if( item0.mCount > 0 ) cnt++; if( item1.mCount > 0 ) cnt++; if( item2.mCount > 0 ) cnt++; // if( cnt > 0 ) { // ºó½½·Ô üũ unsigned short emptySlot[3] = {0,}; if( FindEmptySlotArr( emptySlot, cnt, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 267 ) ); return false; } } i1 = INVENTORY_COSTUME_BODY1; } break; case ITEM_WEAR_COS_HEAD: i1 = INVENTORY_COSTUME_HAT; break; case ITEM_WEAR_COS_UPPER: i1 = INVENTORY_COSTUME_BODY1; break; case ITEM_WEAR_COS_LOWER: { cItem& item0 = mItemArray[INVENTORY_COSTUME_BODY1]; if( item0.mDefine && item0.mDefine->GetSubType() == ITEM_WEAR_COS_ONEPIECE ) { unsigned short slot = 0; if( FindEmptySlot( &slot, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 267 ) ); return false; } } i1 = INVENTORY_COSTUME_BODY2; } break; case ITEM_WEAR_COS_HANDS: { cItem& item0 = mItemArray[INVENTORY_COSTUME_BODY1]; if( item0.mDefine && item0.mDefine->GetSubType() == ITEM_WEAR_COS_ONEPIECE ) { unsigned short slot = 0; if( FindEmptySlot( &slot, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 267 ) ); return false; } } i1 = INVENTORY_COSTUME_HAND; } break; case ITEM_WEAR_COS_FEET: { cItem& item0 = mItemArray[INVENTORY_COSTUME_BODY1]; if( item0.mDefine && item0.mDefine->GetSubType() == ITEM_WEAR_COS_ONEPIECE ) { unsigned short slot = 0; if( FindEmptySlot( &slot, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 267 ) ); return false; } } i1 = INVENTORY_COSTUME_FOOT; } break; default: assert( 0 && "invalid wear item subtype" ); return false; } return true; } bool cItemManager::TestEquipAccessory( unsigned short& i1, unsigned char subType ) { switch( subType ) { case ITEM_ACCESSORY_EARRING: i1 = INVENTORY_WEAR_EARRING; break; case ITEM_ACCESSORY_NECKLACE: i1 = INVENTORY_WEAR_NECKLACE; break; case ITEM_ACCESSORY_BROOCH: i1 = INVENTORY_WEAR_BROOCH; break; case ITEM_ACCESSORY_BRACELET: i1 = INVENTORY_WEAR_BRACELET; break; case ITEM_ACCESSORY_RING: i1 = INVENTORY_WEAR_RING; break; case ITEM_ACCESSORY_COS_FACE: i1 = INVENTORY_COSTUME_FACE; break; case ITEM_ACCESSORY_COS_BACK: i1 = INVENTORY_COSTUME_BACK; break; default: assert( 0 && "invalid accessory item subtype" ); return false; } return true; } bool cItemManager::TestEquipCard( unsigned short& slotIndex1 ) { /// Ä«µå ½½·ÔÀÌ ¶Ô·Á ÀÖ´ÂÁö üũ unsigned short slotEndIndex = HERO->GetWearCardEndSlot(); if( slotEndIndex < INVENTORY_WEAR_RING || slotEndIndex > INVENTORY_WEAR_CARD3 ) { assert( 0 && "Bad slot index" ); return false; } /// ¶Õ·Á ÀÖ´Â Ä«µå ½½·ÔÀÌ ¾ø´Â °æ¿ì if( slotEndIndex == INVENTORY_WEAR_RING ) { ///¿¡·¯ Ãâ·Â CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 3100 ) ); return false; } else { /// ÇØ´ç ½½·Ô À妽º±îÁö ºñ¾îÀÖ´Â ½½·Ô¿¡ ÀåÂø cItem& item1 = mItemArray[INVENTORY_WEAR_CARD1]; cItem& item2 = mItemArray[INVENTORY_WEAR_CARD2]; cItem& item3 = mItemArray[INVENTORY_WEAR_CARD3]; if( item1.mCount == 0 && INVENTORY_WEAR_CARD1 <= slotEndIndex ) { slotIndex1 = INVENTORY_WEAR_CARD1; } else if( item2.mCount == 0 && INVENTORY_WEAR_CARD2 <= slotEndIndex ) { slotIndex1 = INVENTORY_WEAR_CARD2; } else if( item3.mCount == 0 && INVENTORY_WEAR_CARD3 <= slotEndIndex ) { slotIndex1 = INVENTORY_WEAR_CARD3; } else /// ÀÚ¸®¾øÀ¸¸é ù¹ø¤Š ½½·Ô ¸®ÅÏ { slotIndex1 = INVENTORY_WEAR_CARD1; } return true; } } /// Àκ¥Å丮 ³»ºÎ°¡ ¾Æ´Ï¸é Àý´ë µé¾î¿Ã¼ö ¾ø´Ù. bool cItemManager::TestUseItem( unsigned short slotIndex0 ) { cItem& item = mItemArray[slotIndex0]; cItemDefine* itemDefine = item.mDefine; if( itemDefine == 0 ) { assert(0); return false; } cItemAbility* itemAbil = itemDefine->GetAbililty(); if( itemAbil == 0 ) { assert(0); return false; } /// ÀÌ¹Ì ÄðŸÀÓ Àû¿ëÁßÀÎÁö °Ë»ç if( item.IsCoolTime() == true ) return false; /// Ÿ°Ù ŸÀÔ ºñ±³ const sObject* target = HERO->GetTargetInfo(); if( !target ) { assert(0); return false; } /// »ç¿ëŸÀÔÀÌ ÀÚ±âÀÚ½ÅÀ̸é if( itemAbil->GetTargetType() == ITEM_TARGET_MYSELF ) { return true; } /// »ç¿ëŸÀÔÀÌ ¸ó½ºÅÍÀ̸é else if( itemAbil->GetTargetType() == ITEM_TARGET_MONSTER ) { /// ŸÀÔÀÌ ¸ÂÀ½ if( target->type == eOBJECTTYPE_MONSTER ) { cBaseObject* pMonster = OBJECTMAN->GetObject( target->type, target->index ); if( pMonster ) { NiPoint3 monPos = pMonster->GetPos(); NiPoint3 heroPos = HERO->GetPos(); /// °Å¸® if( (short)(heroPos - monPos).Length() < itemAbil->GetUseRange() ) { return true; } else { /// °Å¸®¿À·ù CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 238 ) ); } } else { assert(0); } } else /// Ÿ°Ù¿À·ù CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 237 ) ); } /// ¹ü¿ëÀûÀÎ »ç¿ëŸÀÔ °Ë»ç ( ÀÚ±âÀڽŠ+ Ç÷¹À̾î = 5, ÀÚ±âÀڽŠ+ ÆÄƼ¿ø = 9...) else { if( itemAbil->GetTargetType() & ITEM_TARGET_MYSELF ) { if( target->type == eOBJECTTYPE_HERO ) return true; } if( itemAbil->GetTargetType() & ITEM_TARGET_PLAYER ) { if( target->type == eOBJECTTYPE_PLAYER ) { /// Ç÷¹À̾î´Â ÀÏÁ¤ °Å¸®¿¡ ÀÖÁö ¾ÊÀ¸¸é »ý¼ºµÇÁö ¾ÊÀ¸¹Ç·Î ¸Ê°Ë»ç´Â ÇÊ¿ä¾øÀ½. cBaseObject* pPlayer = OBJECTMAN->GetObject( target->type, target->index ); if( pPlayer ) { NiPoint3 playerPos = pPlayer->GetPos(); NiPoint3 heroPos = HERO->GetPos(); if( (short)(heroPos - playerPos).Length() < itemAbil->GetUseRange() ) return true; else CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 238 ) ); } else CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 238 ) ); } } if( itemAbil->GetTargetType() & ITEM_TARGET_PARTY ) { if( HERO->GetPartyIndex() > 0 || HERO->GetPartyUnionIndex() > 0 ) { /// hero °¡ ÆÄƼÁßÀ϶§ ´ë»óÀÌ ÆÄƼ¿øÀÎÁö °Ë»ç if( PARTYMAN->IsHeroParty( target->index ) == true || PARTYUNIONMAN->IsHeroParty( target->index ) == true ) { /// Ç÷¹À̾î´Â ÀÏÁ¤ °Å¸®¿¡ ÀÖÁö ¾ÊÀ¸¸é »ý¼ºµÇÁö ¾ÊÀ¸¹Ç·Î ¸Ê°Ë»ç´Â ÇÊ¿ä¾øÀ½. cBaseObject* pPlayer = OBJECTMAN->GetObject( target->type, target->index ); if( pPlayer ) { NiPoint3 playerPos = pPlayer->GetPos(); NiPoint3 heroPos = HERO->GetPos(); if( (short)(heroPos - playerPos).Length() < itemAbil->GetUseRange() ) return true; else CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 238 ) ); } else CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 238 ) ); } return true; } } } return false; } ///////////////////////////////////////////////////////////////////////////////////////////////////////// // ¾ÆÀÌÅÛ ³»¸®±â bool cItemManager::MoveItemDown( unsigned short i0, unsigned short i1 ) { cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; // i1 : ºó½½·Ô if( item1.mCount == 0 ) { item1 = item0; item0 = 0; } else { // i1 : Á¸Àç if( item1.mDefine ) { unsigned char type = item1.mDefine->GetType(); unsigned char subType = item1.mDefine->GetSubType(); switch( type ) { case ITEM_WEAPON: if( EquipWeapon( i1, i0, item1.mEquipType, item0.mEquipType ) == false ) // i1 ¿¡¼­ i0À¸·Î ÀåÂøµÊ return false; break; case ITEM_WEAR: if( EquipWear( i1, i0, subType ) == false ) return false; break; case ITEM_ACCESSORY: if( EquipAccessory( i1, i0, subType ) == false ) return false; break; case ITEM_CARD: if( subType == ITEM_CARD_EQUIP_C ) { if( EquipCard( i1, i0 ) == false ) return false; } break; } } } return true; } // ¾ÆÀÌÅÛ ÀåÂø bool cItemManager::MoveItemUp( unsigned short i0, unsigned short i1 ) { cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; if( item0.mDefine ) { unsigned char type = item0.mDefine->GetType(); unsigned char subType = item0.mDefine->GetSubType(); switch( type ) { case ITEM_WEAPON: if( EquipWeapon( i0, i1, item0.mEquipType, item1.mEquipType ) == false ) return false; break; case ITEM_WEAR: if( EquipWear( i0, i1, subType ) == false ) return false; break; case ITEM_ACCESSORY: if( EquipAccessory( i0, i1, subType ) == false ) return false; break; case ITEM_CARD: if( subType == ITEM_CARD_EQUIP_C ) { if( EquipCard( i0, i1 ) == false ) return false; } break; } } return true; } bool cItemManager::EquipWeapon( unsigned short i0, unsigned short i1, eItemEquip equip0, eItemEquip equip1 ) { unsigned short i2 = 0; switch( i1 ) { case INVENTORY_HAND_LEFT1: i2 = INVENTORY_HAND_RIGHT1; break; case INVENTORY_HAND_RIGHT1: i2 = INVENTORY_HAND_LEFT1; break; case INVENTORY_HAND_LEFT2: i2 = INVENTORY_HAND_RIGHT2; break; case INVENTORY_HAND_RIGHT2: i2 = INVENTORY_HAND_LEFT2; break; } switch( equip1 ) { case ITEM_EQUIP_NORMAL: { switch( equip0 ) { case ITEM_EQUIP_ONE_HAND: { cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; item1 = item0; item0 = 0; } break; case ITEM_EQUIP_TWO_HANDS: { // ¹æÆÐ °Ë»ç, ¾ç°Ë »ðÀÔ cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; cItem& item2 = mItemArray[i2]; if( item2.mEquipType == ITEM_EQUIP_SHIELD ) { unsigned short i3 = 0; if( FindEmptySlot( &i3, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { assert(0); CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 202 ) ); } // ¹æÆÐ ºó½½·Ô cItem& item3 = mItemArray[i3]; item3 = item2; item2 = 0; } // item1 = item0; item0 = 0; } break; case ITEM_EQUIP_SHIELD: { // ¾ç°Ë Âø¿ë °Ë»ç, ¹æÆÐ »ðÀÔ cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; cItem& item2 = mItemArray[i2]; if( item2.mEquipType == ITEM_EQUIP_TWO_HANDS ) { unsigned short i3 = 0; if( FindEmptySlot( &i3, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { assert(0); CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 202 ) ); } // ¾ç°Ë ºó½½·Ô cItem& item3 = mItemArray[i3]; item3 = item2; item2 = 0; } // item1 = item0; item0 = 0; } break; } } break; case ITEM_EQUIP_ONE_HAND: { switch( equip0 ) { case ITEM_EQUIP_ONE_HAND: // i1 ÇÑ°Ë i0 ÇÑ°Ë : ½º¿Ò { cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; cItem tempItem = item1; item1 = item0; item0 = tempItem; } break; case ITEM_EQUIP_TWO_HANDS: // i1 ÇÑ°Ë i0 ¾ç°Ë : ±âÁ¸ ¹æÆÐ Âø¿ë °Ë»ç, ¹æÆÐ´Â ºó½½·Ô ±×¸®°í ½º¿Ò { // ±âÁ¸ ¹æÆÐ Âø¿ë °Ë»ç cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; cItem& item2 = mItemArray[i2]; if( item2.mEquipType == ITEM_EQUIP_SHIELD ) { unsigned short i3 = 0; if( FindEmptySlot( &i3, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { assert(0); CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 202 ) ); } // ¹æÆÐ ºó½½·Ô cItem& item3 = mItemArray[i3]; item3 = item2; item2 = 0; } // ½º¿Ò cItem tempItem = item1; item1 = item0; item0 = tempItem; } break; case ITEM_EQUIP_SHIELD: // i1 ÇÑ°Ë i0 ¹æÆÐ : ¸®ÅÏ assert(0); break; } } break; case ITEM_EQUIP_TWO_HANDS: { switch( equip0 ) { case ITEM_EQUIP_ONE_HAND: // i1 ¾ç°Ë i0 ÇÑ°Ë : ½º¿Ò case ITEM_EQUIP_TWO_HANDS: // i1 ¾ç°Ë i0 ¾ç°Ë : ½º¿Ò { cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; cItem tempItem = item1; item1 = item0; item0 = tempItem; } break; case ITEM_EQUIP_SHIELD: // i1 ¾ç°Ë i0 ¹æÆÐ : ¾ç°Ë ºó½½·Ô, ¹æÆÐ »ðÀÔ assert(0); break; } } break; case ITEM_EQUIP_SHIELD: { switch( equip0 ) { case ITEM_EQUIP_ONE_HAND: // i1 ¹æÆÐ i0 ÇÑ°Ë : ¸®ÅÏ assert(0); break; case ITEM_EQUIP_TWO_HANDS: // i1 ¹æÆÐ i0 ¾ç°Ë : ¹æÆÐ ºó½½·Ô, ¾ç°Ë »ðÀÔ { cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; unsigned short i3 = 0; if( FindEmptySlot( &i3, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { assert(0); CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 202 ) ); } // ¹æÆÐ ºó½½·Ô cItem& item3 = mItemArray[i3]; item3 = item1; item1 = 0; // »ðÀÔ item1 = item0; item0 = 0; } break; case ITEM_EQUIP_SHIELD: // i1 ¹æÆÐ i0 ¹æÆÐ : ½º¿Ò { cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; cItem tempItem = item1; item1 = item0; item0 = tempItem; } break; } } break; } return true; } bool cItemManager::EquipCard( unsigned short i0, unsigned short i1 ) { cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; cItem tempItem = item1; item1 = item0; item0 = tempItem; return true; } bool cItemManager::EquipAccessory( unsigned short i0, unsigned short i1, unsigned char subType ) { // °ËÁõ unsigned short i = 0; switch( subType ) { case ITEM_ACCESSORY_EARRING: i = INVENTORY_WEAR_EARRING; break; case ITEM_ACCESSORY_NECKLACE: i = INVENTORY_WEAR_NECKLACE; break; case ITEM_ACCESSORY_BROOCH: i = INVENTORY_WEAR_BROOCH; break; case ITEM_ACCESSORY_BRACELET: i = INVENTORY_WEAR_BRACELET; break; case ITEM_ACCESSORY_RING: i = INVENTORY_WEAR_RING; break; case ITEM_ACCESSORY_COS_FACE: i = INVENTORY_COSTUME_FACE; break; case ITEM_ACCESSORY_COS_BACK: i = INVENTORY_COSTUME_BACK; break; default: assert( 0 && "invalid accessory item subtype" ); } // if( i != i1 ) { assert( 0 && "invalid accessory item subtype" ); } cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; cItem tempItem = item1; item1 = item0; item0 = tempItem; return true; } bool cItemManager::EquipWear( unsigned short i0, unsigned short i1, unsigned char subType ) { if( subType == ITEM_WEAR_COS_ONEPIECE ) { // Àκ¥ ¿øÇǽº ½½·Ô cItem& item0 = mItemArray[i1]; // »óÀÇ, ÇÏÀÇ, ¼Õ, ¹ß cItem& item1 = mItemArray[INVENTORY_COSTUME_BODY1]; cItem& item2 = mItemArray[INVENTORY_COSTUME_BODY2]; cItem& item3 = mItemArray[INVENTORY_COSTUME_HAND]; cItem& item4 = mItemArray[INVENTORY_COSTUME_FOOT]; // ÀÌ¹Ì Âø¿ë½Ã if( item1.mCount ) { // üÀÎÁö cItem temp = item0; item0 = item1; item1 = temp; } else { // ¹ÌÂø¿ë½Ã item1 = item0; item0 = 0; } // ÇÏÀÇ if( item2.mCount ) { unsigned short i2 = 0; if( FindEmptySlot( &i2, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 202 ) ); return false; } // cItem& temp2 = mItemArray[i2]; temp2 = item2; item2 = 0; } // ¼Õ if( item3.mCount ) { unsigned short i3 = 0; if( FindEmptySlot( &i3, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 202 ) ); return false; } // cItem& temp3 = mItemArray[i3]; temp3 = item3; item3 = 0; } // ¹ß if( item4.mCount ) { unsigned short i4 = 0; if( FindEmptySlot( &i4, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 202 ) ); return false; } // cItem& temp4 = mItemArray[i4]; temp4 = item4; item4 = 0; } } else { switch( subType ) { case ITEM_WEAR_COS_LOWER: { cItem& item0 = mItemArray[INVENTORY_COSTUME_BODY1]; if( item0.mDefine && item0.mDefine->GetSubType() == ITEM_WEAR_COS_ONEPIECE ) { unsigned short slot = 0; if( FindEmptySlot( &slot, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 267 ) ); return false; } cItem& temp = mItemArray[slot]; temp = item0; item0 = 0; } } break; case ITEM_WEAR_COS_HANDS: { cItem& item0 = mItemArray[INVENTORY_COSTUME_BODY1]; if( item0.mDefine && item0.mDefine->GetSubType() == ITEM_WEAR_COS_ONEPIECE ) { unsigned short slot = 0; if( FindEmptySlot( &slot, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 267 ) ); return false; } cItem& temp = mItemArray[slot]; temp = item0; item0 = 0; } CheckItemSlot( INVENTORY_COSTUME_HAND ); } break; case ITEM_WEAR_COS_FEET: { cItem& item0 = mItemArray[INVENTORY_COSTUME_BODY1]; if( item0.mDefine && item0.mDefine->GetSubType() == ITEM_WEAR_COS_ONEPIECE ) { unsigned short slot = 0; if( FindEmptySlot( &slot, INVENTORY_BAG0_BEGIN, HERO->GetBagEndSlot() ) == false ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 267 ) ); return false; } cItem& temp = mItemArray[slot]; temp = item0; item0 = 0; } } break; } } cItem& item0 = mItemArray[i0]; cItem& item1 = mItemArray[i1]; item1.SetTwoHanded( false ); cItem tempItem = item1; item1 = item0; item0 = tempItem; return true; }