void UnLockSystem::LoadUnLockData()
{
    int32_t unlockEventId;
    
    const ValueMapIntKey* cfgRowData;
    
    //      事件Id     触发条件       获取结果
    tuple<uint32_t, ValueMapIntMultiKey, ValueMapIntMultiKey> tupleData;
    
    const vector<uint32_t>* vi = CfgData::getInstance()->GetCfgTableId("UnlockEvent");
    ValueVector* vv = &UserData::getInstance()->GetUserData(UserDataEnum::UnLockIdList)->asValueVector();
    
    vector<tuple<uint32_t, ValueMapIntMultiKey, ValueMapIntMultiKey>>* eventData;
    vector<tuple<uint32_t, ValueMapIntMultiKey, ValueMapIntMultiKey>>* getItemEvent = &sm_UnLockData->at((int)UserEventType::GetItemEvent);
    vector<tuple<uint32_t, ValueMapIntMultiKey, ValueMapIntMultiKey>>* makeBuildEvent = &sm_UnLockData->at((int)UserEventType::MakeBuildEvent);
    vector<tuple<uint32_t, ValueMapIntMultiKey, ValueMapIntMultiKey>>* goToNewMapEvent = &sm_UnLockData->at((int)UserEventType::GoToNewMapEvent);
    vector<tuple<uint32_t, ValueMapIntMultiKey, ValueMapIntMultiKey>>* captureBuildEvent = &sm_UnLockData->at((int)UserEventType::CaptureBuildEvent);
    
    
    for (auto vi_iter = vi->begin(); vi_iter != vi->end(); vi_iter++)
    {
        unlockEventId = *vi_iter;
        if(find(vv->begin(), vv->end(), Value(unlockEventId)) == vv->end())
        {
            eventData = nullptr;
            switch (unlockEventId / 1000)
            {
                case 300001:
                    eventData = makeBuildEvent;
                    break;
                case 300002:
                    eventData = getItemEvent;
                    break;
                case 300003:
                    eventData = captureBuildEvent;
                    break;
                case 300004:
                    eventData = goToNewMapEvent;
                    break;
                    
                default:
                    break;
            }
            
            if (eventData != nullptr)
            {
                cfgRowData = CfgData::getInstance()->GetCfgRow(unlockEventId);
                if (cfgRowData == nullptr)  continue;
                tupleData = make_tuple(unlockEventId, cfgRowData->at((int)CfgField::TriggerID_M).asIntMultiKeyMap(),
                                       cfgRowData->at((int)CfgField::FunctionID_M).asIntMultiKeyMap());
                
                eventData->push_back(tupleData);
                CfgData::getInstance()->DeleteCfgId(unlockEventId);
            }
            
        }
    }

}
Exemple #2
0
bool UIHeroDetailLayer::loadRepoEquips( eEquipType type, int page_index ) {
    this->setSelectedRepoCell( nullptr );
    if( page_index >= 0 ) {
        int start_index = 6 * page_index;
        ValueVector data = PlayerInfo::getInstance()->getEquipsByRange( (int)type, start_index, 7, 2 );
        
        if( _current_equip_list->getPages().size() <= page_index ) {
            ui::Layout* new_page = ui::Layout::create();
            _current_equip_list->addPage( new_page );
        }
        ui::Layout* page = _current_equip_list->getPages().at( page_index );
        page->removeAllChildren();
        
        if( data.size() > 0 ) {
            int i = 0;
            for( auto itr = data.begin(); itr != data.end(); ++itr ) {
                UIEquipmentCell* cell = UIEquipmentCell::create( itr->asValueMap(), "ui_detail_icon01.png" );
                Point cell_pos = Point::ZERO;
                switch( i ) {
                    case 0:
                        cell_pos = Point( 120, 250 );
                        break;
                    case 1:
                        cell_pos = Point( 315, 250 );
                        break;
                    case 2:
                        cell_pos = Point( 510, 250 );
                        break;
                    case 3:
                        cell_pos = Point( 120, 90 );
                        break;
                    case 4:
                        cell_pos = Point( 315, 90 );
                        break;
                    case 5:
                        cell_pos = Point( 510, 90 );
                        break;
                    default:
                        break;
                }
                cell->setPosition( cell_pos );
                page->addChild( cell );
                if( ++i >= 6 ) {
                    break;
                }
            }
        }
        
        _btn_prev->setVisible( start_index > 0 );
        _btn_next->setVisible( data.size() == 7 );
        
        return true;
    }

    return false;
}
void ShapeCacher::addShapesWithDictionary(ValueMap &dictionary, PhysicsBody *body)
{
	//decode the plist file
	int format = 0;
	// get the format
	if (dictionary.find("metadata") != dictionary.end())
	{
		ValueMap& metadataDict = dictionary["metadata"].asValueMap();
		format = metadataDict["format"].asInt();
	}
	// check the format
	CCASSERT(format == 1, "format is not supported for #addShapesWithDictionary#:");

	ValueMap& bodyDict = dictionary["bodies"].asValueMap();

	for (auto iter = bodyDict.begin(); iter != bodyDict.end(); ++iter)
	{
		ValueMap& dataDict = iter->second.asValueMap();

		/****************not used yet!***********************/
		//set anchorpoint	
		//Point anchorPoint = PointFromString(dataDict["anchorpoint"].asString());
	
		ValueVector& fixtureVector = dataDict["fixtures"].asValueVector();

		for (auto iter = fixtureVector.begin(); iter != fixtureVector.end(); ++iter)
		{
			ValueMap& fixtureDict =(ValueMap&)(*iter).asValueMap();

			/****************not used yet!***********************/

			/* //body->setCategoryBitmask(fixtureDict["filter_categoryBits"].asInt);
			/* //body->setCollisionBitmask(fixtureDict["filter_maskBits"].asInt);
			/* //body->setGroup(fixtureDict["filter_groupIndex"].asInt);

			/* //float friction    = fixtureDict["friction"].asFloat;
			/* //float density     = fixtureDict["density"].asFloat;
			/* //float restitution = fixtureDict["restitution"].asFloat;
			/* //int   isSensor    = fixtureDict["isSensor"].asInt;
			/* //std::string userdata = fixtureDict["userdataCbValue"].asString;
			/* 
			/* //std::string fixtureType = fixtureDict["fixture_type"].asString();
			/* 
			/* if (fixtureType == "POLYGON") 
			{*/
			/****************not used yet!***********************/
			ValueVector& polygonsVector = (fixtureDict["polygons"].asValueVector());

			for (auto iter = polygonsVector.begin(); iter != polygonsVector.end(); ++iter) 
			{
				int vertexNum = (*iter).asValueVector().size();;
				ValueVector polygonArray = (*iter).asValueVector();
				Point *polyVertex = new Point[vertexNum];
				int i = 0;
				for (auto piter = polygonArray.begin(); piter != polygonArray.end(), i < vertexNum; ++piter ,i++)
				{
					Point vertex = PointFromString((*piter).asString());
					polyVertex[i] = vertex;
				}
				body->addShape(PhysicsShapePolygon::create(polyVertex, vertexNum));
				CC_SAFE_DELETE_ARRAY(polyVertex);
			}

		}
		//	else if (fixtureType == "CIRCLE") 
		//	{

		//		continue;
		//		//ObjectDict *circleData = (ObjectDict *)fixtureData->objectForKey("circle");

		//		//b2CircleShape *circleShape = new b2CircleShape();

		//		//circleShape->m_radius = static_cast<CCString *>(circleData->objectForKey("radius"))->toFloat() / ptmRatio;
		//		//CCPoint p = CCPointFromString(static_cast<CCString *>(circleData->objectForKey("position"))->toStdString().c_str());
		//		//circleShape->m_p = b2Vec2(p.x / ptmRatio, p.y / ptmRatio);
		//		//fix->fixture.shape = circleShape;

		//		//// create a list
		//		//*nextFixtureDef = fix;
		//		//nextFixtureDef = &(fix->next);

		//	}
		//	else 
		//	{
		//		CCAssert(0, "Unknown fixtureType");
		//	}
		//}
	}
}
Exemple #4
0
static jobject ValueVector2SFSArray(JNIEnv* env, const ValueVector& valueVector, jobject javaObj)
{
    jclass cls = env->GetObjectClass(javaObj);
    if (!cls) return javaObj;

    for (auto it = valueVector.begin(); it != valueVector.end(); ++it)
    {
        if (it->getType() == Value::Type::BYTE)
        {
            jmethodID mid = env->GetMethodID(cls, "addByte", "(B)V");
            if (mid) env->CallVoidMethod(javaObj, mid, it->asByte());
        }
        else if (it->getType() == Value::Type::INTEGER)
        {
            jmethodID mid = env->GetMethodID(cls, "addInt", "(I)V");
            if (mid) env->CallVoidMethod(javaObj, mid, it->asInt());
        }
        else if (it->getType() == Value::Type::FLOAT)
        {
            jmethodID mid = env->GetMethodID(cls, "addFloat", "(F)V");
            if (mid) env->CallVoidMethod(javaObj, mid, it->asFloat());
        }
        else if (it->getType() == Value::Type::DOUBLE)
        {
            jmethodID mid = env->GetMethodID(cls, "addFloat", "(F)V");
            if (mid) env->CallVoidMethod(javaObj, mid, it->asDouble());
        }
        else if (it->getType() == Value::Type::BOOLEAN)
        {
            jmethodID mid = env->GetMethodID(cls, "addBool", "(Z)V");
            if (mid) env->CallVoidMethod(javaObj, mid, it->asBool());
        }
        else if (it->getType() == Value::Type::STRING)
        {
            jmethodID mid = env->GetMethodID(cls, "addUtfString", "(Ljava/lang/String;)V");
            if (mid)
            {
                jobject javaValue = env->NewStringUTF(it->asString().c_str());
                env->CallVoidMethod(javaObj, mid, javaValue);
                env->DeleteLocalRef(javaValue);
            }
        }
        else if (it->getType() == Value::Type::VECTOR)
        {
            jmethodID mid = env->GetMethodID(cls, "addSFSArray", "(Lcom/smartfoxserver/v2/entities/data/ISFSArray;)V");
            if (mid)
            {
                jobject javaSFSArray = getSFSArray(env);
                jobject javaValue = ValueVector2SFSArray(env, it->asValueVector(), javaSFSArray);
                env->CallVoidMethod(javaObj, mid, javaValue);
                env->DeleteLocalRef(javaValue);
            }
        }
        else if (it->getType() == Value::Type::MAP)
        {
            jmethodID mid = env->GetMethodID(cls, "addSFSObject", "(Lcom/smartfoxserver/v2/entities/data/ISFSObject;)V");
            if (mid)
            {
                jobject sub_obj = getSFSObject(env);
                jobject javaValue = ValueMap2SFSObject(env, it->asValueMap(), sub_obj);
                env->CallVoidMethod(javaObj, mid, javaValue);
                env->DeleteLocalRef(javaValue);
            }
        }
        else if (it->getType() == Value::Type::INT_KEY_MAP)
        {

        }
    }
    env->DeleteLocalRef(cls);

    return javaObj;
}
Exemple #5
0
    bool runOnFunction(Function &F) override {
    	AliasAnalysis AA = getAnalysis<AliasAnalysis>();
        DependenceAnalysis *DA = &(getAnalysis<DependenceAnalysis>());
        // iterate over basic blocks
        Function *func = &F;
        unsigned bb_num = 0;
        for (Function::iterator BB = func->begin(), BE = func->end();
       BB != BE; ++BB) {
        	errs() << "BB-" << bb_num << "\n";
            bb_num++;
            // iterator over instructions
            unsigned inst_num = 0;
            for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E;++I) {
                Instruction *Ins = dyn_cast<Instruction>(I);
                if (!Ins)
                    return false;
                LoadInst *Ld = dyn_cast<LoadInst>(I);
                StoreInst *St = dyn_cast<StoreInst>(I);
                if (!St && !Ld)
                    continue;
                if (Ld && !Ld->isSimple())
                    return false;
                if (St && !St->isSimple())
                    return false;
                inst_num++;
                MemInstr.push_back(&*I);
                errs() << "MemInst-" << inst_num << ":" << *I << "\n";
            }

        	ValueVector::iterator I, IE, J, JE;
            for (I = MemInstr.begin(), IE = MemInstr.end(); I != IE; ++I) {
            for (J = I, JE = MemInstr.end(); J != JE; ++J) {
                std::vector<char> Dep;
                Instruction *Src = dyn_cast<Instruction>(*I);
                Instruction *Des = dyn_cast<Instruction>(*J);
                if (Src == Des)
                    continue;
                if (isa<LoadInst>(Src) && isa<LoadInst>(Des))
                    continue;
                if (auto D = DA->depends(Src, Des, true)) {
                    errs() << "Found Dependency between:\nSrc:" << *Src << "\nDes:" << *Des
                     << "\n";
                	if (D->isFlow()) {
                    	errs () << "Flow dependence not handled";
                    	return false;
                	}
                
                	if (D->isAnti()) {
                    	errs() << "Found Anti dependence \n";

						AliasAnalysis::AliasResult AA_dep = AA.alias(Src, Des);
                        AliasAnalysis::AliasResult AA_dep_1 = AA.alias(Des, Src);
                    	errs() << "The Ld->St alias result is " << AA_dep << "\n";
                    	errs() << "The St->Ld alias result is " << AA_dep_1 << "\n";
                    	
                        unsigned Levels = D->getLevels();
                    	errs() << "levels = " << Levels << "\n";
                    	char Direction;
                    	for (unsigned II = 1; II <= Levels; ++II) {
                        	const SCEV *Distance = D->getDistance(II);
                        	const SCEVConstant *SCEVConst = dyn_cast_or_null<SCEVConstant>(Distance);
                        	if (SCEVConst) {
                            	const ConstantInt *CI = SCEVConst->getValue();
                                //int64_t it_dist = CI->getUniqueInteger().getSExtValue();
                                //int it_dist = CI->getUniqueInteger().getSExtValue();
                               	unsigned it_dist = abs(CI->getUniqueInteger().getSExtValue());
                            	errs() << "distance is not null\n";
                            	//errs() << "distance = "<< *CI << "\n";
                            	errs() << "distance = "<< it_dist << "\n";
                       			if (CI->isNegative())
                            		Direction = '<';
                        		else if (CI->isZero())
                            		Direction = '=';
                        		else
                            		Direction = '>';
                        		Dep.push_back(Direction);
                        	} 
                        	else if (D->isScalar(II)) {
                        		Direction = 'S';
                        		Dep.push_back(Direction);
                        	} 
                        	else {
                            	unsigned Dir = D->getDirection(II);
                            	if (Dir == Dependence::DVEntry::LT || Dir == Dependence::DVEntry::LE)
                                	Direction = '<';
                            	else if (Dir == Dependence::DVEntry::GT || Dir == Dependence::DVEntry::GE)
                                	Direction = '>';
                            	else if (Dir == Dependence::DVEntry::EQ)
                                	Direction = '=';
                            	else
                                	Direction = '*';
                            	Dep.push_back(Direction);
                        	}
                    	}
                	}
              	}
            }
        	}
        }
        errs() << "------Hello World!--------\n";
        return false;
    }