From 2243bfc9f8607ae3559d495111e259da06f1528c Mon Sep 17 00:00:00 2001 From: Askou Date: Fri, 18 Jun 2021 11:43:59 +0200 Subject: [PATCH] kill when no_clip ends in boxes --- sources/Items/Bonus.cpp | 12 ++++++++---- sources/System/Bonus/PlayerBonusSystem.cpp | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/sources/Items/Bonus.cpp b/sources/Items/Bonus.cpp index c7f9049c..8ad299cc 100644 --- a/sources/Items/Bonus.cpp +++ b/sources/Items/Bonus.cpp @@ -62,21 +62,25 @@ namespace BBM { Bonus::BonusType Bonus::getRandomBonusType() { + return NOCLIP; static std::default_random_engine generator(time(nullptr)); std::map chanceValue = { {NOTHING, 100.0f}, - {SPEEDUP, 45.0f}, - {BOMBSTOCK, 30.0f}, - {EXPLOSIONINC, 15.0f}, + {BOMBSTOCK, 46.5f}, + {SPEEDUP, 31.5f}, + {EXPLOSIONINC, 16.5f}, {NOCLIP, 1.5f}, }; std::uniform_int_distribution distribution(1,1000); float value = (distribution(generator) / 10); BonusType bonus = NOTHING; + std::cout << value << std::endl; for (auto &chance : chanceValue) - if (chance.second > value) + if (chance.second > value) { + std::cout << value << "<" << chance.second << std::endl; bonus = chance.first; + } return (bonus); } } \ No newline at end of file diff --git a/sources/System/Bonus/PlayerBonusSystem.cpp b/sources/System/Bonus/PlayerBonusSystem.cpp index a0fc8218..fc171d3a 100644 --- a/sources/System/Bonus/PlayerBonusSystem.cpp +++ b/sources/System/Bonus/PlayerBonusSystem.cpp @@ -3,6 +3,10 @@ // #include "PlayerBonusSystem.hpp" +#include "Component/Position/PositionComponent.hpp" +#include "Component/Health//HealthComponent.hpp" +#include "Component/Tag/TagComponent.hpp" +#include "Component/Collision/CollisionComponent.hpp" using namespace std::chrono_literals; @@ -19,9 +23,20 @@ namespace BBM auto &playerBonus = entity.get(); playerBonus.nextNoClipRate -= dtime; - if (playerBonus.nextNoClipRate <= 0ns) { + if (playerBonus.nextNoClipRate <= 0ns && playerBonus.isNoClipOn) { playerBonus.nextNoClipRate = playerBonus.noClipBonusRate; playerBonus.isNoClipOn = false; + auto playerPos = entity->tryGetComponent(); + auto playerHealth = entity->tryGetComponent(); + if (!playerHealth || !playerPos) + return; + for (auto &[other, pos, _] : this->_wal.getScene()->view()) { + if (other.hasComponent>()) + continue; + auto vec = playerPos->position.abs() - pos.position.abs(); + if (vec.abs().x < 0.65 && vec.abs().z < 0.65 && playerPos->position.distance(pos.position) < 1) + playerHealth->takeDmg(playerHealth->getHealthPoint()); + } } } } \ No newline at end of file