cs381/as6/components/CollectibleComponent.cpp

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() {}