Пример #1
0
bool Container::viewItemNr(TYPE_OF_CONTAINERSLOTS nr, ScriptItem &item, Container *&cc) {
    auto it = items.find(nr);

    if (it != items.end()) {
        item = it->second;
        item.type = ScriptItem::it_container;
        item.itempos = nr;
        item.inside = this;

        if (item.isContainer()) {
            auto iterat = containers.find(nr);

            if (iterat != containers.end()) {
                cc = iterat->second;
            } else {
                cc = new Container(item.getId());
            }
        } else {
            cc = nullptr;
        }

        return true;
    } else {
        items.erase(nr);
        cc = nullptr;
        return false;
    }
}
Пример #2
0
void Container::addContentToList(std::vector<ScriptItem> &list) {
    for (auto it = items.begin(); it != items.end(); ++it) {

        ScriptItem item = it->second;
        item.type = ScriptItem::it_container;
        item.itempos = it->first;
        item.inside = this;
        list.push_back(item);

        if (item.isContainer()) {
            auto iterat = containers.find(it->first);

            if (iterat != containers.end()) {
                iterat->second->addContentToList(list);
            }
        }

    }
}