mirror of
https://github.com/zoriya/Bomberman.git
synced 2026-06-02 18:21:12 +00:00
fixed healthsystem, using callbacks to create bonuses and removed bonuscomponent (useless)
This commit is contained in:
+28
-21
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user