void TTFB_Audience::setHappy(int _level) { if(currentState != _level){ if(_level < 3){ setPrimaryTexture(TTFB_ResourceManager::scenario->getTextureSampler(prefix + "_CrowdHappy" + std::to_string(_level))->textureSampler); }else { setPrimaryTexture(TTFB_ResourceManager::scenario->getTextureSampler(prefix + "_CrowdHappy3")->textureSampler); } currentState = _level; } }
void TTFB_Audience::setBored(int _level) { if(currentState != -_level){ if(_level < 4){ setPrimaryTexture(TTFB_ResourceManager::scenario->getTextureSampler(prefix + "_CrowdBored" + std::to_string(_level))->textureSampler); }else { setPrimaryTexture(TTFB_ResourceManager::scenario->getTextureSampler(prefix + "_CrowdBored4")->textureSampler); } currentState = -_level; } }
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"); });*/ }
TTFB_Audience::TTFB_Audience(std::string _prefix, Shader * _shader) : Sprite(_shader), currentState(0), lastSoundPlayed(0.0), prefix(_prefix), playAudio(true), clapping(nullptr), snoring(nullptr) { setPrimaryTexture(TTFB_ResourceManager::scenario->getTextureSampler(prefix + "_CrowdNeutral")->textureSampler); clapping = TTFB_ResourceManager::scenario->getAudio("clapping1")->sound; clapping->setGain(0.3f); snoring = TTFB_ResourceManager::scenario->getAudio("snore4")->sound; snoring->setGain(0.3f); }
void TTFB_Audience::setNeutral() { if(currentState != 0){ setPrimaryTexture(TTFB_ResourceManager::scenario->getTextureSampler(prefix + "_CrowdNeutral")->textureSampler); currentState = 0; } }