Exemplo n.º 1
0
/*!
 Adds new item block to model
 Use in cases when inserting / appending an adjacent block of items
 \param itemsList list of adjacent items
 */
void CaItemModelPrivate::addItemBlock(const QList<int> &itemsList)
{
    CACLIENTTEST_FUNC_ENTRY("CaItemModelPrivate::addItemBlock");
    if (!itemsList.isEmpty()) {
        int firstRow = itemRow(itemsList.first());
        int lastRow = itemRow(itemsList.last());
        m_q->beginInsertRows(QModelIndex(), firstRow, lastRow);
        for (int i = 0; i < itemsList.count(); ++i) {
            mEntries.insert(firstRow + i, itemsList.at(i));
        }
        m_q->endInsertRows();
        emit m_q->scrollTo(firstRow, QAbstractItemView::PositionAtTop);
    }
    CACLIENTTEST_FUNC_EXIT("CaItemModelPrivate::addItemBlock");
}
Exemplo n.º 2
0
void DiamondBuyData::MakeComEffectx()
{
    auto diamondTableList = CfgData::getInstance()->GetCfgTableId("DiamondItem");
    int cfgId = 0;
    for (auto iter = diamondTableList->begin(); iter != diamondTableList->end(); ++iter)
    {
        cfgId = *iter;
        CfgDataRow itemRow(cfgId);
        if (itemRow.GetValue(CfgField::GenericID)->asInt() != 1) continue;  // 非进度通用
        if (GetDiamondData(cfgId)->asInt() != 1) continue;                  // 还未购买
        
        // 检查其功能有没生效
        auto functionMap = itemRow.GetValue(CfgField::FunctionID_M)->asIntMultiKeyMap();
        auto numVector = itemRow.GetValue(CfgField::Numbe_V)->asValueVector();
        int idx = 0;
        for (auto iter = functionMap.begin(); iter != functionMap.end(); ++iter) {
            int itemID = iter->second.asInt();
            int addNum = numVector[idx++].asInt();
            switch (iter->first) {
                case 100700010:     // 解锁地图
                {
                    auto checkIter = UserData::getInstance()->Get_MVI_Value(UserDataEnum::ExploreMaps, itemID);
                    if (checkIter == Value::Null) {
                        UserData::getInstance()->Update_VMI_Fun(UserDataEnum::ExploreMaps, itemID, 0);
                    }
                }
                    break;
                case 100700011:     // 获得建筑
                {
                    auto checkIter = UserData::getInstance()->Get_MVI_Value(UserDataEnum::MakeBuild, itemID);
                    if (checkIter == Value::Null) {
                        UserData::getInstance()->Update_VMI_Fun(UserDataEnum::MakeBuild, itemID, (int)MakeBuildUI::MakeBuildStatus::MakeFinish, true);
                    }
                }
                    break;
                case 100700012:     // 获得科技
                {
                    bool checkBool = UserData::getInstance()->Check_VI_Fun(UserDataEnum::TalentList, Value(itemID));
                    if (!checkBool) {
                        UserData::getInstance()->Add_VI_Fun(UserDataEnum::TalentList, itemID);
                        CfgDataRow talentDataRow(itemID);
                        auto langId = talentDataRow.GetValue(CfgField::Schedule)->asInt();
                        auto langText = MultiLanguage::getInstance()->GetText(langId);
                        MsgListNode::getInstance()->NewMsg( langText );
                        AchievementSystem::getInstance()->CheckAchievement(UserEventType::StudyTalent, itemID);
                    }
                }
                    break;
                case 100700013:     // 增加离线生产时间
                {
                    ProductionItem::getInstance()->setMaxSleepProductionTime(addNum);
                }
                    break;
                default:
                    break;
            }
        }
        
    }
}
Exemplo n.º 3
0
void DiamondBuyData::init()
{
    bool isSave = false;
    if (m_DiamondDataVm == nullptr) {
        m_DiamondDataVm = new (std::nothrow) ValueMap();
    }
    
    auto diamondTableList = CfgData::getInstance()->GetCfgTableId("DiamondItem");
    int cfgId = 0;
    for (auto iter = diamondTableList->begin(); iter != diamondTableList->end(); ++iter)
    {
        /*  进度通用性与类型:
                    1 - int(进度通用则存储是否购买, 1为已购买,0为未购买)
                    0 - map(进度不可通用则存储map,[进度, 购买次数],进度:1或2或3)
         */
        cfgId = *iter;
        if (GetDiamondData(cfgId) == nullptr) {
            CfgDataRow itemRow(cfgId);
            if (itemRow.GetValue(CfgField::GenericID)->asInt() == 1) {
                m_DiamondDataVm->insert(pair<string, Value>(StringUtils::format("%d", *iter), Value(0)));
            }
            else {
                m_DiamondDataVm->insert(pair<string, Value>(StringUtils::format("%d", *iter), Value(ValueMap())));
            }
            
            isSave = true;
        }
    }
    
    if (isSave) SaveDiamondData();
}
Exemplo n.º 4
0
bool HoldBuildUI::IsSaveBag(int itemId)
{
    CfgDataRow itemRow(itemId);
    // 是否占据格子
    bool isOty = itemRow.GetValue(CfgField::NonSpace)->asInt() == 1;
    bool result = false;
    auto nowNum = GetBagItemNum();
    auto bag_maxNum = UserData::getInstance()->GetUserData(UserDataEnum::BackPackMaxNum)->asInt();
    if(nowNum < bag_maxNum || !isOty)
    {
        auto iter = m_BagItem->begin();
        while (iter != m_BagItem->end())
        {
            if(iter->first == itemId) break;
            iter ++;
        }
        
        if( iter == m_BagItem->end())
        {
            m_BagItem->push_back(pair<int, int>( itemId, 1));
        }else
        {
            iter->second += 1;
        }
        result = true;
    }
    return result;
}
Exemplo n.º 5
0
/*!
 Adds new item to model
 \param id id of item to add
 */
void CaItemModelPrivate::addItem(int id)
{
    CACLIENTTEST_FUNC_ENTRY("CaItemModelPrivate::addItem");

    int row = itemRow(id);
    //we use beginInsertRows and endInsertRows to emit proper signal
    //(see Qt documentation of QAbstractItemModel)
    if (mEntries.indexOf(id) < 0 && row >= 0) {
        if (row > mEntries.count()) {
        	m_q->beginInsertRows(QModelIndex(), mEntries.count(), mEntries.count());
        	mEntries.insert(mEntries.count(), id);
        } else {
			m_q->beginInsertRows(QModelIndex(), row , row);
        	mEntries.insert(row, id);
        }
        m_q->endInsertRows();
    } else if (row == -1) {
        //we udpade whole model because we do not know parent collecion for given item
        updateModel();
    }
    CACLIENTTEST_FUNC_EXIT("CaItemModelPrivate::addItem");
}