void Item::SetState(ItemUpdateState state, Player *forplayer) { if (uState == ITEM_NEW && state == ITEM_REMOVED) { // pretend the item never existed RemoveFromUpdateQueueOf(forplayer); delete this; return; } if (state != ITEM_UNCHANGED) { // new items must stay in new state until saved if (uState != ITEM_NEW) uState = state; AddToUpdateQueueOf(forplayer); } else { // unset in queue // the item must be removed from the queue manually uQueuePos = -1; uState = ITEM_UNCHANGED; } }
void Item::SetState(ItemUpdateState state, Player* forPlayer) { if (m_state == ITEM_NEW && state == ITEM_REMOVED) { // pretend the item never existed if (forPlayer || GetOwnerGuid()) RemoveFromUpdateQueueOf(forPlayer); if (forPlayer) forPlayer->RemoveItemWithTimeCheck(GetGUIDLow()); delete this; return; } if (state != ITEM_UNCHANGED) { // new items must stay in new state until saved if (m_state != ITEM_NEW) m_state = state; if (forPlayer || GetOwnerGuid()) AddToUpdateQueueOf(forPlayer); } else { // unset in queue // the item must be removed from the queue manually m_queuePos = -1; m_state = ITEM_UNCHANGED; } }
void Item::SetState(ItemUpdateState state, Player* forplayer) { if (uState == ITEM_NEW && state == ITEM_REMOVED) { RemoveFromUpdateQueueOf(forplayer); forplayer->DeleteRefundReference(GetGUIDLow()); delete this; return; } if (state != ITEM_UNCHANGED) { if (uState != ITEM_NEW) uState = state; AddToUpdateQueueOf(forplayer); } else { uQueuePos = -1; uState = ITEM_UNCHANGED; } }