Ejemplo n.º 1
0
CCBAnimationManager::~CCBAnimationManager()
{
    CCDictElement *pElement = NULL;
    CCDICT_FOREACH(mNodeSequences, pElement)
    {
        CCNode *node = (CCNode*)pElement->getIntKey();
        node->release();
    }
Ejemplo n.º 2
0
void Animal::clean(){
	this->finishCurAction();
	this->stopAllActions();
	this->getObserver()->finish();
	CCDictElement* pElement = NULL;
	CCDICT_FOREACH(moves, pElement)
{
    int key = pElement->getIntKey();
    BaseMove* move = (BaseMove*)pElement->getObject();
	this->removeChild(move,true);
}
Ejemplo n.º 3
0
void XCCBReader::pause()
{
	CCBAnimationManager* mActionManager = getAnimationManager();
	mActionManager->getRootNode()->pauseSchedulerAndActions();

	CCDictionary* pDic = mActionManager->getNodeSequences();
	CCDictElement* pElement = NULL;
	CCDICT_FOREACH(pDic, pElement)
	{
		CCNode *node = (CCNode*)pElement->getIntKey();
		node->pauseSchedulerAndActions();
	}
Ejemplo n.º 4
0
CCNode* CCBReader::readNodeGraphFromData(CCData *pData, CCObject *pOwner, const CCSize &parentSize)
{
    mData = pData;
    CC_SAFE_RETAIN(mData);
    mBytes = mData->getBytes();
    mCurrentByte = 0;
    mCurrentBit = 0;
    mOwner = pOwner;
    CC_SAFE_RETAIN(mOwner);

    mActionManager->setRootContainerSize(parentSize);
    mActionManager->mOwner = mOwner;  
    
    CCDictionary* animationManagers = CCDictionary::create();
    CCNode *pNodeGraph = readFileWithCleanUp(true, animationManagers);
    
    if (pNodeGraph && mActionManager->getAutoPlaySequenceId() != -1 && !jsControlled)
    {
        // Auto play animations
        mActionManager->runAnimationsForSequenceIdTweenDuration(mActionManager->getAutoPlaySequenceId(), 0);
    }
    // Assign actionManagers to userObject
    if(jsControlled) {
        mNodesWithAnimationManagers = new CCArray();
        mAnimationManagersForNodes = new CCArray();
    }
    
    CCDictElement* pElement = NULL;
    CCDICT_FOREACH(animationManagers, pElement)
    {
        CCNode* pNode = (CCNode*)pElement->getIntKey();
        CCBAnimationManager* manager = (CCBAnimationManager*)animationManagers->objectForKey((intptr_t)pNode);
		// (jason_shi): 将未命名的JSController命名为路径名
		if (manager->getDocumentControllerName().compare("") == 0)
		{
			CCString* pStr = dynamic_cast<CCString*>(pNode->getCustObject());
			if (pStr)
			{
				manager->setDocumentControllerName(pStr->getCString());
				pNode->setCustObject(nullptr);
			}
		}

        pNode->setUserObject(manager);

        if (jsControlled)
        {
            mNodesWithAnimationManagers->addObject(pNode);
            mAnimationManagersForNodes->addObject(manager);
        }
    }
Ejemplo n.º 5
0
CCNode* CCBReader::readNodeGraphFromData(CCData *pData, CCObject *pOwner, const CCSize &parentSize)
{
    mData = pData;
    CC_SAFE_RETAIN(mData);
    mBytes = mData->getBytes();
    mCurrentByte = 0;
    mCurrentBit = 0;
    mOwner = pOwner;
    CC_SAFE_RETAIN(mOwner);

    mActionManager->setRootContainerSize(parentSize);
    mActionManager->mOwner = mOwner;
    mOwnerOutletNodes = new CCArray();
    mOwnerCallbackNodes = new CCArray();
    
    CCDictionary* animationManagers = CCDictionary::create();
    CCNode *pNodeGraph = readFileWithCleanUp(true, animationManagers);
    
    if (pNodeGraph && mActionManager->getAutoPlaySequenceId() != -1 && !jsControlled)
    {
        // Auto play animations
        mActionManager->runAnimationsForSequenceIdTweenDuration(mActionManager->getAutoPlaySequenceId(), 0);
    }
    // Assign actionManagers to userObject
    if(jsControlled) {
        mNodesWithAnimationManagers = new CCArray();
        mAnimationManagersForNodes = new CCArray();
    }
    
    CCDictElement* pElement = NULL;
    CCDICT_FOREACH(animationManagers, pElement)
    {
        CCNode* pNode = (CCNode*)pElement->getIntKey();
        CCBAnimationManager* manager = (CCBAnimationManager*)animationManagers->objectForKey((intptr_t)pNode);
        pNode->setUserObject(manager);

        if (jsControlled)
        {
            mNodesWithAnimationManagers->addObject(pNode);
            mAnimationManagersForNodes->addObject(manager);
        }
    }
Ejemplo n.º 6
0
bool ItemPicker::refresh_itemlist(){
	do 
	{

		m_iCurItem = -1;
		m_iSum = 0;
		m_viItemList.clear();
		m_cdItemList = StateCenter::sharedStateCenter()->f_get_itemlist(2);			//group = 2 || WalkMap Item | Usecase = 0b010
		CC_BREAK_IF(m_cdItemList->count() < 1);

		//int i = 0;
		string t_sMask;
		CCDictElement* pCe = NULL;
		CCDICT_FOREACH(m_cdItemList,pCe){
			t_sMask += CCString::createWithFormat("%d,",pCe->getIntKey())->getCString();
			//m_viItemList.push_back((ItemCellData*) pCe->getObject());
		}

		t_sMask.erase(t_sMask.length()-1);
		CCString* t_csSql = CCString::createWithFormat("select * from item_list where itemid IN (%s) and groupid = 2",t_sMask.c_str());
		DBUtil::initDB("save.db");
		vdata = DBUtil::getDataInfo(t_csSql->getCString(),NULL);
		DBUtil::closeDB(); 
		m_iSum = vdata.size();
		CC_BREAK_IF(vdata.size() < 1);

		for(int i = 0;i<m_iSum;i++){
			map<string,string> t_ssm = (map<string,string>) vdata.at(i);
			int item_id = stoi(t_ssm.at("itemid"));			//PrimaryKey:ItemID
			ItemCellData* t_icd = (ItemCellData*) m_cdItemList->objectForKey(item_id);

			t_icd->name			=	t_ssm.at("name");
			t_icd->icon_mask	=	t_ssm.at("icon");

			if(item_id == m_iCItemID) m_iCurItem = i;
			CCLOG(">Read for group 2 with itemid:%d.", item_id);
			m_viItemList.push_back(t_icd);
		}
		if(m_iCurItem<0) m_iCurItem = 0;
		return true;
	} while (0);
Ejemplo n.º 7
0
bool CallbackExplode::doCallback(GameObject * aGameObject,CCDictionary * dic,float dt) {
	if (dic && aGameObject) {
		
		//获得效果本身影响的范围
		CCDictionary * property = (CCDictionary *)aGameObject->getValue(KStrProperty);
		CCString * atkStr = (CCString *)property->objectForKey(KStrATK);
		CCString * atkRangeStr = (CCString *)property->objectForKey(KStrATK_RANGE);
		
		float atk_range_org = (atkRangeStr?atkRangeStr->floatValue():0) * 0.5;
		float atk = atkStr? atkStr->floatValue() : 0;
		
		//获得对应的效果播放的中心点
		CCDictionary * pDict=(CCDictionary *)dic->objectForKey(KStrPosition);
		CCString * paramStr=(CCString *)dic->objectForKey(KStrParam);
		float scale = !paramStr ? 1.0 : paramStr->floatValue();
		float atk_range = scale * atk_range_org;
		
		CCPoint p = GameObject::dict2Point(pDict);
		GameModle * _sharedInstance = GameModle::sharedInstance();
		CCDictionary * objects = _sharedInstance->gameObjectsDict();
		CCDictElement * pDictElement = NULL;
		CCDICT_FOREACH(objects, pDictElement){
			int32_t classid=pDictElement->getIntKey();
			if(KNPCTypeId == GameObject::typeIdOfClassId(classid)){
				CCSet * set=(CCSet*)pDictElement->getObject();
				CCSetIterator iter;
				for (iter = set->begin(); iter != set->end(); ++iter)
				{
					GameObject * tmp=(GameObject *)(*iter);
					if (tmp->isActive()) {
						
						float r = tmp->getContentSize().width * 0.5;
						//检测可以攻击到泡泡
						if(GameObject::isCircleContact(p,atk_range,tmp->getPosition(),r)){
							//处理进入到攻击范围的泡泡
							handleExplode(tmp,NULL,atk,aGameObject);
						}
					}
				}
			}
		}
Ejemplo n.º 8
0
//////////////////////////////////////////////////////////////////////////
// XML读写
bool StateCenter::f_save_file(const char* psz){
	do 
	{
		GameManager::sharedLogicCenter()->PrepareSave();

		TiXmlDocument *myDocument = new TiXmlDocument();

		TiXmlDeclaration Declaration( "1.0","UTF-8", "yes" );  
		myDocument->InsertEndChild( Declaration );   

		TiXmlElement *RootElement = new TiXmlElement("Save");
		myDocument->LinkEndChild(RootElement);


		//////////////////////////////////////////////////////////////////////////
		TiXmlElement *PackElement = new TiXmlElement("pack");
		RootElement->LinkEndChild(PackElement);
		PackElement->SetAttribute("type", "0");

		TiXmlElement *PngElement = new TiXmlElement("png");
		PackElement->LinkEndChild(PngElement);
		PngElement->SetAttribute("type",m_iState);
		PngElement->SetAttribute("content",m_sName.c_str());
		PngElement->SetAttribute("jump",m_iJump);
		PngElement->SetAttribute("olds",m_oldstate);
		PngElement->SetAttribute("bgi",m_sBgi.c_str());
		//[Error]CCLOG(">>Save to file.%s",m_sBgi.c_str());
		PngElement->SetAttribute("tjump",m_iTJump);

		for(map<string,int>::iterator it = TagMap.begin(); it != TagMap.end(); ++it){
			if(it->second == 0) continue;
			TiXmlElement *LockElement = new TiXmlElement("lock");
			PngElement->LinkEndChild(LockElement);
			LockElement->SetAttribute("name",it->first.c_str());
			LockElement->SetAttribute("tag",it->second);
			LockElement->SetAttribute("content",PathMap[it->first].c_str());

			//[Error]CCLOG(">save for png by tag:%d",it->second);
			CCSprite* t_ccs = (CCSprite*) GameManager::sharedLogicCenter()->te->getChildByTag(it->second);
			LockElement->SetAttribute("x",((CCString*) CCString::createWithFormat("f%f",t_ccs->getPositionX()))->getCString());
			LockElement->SetAttribute("y",((CCString*) CCString::createWithFormat("f%f",t_ccs->getPositionY()))->getCString());
			LockElement->SetAttribute("angel",((CCString*) CCString::createWithFormat("f%f",t_ccs->getRotation()))->getCString());
		}
		
		//////////////////////////////////////////////////////////////////////////
		PackElement = new TiXmlElement("pack");
		RootElement->LinkEndChild(PackElement);
		PackElement->SetAttribute("type",3);

		CCDictElement* tCe;
		CCDICT_FOREACH(m_cdItemList,tCe){
			CCDictionary* t_caI = (CCDictionary*) tCe->getObject();
			PngElement = new TiXmlElement("png");
			PackElement->LinkEndChild(PngElement);
			PngElement->SetAttribute("group",tCe->getIntKey());

			CCDictElement* pElement = NULL;
			CCDICT_FOREACH(t_caI,pElement)
			{
				ItemCellData* t_icad = (ItemCellData*) pElement->getObject();

				TiXmlElement *LockElement = new TiXmlElement("lock");
				PngElement->LinkEndChild(LockElement);

				LockElement->SetAttribute("item",t_icad->type_id);
				LockElement->SetAttribute("sum",t_icad->sum);
				LockElement->SetAttribute("lock",t_icad->lock);
				CCLOG(">Dic Each...");
			}
		}