MY_DemonBoss::MY_DemonBoss(Shader* _shader) : Sprite(_shader), spawnSpewerTimer(0), spawnSpewerTimerLength(sweet::NumberUtils::randomFloat(SPEWER_TIMER_MIN, SPEWER_TIMER_MAX)), hits(0), active(true), isDead(false) { spriteSheet = new SpriteSheet(MY_ResourceManager::globalAssets->getTexture("spritesheet_boss")->texture); setPrimaryTexture(MY_ResourceManager::globalAssets->getTexture("boss")->texture); auto anim = new SpriteSheetAnimation(0.4f); anim->pushFramesInRange(0, 1, 1024, 1024, spriteSheet->texture->width, spriteSheet->texture->height); spriteSheet->addAnimation("idle", anim); anim = new SpriteSheetAnimation(0.1f); anim->pushFramesInRange(2, 3, 1024, 1024, spriteSheet->texture->width, spriteSheet->texture->height); spriteSheet->addAnimation("attack", anim); anim = new SpriteSheetAnimation(1.0f); anim->pushFramesInRange(4, 5, 1024, 1024, spriteSheet->texture->width, spriteSheet->texture->height); spriteSheet->addAnimation("die", anim); setSpriteSheet(spriteSheet, "idle"); for(auto & v : mesh->vertices){ v.y += 0.5f; } mesh->dirty = true; mesh->setScaleMode(GL_NEAREST); meshTransform->scale(glm::vec3(DEMON_SCALE)*1.5f); animationTimeout = new Timeout(0.5f, [this](sweet::Event * _event){ setCurrentAnimation("idle"); }); childTransform->addChild(animationTimeout, false); spewerTimeout = new Timeout(1.f, [this](sweet::Event * _event){ if(!isDead){ enableSpewers(); setCurrentAnimation("attack"); animationTimeout->restart(); int x = sweet::NumberUtils::randomInt(1, 3); MY_ResourceManager::globalAssets->getAudio("DEMON_HISS_" + std::to_string(x))->sound->play(); } }); spewerTimeout->start(); childTransform->addChild(spewerTimeout, false); /*eventManager.addEventListener("spiritCollision", [this](sweet::Event * _event){ // Take damage and stuff here ST_LOG_INFO("COLLIDE"); });*/ }
void AnimationComponent::read(std::fstream& stream, int levelVersion) { //std::string spriteFilename; int size; //char buffer[64]; sf::Vector2i _spriteSize; stream.read((char*)&size, sizeof(size)); std::string filepath(size,'\0'); stream.read(&filepath[0], sizeof(char) * size); //stream.read(buffer, size); stream.read((char*)&_spriteSize, sizeof(_spriteSize)); setSpriteSheet(imageManager->getTexture(filepath), _spriteSize); }