Process::~Process() { if (m_kill) m_proc.terminate(); bool bFinished = m_proc.waitForFinished(); EXPECT_TRUE(bFinished); if (!bFinished) return; if (!m_allowDie) { EXPECT_EQ(m_proc.exitStatus(), QProcess::NormalExit); if (m_allowLeak) { EXPECT_THAT(m_proc.exitStatus(), AnyOf(Eq(23), Eq(m_exit))); } else { EXPECT_EQ(m_proc.exitCode(), m_exit); } } }
bool AwakePlayerAttack(GameBase* gb, const T& collision, const Optional<ShimiColors>& col, int value) { const bool enemyHit = AnyOf(gb->m_EM.m_enemies, [gb, &collision](const std::shared_ptr<Enemy>& e) { const bool f = collision.intersects(Circle(e->m_pos, 30)); if (f) { if (!e->m_isDead) { EffectManager::I()->effect.add<VanishingEnemy>(e->m_pos.asPoint(), 25.0, 0.5, e->m_shimiColor); SoundAsset(L"EnemyVanish").playMulti(); } e->m_isDead = true; if (e->m_itemID && !gb->m_idb.isgot(e->m_itemID.value())) { const int index = e->m_itemID.value(); const int itemVal = gb->m_idb.m_list[index].m_value; const ShimiColors itemCol = gb->m_idb.m_list[index].m_color; gb->m_mv.addShotExp(gb->m_idb.m_list[index]); EffectManager::I()->effect.add<ItemGet>(gb, e->m_pos, itemCol, itemVal); gb->m_idb.got(index); } } return f; }); const bool bossHit = AnyOf(gb->m_bosses, [gb, &collision, &col, &value](const std::shared_ptr<Boss>& b) { const HitState hit = b->damage(collision, col, value);// collision.intersects(Circle(e.m_enemy->m_pos, 30)); switch (hit) { case HitState::Damage: SoundAsset(L"BossDamage").playMulti(); break; case HitState::NoDamage: SoundAsset(L"BossNoDamage").play(); break; default: break; } return hit != HitState::Avoid; }); const bool obsHit = AnyOf(gb->m_obstacles, [&collision, &col](const std::shared_ptr<ObstacleBase>& obs) { const bool isColled = obs->m_pols.intersects(collision); const bool isCrashed = obs->shotByColor(col) && isColled; if (isCrashed && !obs->m_isDead) { SoundAsset(L"BreakObstacle").playMulti(); obs->m_isDead = true; EffectManager::I()->effect.add<Vanishing>(obs->m_pols.boundingRect.center, 100, ToColor(col.value())); } return isCrashed; }); return enemyHit || bossHit || obsHit; }