#include "animation.h" #include "components.h" #include "enemy.h" #include "world.h" int new_spawner( World* world, int x, int y ) { Entity e; CPosition* pos; CSprite* sprite; CAnimated* animated; e = new_entity(world); add_components( world, e, ctype_sprite | ctype_position | ctype_animated | ctype_spawner ); pos = &world->positions[e]; sprite = &world->sprites[e]; animated = &world->animateds[e]; pos->x = x; pos->y = y; sprite->id = asset_id_usr; sprite->rect = make_rect(0, 0, 16, 16); animated->id = animation_spawn; animated->frame = 0; animated->timer = 0; return e; } void spawner_system(World* world) { int i; const CPosition* pos; const CAnimated* animated; const Animation* animation; unsigned bits; for (i = 0; i < world->entity_count; i++) { bits = world->bitmask[i]; if ( (bits & ctype_spawner) && (bits & ctype_position) && (bits & ctype_animated) ) { pos = &world->positions[i]; animated = &world->animateds[i]; animation = get_animation(animated->id); if (animated->frame == animation->frame_count - 1) { new_skull(world, pos->x, pos->y); destroy_entity(world, i); } } } }