/*Dado uma posicao, checa se para alguma direcao existe um projectile, e retorna qual direcao esta o mais perto, contando giradas necessarias*/ int searchNearestProjectile (Grid *g, Position p, Robot *r) { int i, min = 500, best_dir = 0, cont; Position s; for (i = 0; i < 6; i++) { /*Conta para chegar o numero de viradas necessarias ja que elas gastam um turno*/ cont = 1 + quickTurn (r->dir, i); s = getNeighbor (p, i); while (limiteDoMapa (s, g->m, g->n)) { if (isProjectile (g, s)) { if(cont < min) { min = cont; best_dir = i; break; } } s = getNeighbor (s, i); } } /*Nao existe robos nas direções ao redor do jogador*/ if (min == 500) return -1; else return best_dir; }
bool audio_ObjectDead(SIMPLE_OBJECT *psSimpleObj) { /* check is valid simple object pointer */ if (psSimpleObj == nullptr) { debug(LOG_NEVER, "audio_ObjectDead: simple object pointer invalid"); return true; } /* check projectiles */ if (isProjectile(psSimpleObj)) { return castProjectile(psSimpleObj)->state == PROJ_POSTIMPACT; } else { /* check base object */ return psSimpleObj->died; } }