// This skill does not account for hero color TaskPtr PvEActive::DamageByEnemyHealthFactor(BoardLayer* layer, HeroControl* hc, float factor, bool isArea) { TaskBatchPtr areaBatch = TaskBatch::make(); EnemyControlList targets = layer->getEnemiesInAttackOrder(hc->getColor(), isArea); float delay = 0.0f; for(EnemyControlPtr ec : targets) { float finalDamage = ec->getHealth() * factor; areaBatch << createFloatText(layer, finalDamage, ec->center(), hc->getColor(), delay+0.5f); areaBatch << layer->createAttackSequence(hc, ec, finalDamage, hc->getColor(), delay); float acDelay = -0.15f+delay+calOrbDelay(hc->center(), ec->center()); TaskPtr hit = layer->dealDamageToOneWithAnim(finalDamage, ec, acDelay); areaBatch << TaskSequence::make(createDelay(layer, 0.5), hit); delay += 0.2f; } //layer->removeDeadEnemies(); return areaBatch; }
DelayNode* AudioContext::createDelay(ExceptionState& exceptionState) { if (isContextClosed()) { throwExceptionForClosedState(exceptionState); return nullptr; } const double defaultMaxDelayTime = 1; return createDelay(defaultMaxDelayTime, exceptionState); }
void GHEffectViews_createEffects(LinkedList* effectParams) { createDistortion(effectParams); createTremolo(effectParams); createCompressor(effectParams); createDelay(effectParams); createOctaver(effectParams); createBitCrusher(effectParams); createMaster(effectParams); }
QWidget* createEffects(QWidget* parent) { parent->setObjectName("effects"); QGridLayout* grid = new QGridLayout(parent); // row 1 grid->addWidget(createChorus(new QGroupBox("Chorus")), 0, 0); grid->addWidget(createPhaser(new QGroupBox("Phaser")), 0, 1); grid->addWidget(createDelay(new QGroupBox("Delay")), 0, 2); grid->addWidget(createReverb(new QGroupBox("Reverb")), 1, 0, 1, 2); grid->setRowStretch(2, 1); return parent; }
//---------------------------------------------------- //--------------- Multiple Attacks ------------------- //---------------------------------------------------- TaskPtr PvEActive::MultipleAttacksByFactor(BoardLayer* layer, HeroControl* hc, int count, float factor, bool isArea) { TaskBatchPtr batch = TaskBatch::make(); for(int i=0; i<count; i++) { TaskSequencePtr seq = TaskSequence::make(); seq << createDelay(layer, 0.2f * i); seq << DamageByFactor(layer, hc, factor, isArea); batch << seq; } return batch; }
//--------------------------------------------- //------------- Damage Skills ----------------- //--------------------------------------------- static TaskPtr DamageCommon(BoardLayer* layer, HeroControl* hc, boost::function<float (EnemyControlPtr)> f, bool isArea, float& totalDamage) { TaskBatchPtr areaBatch = TaskBatch::make(); totalDamage = 0.0f; EnemyControlList targets = layer->getEnemiesInAttackOrder(hc->getColor(), isArea); float delay = 0.0f; for(EnemyControlPtr ec : targets) { float finalAttack = f(ec); float finalDamage; areaBatch << layer->calcDamageForTarget(finalAttack, hc->getColor(), ec, finalDamage, false, delay + 0.5f); totalDamage += finalDamage; areaBatch << layer->createAttackSequence(hc, ec, finalDamage, hc->getColor(), delay); float acDelay = -0.15f+delay+calOrbDelay(hc->center(), ec->center()); TaskPtr hit = layer->dealDamageToOneWithAnim(finalDamage, ec, acDelay); areaBatch << TaskSequence::make(createDelay(layer, 0.5), hit); delay += 0.2f; } //layer->removeDeadEnemies(); return areaBatch; }
TaskPtr PvEActive::DamageByFactorWithoutArmor(BoardLayer * layer, HeroControl * hc, GemUtils::GemColor color, float factor, bool isArea) { TaskBatchPtr areaBatch = TaskBatch::make(); EnemyControlList targets = layer->getEnemiesInAttackOrder(hc->getColor(), isArea); float delay = 0.0f; float skillMod; areaBatch << layer->mPlayer->getAttackFactor(hc, skillMod, [](){return rand();}); const float finalAttack = hc->attack * ( factor * skillMod ); for(EnemyControlPtr ec : targets) { float finalDamage = 0.f; areaBatch << layer->calcDamageForTarget(finalAttack, hc->getColor(), ec, finalDamage, true, delay + 0.5f); areaBatch << layer->createAttackSequence(hc, ec, finalDamage, color, delay); float acDelay = -0.15f+delay+calOrbDelay(hc->center(), ec->center()); TaskPtr hit = layer->dealDamageToOneWithAnim(finalDamage, ec, acDelay); areaBatch << TaskSequence::make(createDelay(layer, 0.5), hit); delay += 0.2f; } return areaBatch; }
TaskPtr PvEActive::Damage(PH::BoardLayer *layer, PH::HeroControl *hc, GemUtils::GemColor color, float damage, bool isArea, bool ignoreArmor) { TaskBatchPtr areaBatch = TaskBatch::make(); EnemyControlList targets = layer->getEnemiesInAttackOrder(hc->getColor(), isArea); float delay = 0.0f; for(EnemyControlPtr ec : targets) { float finalDamage = 0.f; areaBatch << layer->calcDamageForTarget(damage, color, ec, finalDamage, ignoreArmor, delay + 0.5f); areaBatch << layer->createAttackSequence(hc, ec, finalDamage, color, delay); float acDelay = -0.15f+delay+calOrbDelay(hc->center(), ec->center()); TaskPtr hit = layer->dealDamageToOneWithAnim(finalDamage, ec, -delay+acDelay); areaBatch << TaskSequence::make(createDelay(layer, 0.5), hit); delay += 0.2f; } //layer->removeDeadEnemies(); return areaBatch; }
TaskPtr PvPActive::TransformAllGem(PVPBoardLayer* layer) { auto fadeOutTask = TaskBatch::make(); auto & grid = layer->mBoardControl->getGrid(); float delay = 0.01f; for(int i=0; i<grid.size(); i++) { GemPtr fromGem = grid(i); auto seq = TaskSequence::make(); seq << createDelay(layer, delay); seq << fromGem->sweep(layer->mBoardControl.get()); fadeOutTask << seq; delay += 0.02; } return TaskSequence::make() << TaskSound::make("sound/v/evolve_success.mp3") << fadeOutTask << layer->mBoardControl->fillBoard([=](){return layer->randGemWeighted();}, false); }
PassRefPtr<DelayNode> AudioContext::createDelay(ExceptionCode& ec) { const double defaultMaxDelayTime = 1; return createDelay(defaultMaxDelayTime, ec); }
DelayNode* AbstractAudioContext::createDelay(ExceptionState& exceptionState) { const double defaultMaxDelayTime = 1; return createDelay(defaultMaxDelayTime, exceptionState); }