40 lines
996 B
C++
40 lines
996 B
C++
#include "components/CollectibleComponent.hpp"
|
|
|
|
#include "Entity.hpp"
|
|
#include "components/ColliderComponent.hpp"
|
|
#include "components/MeterComponent.hpp"
|
|
|
|
void CollectibleComponent::Setup() {
|
|
auto selfCollider = entity->GetComponent<ColliderComponent>();
|
|
if (!selfCollider) {
|
|
return;
|
|
}
|
|
|
|
selfCollider->get().monitoring = true;
|
|
|
|
selfCollider->get().AddCollisionListener([this](Entity &other) {
|
|
if (entity->queuedForFree || !context || !context->probeEntity ||
|
|
&other != context->probeEntity) {
|
|
return;
|
|
}
|
|
|
|
context->EmitCollectiblePicked(*entity);
|
|
entity->QueueFree();
|
|
|
|
if (!context->hudEntity) {
|
|
return;
|
|
}
|
|
|
|
auto meter = context->hudEntity->GetComponent<MeterComponent>();
|
|
if (!meter) {
|
|
return;
|
|
}
|
|
|
|
meter->get().AddValue(meter->get().gainPerStar);
|
|
});
|
|
}
|
|
|
|
void CollectibleComponent::Update(float) {}
|
|
|
|
void CollectibleComponent::Cleanup() {}
|