Пример #1
0
void Inventory::setItem(int index, int id, int quantity,
                        int refine, unsigned char color, bool equipment)
{
    if (index < 0 || index >= static_cast<int>(mSize))
    {
        logger->log("Warning: invalid inventory index: %d", index);
        return;
    }

    if (!mItems[index] && id > 0)
    {
        Item *item = new Item(id, quantity, refine, color, equipment);
        item->setInvIndex(index);
        mItems[index] = item;
        mUsed++;
        distributeSlotsChangedEvent();
    }
    else if (id > 0 && mItems[index])
    {
        mItems[index]->setId(id, color);
        mItems[index]->setQuantity(quantity);
        mItems[index]->setRefine(refine);
        mItems[index]->setEquipment(equipment);
    }
    else if (mItems[index])
    {
        removeItemAt(index);
    }
}
Пример #2
0
void Inventory::setItem(int index, int id, int quantity)
{
    if (index < 0 || index >= mSize)
    {
        logger->log("Warning: invalid inventory index: %d", index);
        return;
    }

    if (!mItems[index] && id > 0)
    {
        Item *item = new Item(id, quantity);
        item->setInvIndex(index);
        mItems[index] = item;
        mUsed++;
        distributeSlotsChangedEvent();
    }
    else if (id > 0)
    {
        mItems[index]->setId(id);
        mItems[index]->setQuantity(quantity);
    }
    else if (mItems[index])
    {
        removeItemAt(index);
    }
}
Пример #3
0
void Inventory::removeItemAt(int index)
{
    delete mItems[index];
    mItems[index] = 0;
    if (mUsed > 0) {
        mUsed--;
        distributeSlotsChangedEvent();
    }
}
Пример #4
0
void Inventory::removeItemAt(const int index)
{
    delete2(mItems[index]);
    mUsed--;
    if (mUsed < 0)  // Already at 0, no need to distribute event
        mUsed = 0;
    else
        distributeSlotsChangedEvent();
}
Пример #5
0
void ComplexInventory::setItem(const int index,
                               const int id,
                               const ItemTypeT type,
                               const int quantity,
                               const uint8_t refine,
                               const ItemColor color,
                               const Identified identified,
                               const Damaged damaged,
                               const Favorite favorite,
                               const Equipm equipment,
                               const Equipped equipped)
{
    if (index < 0 || index >= CAST_S32(mSize))
    {
        logger->log("Warning: invalid inventory index: %d", index);
        return;
    }

    const Item *const item1 = mItems[index];
    if ((item1 == nullptr) && id > 0)
    {
        ComplexItem *const item = new ComplexItem(id,
            type,
            quantity,
            refine,
            color,
            identified,
            damaged,
            favorite,
            equipment,
            equipped);
        item->setInvIndex(index);

        Item *const item2 = new Item(id,
            type,
            quantity,
            refine,
            color,
            identified,
            damaged,
            favorite,
            equipment,
            equipped);
        item2->setInvIndex(index);
        item->addChild(item2, quantity);
        delete item2;

        mItems[index] = item;
        mUsed ++;
        distributeSlotsChangedEvent();
    }
}
Пример #6
0
void Inventory::setItem(const int index,
                        const int id,
                        const ItemTypeT type,
                        const int quantity,
                        const uint8_t refine,
                        const ItemColor color,
                        const Identified identified,
                        const Damaged damaged,
                        const Favorite favorite,
                        const Equipm equipment,
                        const Equipped equipped)
{
    if (index < 0 || index >= CAST_S32(mSize))
    {
        reportAlways("Warning: invalid inventory index: %d",
            index);
        return;
    }

    Item *const item1 = mItems[index];
    if ((item1 == nullptr) && id > 0)
    {
        Item *const item = new Item(id,
            type,
            quantity,
            refine,
            color,
            identified,
            damaged,
            favorite,
            equipment,
            equipped);
        item->setInvIndex(index);
        mItems[index] = item;
        mUsed++;
        distributeSlotsChangedEvent();
    }
    else if (id > 0 && (item1 != nullptr))
    {
        item1->setId(id, color);
        item1->setQuantity(quantity);
        item1->setRefine(refine);
        item1->setEquipment(equipment);
        item1->setIdentified(identified);
        item1->setDamaged(damaged);
        item1->setFavorite(favorite);
    }
    else if (item1 != nullptr)
    {
        removeItemAt(index);
    }
}
Пример #7
0
void Inventory::setItem(const int index,
                        const int id,
                        const int type,
                        const int quantity,
                        const uint8_t refine,
                        const ItemColor color,
                        const Identified identified,
                        const Damaged damaged,
                        const Favorite favorite,
                        const Equipm equipment,
                        const Equipped equipped)
{
    if (index < 0 || index >= static_cast<int>(mSize))
    {
        logger->log("Warning: invalid inventory index: %d", index);
        return;
    }

    Item *const item1 = mItems[index];
    if (!item1 && id > 0)
    {
        Item *const item = new Item(id, type, quantity, refine, color,
            identified, damaged, favorite, equipment, equipped);
        item->setInvIndex(index);
        mItems[index] = item;
        mUsed++;
        distributeSlotsChangedEvent();
    }
    else if (id > 0 && item1)
    {
        item1->setId(id, color);
        item1->setQuantity(quantity);
        item1->setRefine(refine);
        item1->setEquipment(equipment);
        item1->setIdentified(identified);
        item1->setDamaged(damaged);
        item1->setFavorite(favorite);
    }
    else if (item1)
    {
        removeItemAt(index);
    }
}
Пример #8
0
void Inventory::moveItem(const int index1,
                         const int index2)
{
    if (index1 < 0 ||
        index1 >= CAST_S32(mSize) ||
        index2 < 0 ||
        index2 >= CAST_S32(mSize))
    {
        return;
    }

    Item *const item1 = mItems[index1];
    Item *const item2 = mItems[index2];
    if (item1 != nullptr)
        item1->setInvIndex(index2);
    if (item2 != nullptr)
        item2->setInvIndex(index1);
    mItems[index1] = item2;
    mItems[index2] = item1;
    distributeSlotsChangedEvent();
}