fixed healthsystem, using callbacks to create bonuses and removed bonuscomponent (useless)

This commit is contained in:
HENRY Benjamin
2021-06-09 14:49:37 +02:00
parent 93a4fa792c
commit 3a99e5913b
15 changed files with 88 additions and 152 deletions
+28 -21
View File
@@ -14,46 +14,53 @@ namespace BBM {
{
if (bonus.shouldDelete())
return;
if (player.hasComponent<BombHolderComponent>()) {
auto &bombHolder = player.getComponent<BombHolderComponent>();
bombHolder.maxBombCount++;
}
auto *bombHolder = player.tryGetComponent<BombHolderComponent>();
if (bombHolder == nullptr)
return;
bombHolder->maxBombCount++;
}
void Bonus::DamageIncreasedBonus(WAL::Entity &player, const WAL::Entity &bonus, CollisionComponent::CollidedAxis axis)
{
if (bonus.shouldDelete())
return;
if (player.hasComponent<BombHolderComponent>()) {
auto &bombHolder = player.getComponent<BombHolderComponent>();
auto &playerBonus = player.getComponent<PlayerBonusComponent>();
bombHolder.damage = 2;
playerBonus.nextDamageBonusRate = playerBonus.damageBonusRate;
}
auto *bombHolder = player.tryGetComponent<BombHolderComponent>();
if (bombHolder == nullptr)
return;
auto &playerBonus = player.getComponent<PlayerBonusComponent>();
bombHolder->damage = 2;
playerBonus.nextDamageBonusRate = playerBonus.damageBonusRate;
}
void Bonus::ExplosionRangeBonus(WAL::Entity &player, const WAL::Entity &bonus, CollisionComponent::CollidedAxis axis)
{
if (bonus.shouldDelete())
return;
if (player.hasComponent<BombHolderComponent>()) {
auto &bombHolder = player.getComponent<BombHolderComponent>();
auto &playerBonus = player.getComponent<PlayerBonusComponent>();
if (bombHolder.explosionRadius <= 6)
bombHolder.explosionRadius++;
playerBonus.nextRangeBonusRate = playerBonus.rangeBonusRate;
}
auto *bombHolder = player.tryGetComponent<BombHolderComponent>();
if (bombHolder == nullptr)
return;
auto &playerBonus = player.getComponent<PlayerBonusComponent>();
if (bombHolder->explosionRadius <= 6)
bombHolder->explosionRadius++;
playerBonus.nextRangeBonusRate = playerBonus.rangeBonusRate;
}
void Bonus::SpeedUpBonus(WAL::Entity &player, const WAL::Entity &bonus, CollisionComponent::CollidedAxis axis)
{
if (bonus.shouldDelete())
return;
if (!player.hasComponent<MovableComponent>())
return;
auto &controllable = player.getComponent<ControllableComponent>();
auto *controllable = player.tryGetComponent<ControllableComponent>();
auto &playerBonus = player.getComponent<PlayerBonusComponent>();
controllable.speed = 0.35f;
controllable->speed = 0.35f;
playerBonus.nextSpeedBonusRate = playerBonus.speedBonusRate;
}
Bonus::BonusType Bonus::getRandomBonusType()
{
double rnd = static_cast<double>(std::rand()) / RAND_MAX;
if (rnd < 0.4)
return (static_cast<BonusType>(std::rand() % (DAMAGEINC - 1) + 1));
return (NOTHING);
}
}