void SceneManagerDungeon::SpawnEnemy(MapEventEnemy* event, Enums::EnemyTypes type, float x, float y) { sf::Sprite sprite; Texture* tex; switch(type) { case Enums::EnemyDefault: case Enums::EnemyChest: tex = TextureList::getTexture(TextureList::EnemySpriteSheet); break; case Enums::EnemyBoss: tex = TextureList::getTexture(TextureList::BossSpriteSheet); } sprite.setTexture(*tex); sprite.setTextureRect(sf::IntRect(0,0,32,32)); Node* enemy = new AnimatedNode(&sprite, tex->GetNumberAnimationSteps()); switch(type) { case Enums::EnemyDefault: case Enums::EnemyChest: enemy->setBoundingBox(sf::FloatRect(4.0f,16.0f,20.0f,16.0f)); break; case Enums::EnemyBoss: enemy->setBoundingBox(sf::FloatRect(0.0f,0.0f,32.0f,32.0f)); } m_eventLayer->addChild(enemy); sf::Transform enemyTransform; //Place Enemy at Position enemyTransform.translate(x, y); enemy->setTransform(enemyTransform); std::vector<Entity*>* enemies = new std::vector<Entity*>(); Entity* e; switch(type) { case Enums::EnemyDefault: for(int i = 0; i < m_dungeonConfig->GetNrEnemies(); i++) { e = m_dungeonConfig->GetDungeonEnemy(m_lvlId); e->SetTeamId(1); enemies->push_back(e); } break; case Enums::EnemyBoss: { int nrAdds = 0; for(; nrAdds < m_dungeonConfig->GetNrBossAdds() / 2; nrAdds++) { e = m_dungeonConfig->GetDungeonEnemy(m_lvlId); e->SetTeamId(1); enemies->push_back(e); } e = m_dungeonConfig->GetDungeonBoss(m_lvlId); e->SetTeamId(1); enemies->push_back(e); for(; nrAdds < m_dungeonConfig->GetNrBossAdds(); nrAdds++) { e = m_dungeonConfig->GetDungeonEnemy(m_lvlId); e->SetTeamId(1); enemies->push_back(e); } } break; case Enums::EnemyChest: for(int i = 0; i < m_dungeonConfig->GetNrEnemies() + 1; i++) { e = m_dungeonConfig->GetDungeonEnemy(m_lvlId + 2); e->SetTeamId(1); enemies->push_back(e); } break; } event->Init(&m_map, enemy, enemies); }