RogueLife/src/item.c

43 lines
1.0 KiB
C

#include "item.h"
#include "aoe.h"
#include "comp/fighter.h"
#include "comp/physical.h"
#include "comp/visible.h"
#include <gint/defs/util.h>
entity_t *item_make(item_data_t const *data, vec2 position)
{
entity_t *e = aoe_make(AOE_ITEM, position, fix(9999.0));
visible_t *v = getcomp(e, visible);
v->sprite_plane = VERTICAL;
v->shadow_size = 3;
v->z = fix(0.35);
physical_t *p = getcomp(e, physical);
p->hitbox = (rect){ -fix(4)/16, fix(3)/16, -fix(2)/16, fix(1)/16 };
aoe_t *aoe = getcomp(e, aoe);
aoe->origin = NULL;
aoe->repeat_delay = 0;
aoe->data.item.data = *data;
if(data->type == ITEM_LIFE) {
visible_set_anim(e, &anims_item_life, 1);
}
// else if(data->type == ITEM_X) {
// visible_set_anim(e, &anims_item_x, 1);
// }
return e;
}
void item_pick_up(item_data_t const *data, entity_t *player)
{
fighter_t *f = getcomp(player, fighter);
if(data->type == ITEM_LIFE && f) {
f->HP = min(f->HP + data->life.HP, f->HP_max);
}
}