void UpdateActionItem( INT8 bActionItemIndex ) { gbActionItemIndex = bActionItemIndex; //used for future new actionitems as the default. if( !gpItemPool || !gpItem ) return; //If the previous item was a pit, remove it before changing it if( gpItem->usItem == ACTION_ITEM ) { if( gpItem->bActionValue == ACTION_ITEM_SMALL_PIT ) Remove3X3Pit( gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); else if( gpItem->bActionValue == ACTION_ITEM_LARGE_PIT ) Remove5X5Pit( gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); } ChangeActionItem( gpItem, gbActionItemIndex ); SpecifyButtonText( guiActionItemButton, GetActionItemName( gpItem ) ); //If the new item is a pit, add it so we can see how it looks. if( gpItem->usItem == ACTION_ITEM ) { if( gpItem->bActionValue == ACTION_ITEM_SMALL_PIT ) Add3X3Pit( gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); else if( gpItem->bActionValue == ACTION_ITEM_LARGE_PIT ) Add5X5Pit( gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); } }
void RemoveAllPits() { UINT32 i; for( i = 0; i < guiNumWorldItems; i++ ) { if( gWorldItems[ i ].o.usItem == ACTION_ITEM ) { if( gWorldItems[ i ].o.bActionValue == ACTION_ITEM_SMALL_PIT ) Remove3X3Pit( gWorldItems[ i ].sGridNo ); else if( gWorldItems[ i ].o.bActionValue == ACTION_ITEM_LARGE_PIT ) Remove5X5Pit( gWorldItems[ i ].sGridNo ); } } }
void DeleteSelectedItem() { SpecifyItemToEdit( NULL, -1 ); //First, check to see if there even is a currently selected item. if( iCurrentTaskbar == TASK_MERCS ) { DeleteSelectedMercsItem(); return; } if( gpItemPool ) { //Okay, we have a selected item... INT32 sGridNo; //save the mapindex if( gpItemPool->pNext ) { SpecifyItemToEdit( &gWorldItems[ gpItemPool->pNext->iItemIndex ].object, gpItemPool->sGridNo ); } sGridNo = gpItemPool->sGridNo; //remove the item if( gWorldItems[ gpItemPool->iItemIndex ].object.usItem == ACTION_ITEM ) { if( gWorldItems[ gpItemPool->iItemIndex ].object[0]->data.misc.bActionValue == ACTION_ITEM_SMALL_PIT ) Remove3X3Pit( gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); else if( gWorldItems[ gpItemPool->iItemIndex ].object[0]->data.misc.bActionValue == ACTION_ITEM_LARGE_PIT ) Remove5X5Pit( gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); } if( gpEditingItemPool == gpItemPool ) gpEditingItemPool = NULL; RemoveItemFromPool( sGridNo, gpItemPool->iItemIndex, 0 ); gpItemPool = NULL; //determine if there are still any items at this location if( !GetItemPoolFromGround( sGridNo, &gpItemPool ) ) { //no items left, so remove the node from the list. IPListNode *pIPPrev, *pIPCurr; pIPCurr = pIPHead; pIPPrev = NULL; while( pIPCurr ) { if( pIPCurr->sGridNo == sGridNo ) { if( pIPPrev ) //middle of list pIPPrev->next = pIPCurr->next; else //head of list pIPHead = pIPHead->next; //move the curr item pool to the next one. if( pIPCurr->next ) gpCurrItemPoolNode = pIPCurr->next; else gpCurrItemPoolNode = pIPHead; if( gpCurrItemPoolNode ) { GetItemPoolFromGround( gpCurrItemPoolNode->sGridNo, &gpItemPool ); Assert( gpItemPool ); } //remove node HideItemCursor( sGridNo ); MemFree( pIPCurr ); pIPCurr = NULL; return; } pIPPrev = pIPCurr; pIPCurr = pIPCurr->next; } } } }