예제 #1
0
파일: Item.cpp 프로젝트: Bootz/SF1
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;
    }
}
예제 #2
0
파일: Item.cpp 프로젝트: Splash/mangos
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;
    }
}
예제 #3
0
파일: Item.cpp 프로젝트: boom8866/new
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;
    }
}