コード例 #1
0
void CCDisplayManager::changeDisplayWithName(const std::string& name, bool force)
{
    for (int i = 0; i<_decoDisplayList.size(); i++)
    {
        if (_decoDisplayList.at(i)->getDisplayData()->displayName == name)
        {
            changeDisplayWithIndex(i, force);
            break;
        }
    }
}
コード例 #2
0
void CCDisplayManager::changeDisplayWithName(const char *name, bool force)
{
    for (unsigned int i = 0; i<m_pDecoDisplayList->count(); i++)
    {
        if (static_cast<CCDecorativeDisplay*>(m_pDecoDisplayList->objectAtIndex(i))->getDisplayData()->displayName == name)
        {
            changeDisplayWithIndex(i, force);
            break;
        }
    }
}
コード例 #3
0
ファイル: MachineSoldier.cpp プロジェクト: joyfish/MyCocos2dx
void SoldierTk::runWalkAction()
{
	string bodyName = "";
	string headName = "";
	switch (m_direction)
	{
	case e_battle_dir_east :
		bodyName = "01_walk03";
		headName = "01_head05";
		break;
	case e_battle_dir_es :
		bodyName = "01_walk02";
		headName = "01_head07";
		break;
	case e_battle_dir_south :
		bodyName = "01_walk01";
		headName = "01_head10";
		break;
	case e_battle_dir_ws :
		bodyName = "01_walk04";
		headName = "01_head13";
		break;
	case e_battle_dir_west :
		bodyName = "01_walk01";
		headName = "01_head10";
		break;
	case e_battle_dir_wn :
		bodyName = "01_walk02";
		headName = "01_head07";
		break;
	case e_battle_dir_north :
		bodyName = "01_walk03";
		headName = "01_head05";
		break;
	case e_battle_dir_en :
		bodyName = "01_walk05";
		headName = "01_head01";
		break;
	default:
		break;
	}

	getBody()->getAnimation()->play(bodyName);
	auto head = getHead();
	auto bone = getBody()->getBone("head");
	bone->addDisplay(head,0);
	bone->changeDisplayWithIndex(0,true);
	head->getAnimation()->play(headName);
}
コード例 #4
0
void DisplayManager::addDisplay(DisplayData *displayData, int index)
{
    DecorativeDisplay *decoDisplay = nullptr;

    if( (index >= 0) && (index < _decoDisplayList.size()) )
    {
        decoDisplay = (DecorativeDisplay *)_decoDisplayList.at(index);
    }
    else
    {
        decoDisplay = DecorativeDisplay::create();
        _decoDisplayList.pushBack(decoDisplay);
    }

    DisplayFactory::addDisplay(_bone, decoDisplay, displayData);

    //! if changed display index is current display index, then change current display to the new display
    if(index == _displayIndex)
    {
        _displayIndex = -1;
        changeDisplayWithIndex(index, false);
    }
}
コード例 #5
0
void CCDisplayManager::addDisplay(CCDisplayData *displayData, int index)
{
    CCDecorativeDisplay *decoDisplay = NULL;

    if(index >= 0 && (unsigned int)index < m_pDecoDisplayList->count())
    {
        decoDisplay = (CCDecorativeDisplay *)m_pDecoDisplayList->objectAtIndex(index);
    }
    else
    {
        decoDisplay = CCDecorativeDisplay::create();
        m_pDecoDisplayList->addObject(decoDisplay);
    }

    CCDisplayFactory::addDisplay(m_pBone, decoDisplay, displayData);

    //! if changed display index is current display index, then change current display to the new display
    if(index == m_iDisplayIndex)
    {
        m_iDisplayIndex = -1;
        changeDisplayWithIndex(index, false);
    }
}
コード例 #6
0
void DisplayManager::addDisplay(Node *display, int index)
{
    DecorativeDisplay *decoDisplay = nullptr;

    if( (index >= 0) && (index < _decoDisplayList.size()) )
    {
        decoDisplay = _decoDisplayList.at(index);
    }
    else
    {
        decoDisplay = DecorativeDisplay::create();
        _decoDisplayList.pushBack(decoDisplay);
    }

    DisplayData *displayData = nullptr;
    if (Skin *skin = dynamic_cast<Skin *>(display))
    {
        skin->setBone(_bone);
        displayData = SpriteDisplayData::create();

        DisplayFactory::initSpriteDisplay(_bone, decoDisplay, skin->getDisplayName().c_str(), skin);

        if (SpriteDisplayData *spriteDisplayData = (SpriteDisplayData *)decoDisplay->getDisplayData())
        {
            skin->setSkinData(spriteDisplayData->skinData);
            ((SpriteDisplayData *)displayData)->skinData = spriteDisplayData->skinData;
        }
        else
        {
            bool find = false;

            for (long i = _decoDisplayList.size()-2; i>=0; i--)
            {
                DecorativeDisplay *dd = _decoDisplayList.at(i);
                SpriteDisplayData *sdd = static_cast<SpriteDisplayData*>(dd->getDisplayData());
                if (sdd)
                {
                    find = true;
                    skin->setSkinData(sdd->skinData);
                    static_cast<SpriteDisplayData*>(displayData)->skinData = sdd->skinData;
                    break;
                }
            }

            if (!find)
            {
                BaseData baseData;
                skin->setSkinData(baseData);
            }
        }
    }
    else if (dynamic_cast<ParticleSystemQuad *>(display))
    {
        displayData = ParticleDisplayData::create();

        display->removeFromParent();
        display->cleanup();
        
        Armature *armature = _bone->getArmature();
        if (armature)
        {
            display->setParent(armature);
        }
    }
    else if(Armature *armature = dynamic_cast<Armature *>(display))
    {
        displayData = ArmatureDisplayData::create();
        displayData->displayName = armature->getName();
        armature->setParentBone(_bone);
    }
    else
    {
        displayData = DisplayData::create();
    }

    decoDisplay->setDisplay(display);
    decoDisplay->setDisplayData(displayData);

    //! if changed display index is current display index, then change current display to the new display
    if(index == _displayIndex)
    {
        _displayIndex = -1;
        changeDisplayWithIndex(index, false);
    }
}
コード例 #7
0
ファイル: CCBone.cpp プロジェクト: 123063189/thiefTD
void Bone::changeDisplayByIndex(int index, bool force)
{
    changeDisplayWithIndex(index, force);
}
コード例 #8
0
void CCDisplayManager::changeDisplayByIndex(int index, bool force)
{
    changeDisplayWithIndex(index, force);
}
コード例 #9
0
void CCDisplayManager::addDisplay(CCNode *display, int index)
{
    CCDecorativeDisplay *decoDisplay = NULL;

    if(index >= 0 && (unsigned int)index < m_pDecoDisplayList->count())
    {
        decoDisplay = (CCDecorativeDisplay *)m_pDecoDisplayList->objectAtIndex(index);
    }
    else
    {
        decoDisplay = CCDecorativeDisplay::create();
        m_pDecoDisplayList->addObject(decoDisplay);
    }

    CCDisplayData *displayData = NULL;
    if (CCSkin *skin = dynamic_cast<CCSkin *>(display))
    {
        skin->setBone(m_pBone);
        displayData = CCSpriteDisplayData::create();
        displayData->displayName = skin->getDisplayName();

        CCDisplayFactory::initSpriteDisplay(m_pBone, decoDisplay, skin->getDisplayName().c_str(), skin);

        if (CCSpriteDisplayData *spriteDisplayData = (CCSpriteDisplayData *)decoDisplay->getDisplayData())
        {
            skin->setSkinData(spriteDisplayData->skinData);
            ((CCSpriteDisplayData *)displayData)->skinData = spriteDisplayData->skinData;
        }
        else
        {
            bool find = false;
            for (int i = m_pDecoDisplayList->count()-2; i>=0; i--)
            {
                CCDecorativeDisplay *dd = static_cast<CCDecorativeDisplay*>(m_pDecoDisplayList->objectAtIndex(i));
                CCSpriteDisplayData *sdd = static_cast<CCSpriteDisplayData *>(dd->getDisplayData());
                if (sdd)
                {
                    find = true;
                    skin->setSkinData(sdd->skinData);
                    (static_cast<CCSpriteDisplayData *>(displayData))->skinData = sdd->skinData;
                    break;
                }
            }

            if (!find)
            {
                CCBaseData baseData;
                skin->setSkinData(baseData);
            }
        }
    }
    else if (dynamic_cast<CCParticleSystemQuad *>(display))
    {
        displayData = CCParticleDisplayData::create();

        display->removeFromParent();

        CCArmature *armature = m_pBone->getArmature();
        if (armature)
        {
            display->setParent(armature);
        }
    }
    else if(CCArmature *armature = dynamic_cast<CCArmature *>(display))
    {
        displayData = CCArmatureDisplayData::create();
        displayData->displayName = armature->getName();
        armature->setParentBone(m_pBone);
    }
    else
    {
        displayData = CCDisplayData::create();
    }

    decoDisplay->setDisplay(display);
    decoDisplay->setDisplayData(displayData);

    //! if changed display index is current display index, then change current display to the new display
    if(index == m_iDisplayIndex)
    {
        m_iDisplayIndex = -1;
        changeDisplayWithIndex(index, false);
    }
}