Exemplo n.º 1
0
Arquivo: base.cpp Projeto: BtbN/znc
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;
		
	}