void NormalMonsterHPLayer::SetEnemyHpLable(float currentHp,bool isAnim,PLAYER_ID enemyId,unsigned int monsterType) { SpriteMonster* monster = SpriteMonsterMgr::Get()->GetMonster(enemyId.getID()); if(monster == NULL) { return; } float totalHp = monster->getTotalBlood(); float scale = UIManager::sharedManager()->getScaleFactor(); float percent= scale; if(totalHp != 0) { percent *= currentHp / totalHp; } if(m_hpPic) { m_hpPic->stopAllActions(); if(isAnim) { CCActionInterval* actionScale = CCScaleTo::create(0.2f,percent,scale); m_hpPic->runAction(actionScale); } else { m_hpPic->setScaleX(percent); } } if(m_targetMonsterId != enemyId.getID()) { const char* mosterNameIndex = LuaTinkerManager::Get()->getLuaConfig<const char *>("MonsterBasicInfomation", "MonsterBasicInfomation", monsterType, "Name"); CCAssert(mosterNameIndex,"monster name index is null"); const char* monsterName = Localizatioin::getLocalization(mosterNameIndex); CCAssert(monsterName,"monster name is null"); m_nameLabel->setString(monsterName); char levelStr[20]; sprintf(levelStr,"Lv%d",monster->getLevel()); m_levelLabel->setString(levelStr); } b_checkMonster = true; m_targetMonsterId = enemyId.getID(); }
//type : 1 世界boss 2 勇者试炼 3 主城防守 void SpriteMonsterMgr::updateSpecialMonsterHPLayer(int id, int nowHp, int totalHp, int type) { UILayout * layout = UIManager::sharedManager()->getUILayout("WorldBossHPUI"); SpriteMonster * monster = NULL; if (m_tabMonsters.find(id) != m_tabMonsters.end()) { monster = m_tabMonsters[id]; } if (layout && monster) { if (!specialMonsterHpInited) { const char* mosterNameIndex = LuaTinkerManager::Get()->getLuaConfig<const char *>("MonsterBasicInfomation", "MonsterBasicInfomation", monster->GetTypeId(), "Name"); const char* monsterName = Localizatioin::getLocalization(mosterNameIndex); CCSprite * monsterHPBarNode = NULL; if (type != 3) { layout->FindChildObjectByName<UILabel>("bossName")->setString(monsterName); stringstream bossLevelStream; bossLevelStream << "Lv." << monster->getLevel(); string bossLevel = bossLevelStream.str(); //layout->FindChildObjectByName<UILabel>("bossLevel")->setString(bossLevel.c_str()); layout->FindChildObjectByName<UILabel>("bossLevel")->setString(""); monsterHPBarNode = (CCSprite *)layout->FindChildObjectByName<UIPicture>("bossHPBar")->getCurrentNode(); } else { layout->FindChildObjectByName<UILabel>("cityName")->setString(monsterName); monsterHPBarNode = (CCSprite *)layout->FindChildObjectByName<UIPicture>("cityHPBar")->getCurrentNode(); } monsterHPBarNode->setAnchorPoint(ccp(0, 0.5f)); CCPoint oldPos = monsterHPBarNode->getPosition(); float scale = UIManager::sharedManager()->getScaleFactor(); monsterHPBarNode->setPosition(ccp(oldPos.x-scale * monsterHPBarNode->getContentSize().width/2, oldPos.y)); specialMonsterHpInited = true; } stringstream hpStream; hpStream << nowHp << "/" << totalHp; string hpStr = hpStream.str(); switch (type) { case 1: //layout->FindChildObjectByName<UILabel>("bossHPNum")->setString(hpStr.c_str()); layout->FindChildObjectByName<UILabel>("bossHPNum")->setString(Localizatioin::getLocalization("M_WORLDBOSS_HP")); break; case 2: layout->FindChildObjectByName<UILabel>("bossHPNum")->setString(""); break; default: break; } CCSprite * monsterHPBarNode = NULL; if (type != 3) { monsterHPBarNode = (CCSprite *)layout->FindChildObjectByName<UIPicture>("bossHPBar")->getCurrentNode(); } else { monsterHPBarNode = (CCSprite *)layout->FindChildObjectByName<UIPicture>("cityHPBar")->getCurrentNode(); } float scale = UIManager::sharedManager()->getScaleFactor(); float percent= scale; if(totalHp != 0) { percent *= nowHp * 1.0f / totalHp; } CCActionInterval* actionScale = CCScaleTo::create(0.2f,percent,scale); monsterHPBarNode->runAction(actionScale); } }