2023-08-26 09:28:06 -04:00

45 lines
1.1 KiB
C

#include "component_heart.h"
/* Determines current heart state. */
void
_state_set(ComponentHeart* self, ECS* ecs)
{
HeartState previousState;
previousState = self->state;
if (self->concurrentUses >= COMPONENT_HEART_CONCURRENT_USES_HEAVY)
self->state = HEART_STATE_HEAVY;
else if (self->concurrentUses >= COMPONENT_HEART_CONCURRENT_USES_MEDIUM)
self->state = HEART_STATE_MEDIUM;
else
self->state = HEART_STATE_LIGHT;
if (self->state != previousState)
{
if (self->state == HEART_STATE_HEAVY)
music_play(&ecs->game->resources.music[MUSIC_COMBAT_THREE], true);
else if (self->state == HEART_STATE_MEDIUM)
music_play(&ecs->game->resources.music[MUSIC_COMBAT_TWO], true);
}
}
/* Ticks heart component. */
void
component_heart_tick(ComponentHeart* self, ECS* ecs)
{
ComponentGoodies* goodies;
goodies = ecs_component_get(ecs, ECS_COMPONENT_GOODIES, self->component.id);
if (self->concurrentUses > 1)
self->multiplier = self->uses + pow(self->concurrentUses, 2);
else
self->multiplier = self->uses + 1;
if (goodies)
goodies->multiplier = self->multiplier;
_state_set(self, ecs);
}