#include "MetaBit.h" #include #include struct MetaBit *newMetaBit(int type, int owner, struct Vector *home, struct Phys phys) { struct MetaBit *metabit = malloc(sizeof(struct MetaBit)); metabit->type = type; metabit->home = home; metabit->phys = phys; metabit->l_phys = phys; metabit->speed = 2.0f; metabit->turn_rate = 0.1f; metabit->owner = owner; cleanVector(&metabit->home_offset); metabit->target = NULL; cleanVector(&metabit->target_offset); cleanAnim(&metabit->animation); metabit->attack_id = 0; metabit->move_id = 0; metabit->cmd = CMD_HOME; metabit->r = 1.0f; metabit->g = 1.0f; metabit->b = 1.0f; metabit->a = 1.0f; return metabit; } struct MetaBit *freeMetaBit(struct MetaBit *metabit) { free(metabit); return NULL; } int setMetaBitAnim(struct MetaBit *metabit, struct AnimData* data) { metabit->animation.anim = data; setAnimSet(&metabit->animation, "spin"); setAnimFace(&metabit->animation, "s"); setAnimFrame(&metabit->animation, 0); return 0; } // runs logic and influences velocity towards target int handleMetaBit(struct MetaBit *metabit) { Vector target; if (metabit->target != NULL) { target = addVector(*metabit->target, metabit->target_offset); } else if (metabit->home != NULL) { target = addVector(*metabit->home, metabit->home_offset); } else { target = metabit->phys.position; } // randomize movement target.x += (-60 + (rand()%120)); target.y += (-60 + (rand()%120)); turnToVector(&metabit->phys, target, metabit->turn_rate); addForce(&metabit->phys, metabit->speed + (rand()%(int)metabit->speed)); return 0; }