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; } } }
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; } } }
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); }
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); } }
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); } }
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); } }
void Bone::changeDisplayByIndex(int index, bool force) { changeDisplayWithIndex(index, force); }
void CCDisplayManager::changeDisplayByIndex(int index, bool force) { changeDisplayWithIndex(index, force); }
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); } }