void processa_colisao(Buffer* buffer){ Missil* missil_tanque = get_missil_tanque(buffer->tanque); if (missil_tanque) if( get_y_missil(missil_tanque) < 0) destroi_missil_tanque(buffer->tanque); else { int pts = colide_wave(buffer->invasores, missil_tanque); if(pts){ *buffer->score += pts; destroi_missil_tanque(buffer->tanque); } else if(colide_nave(buffer->ovni, missil_tanque)){ play_sound(buffer->sound_mng, UFO_HIGHPITCH); *buffer->score += PONTOS_NAVE_MAE; buffer->ovni = NULL; destroi_missil_tanque(buffer->tanque); } else for (int i = 0; i < buffer->n_escudos && missil_tanque; i++) if (colide_escudo(buffer->escudo[i], missil_tanque)){ destroi_missil_tanque(buffer->tanque); break; } } for (int i=0; i<MAX_MISSEIS; i++){ Missil* missil_wave = get_missil_wave(buffer->invasores, i); if (missil_wave){ if ( get_y_missil(missil_wave) > buffer->altura_inicial) destroi_missil_wave(buffer->invasores, i); else{ for (int j = 0; j < buffer->n_escudos && missil_wave; j++) if (colide_escudo(buffer->escudo[j], missil_wave)){ destroi_missil_wave(buffer->invasores, i); break; } if (colide_tanque(buffer->tanque, missil_wave)){ destroi_missil_wave(buffer->invasores, i); tanque_morreu(buffer); } } } } if(get_bottom_wave(buffer->invasores) >= get_top_escudo(buffer->escudo[0])) for(int i=0; i<buffer->n_escudos; i++) destroi_topo_escudo(buffer->escudo[i]); }
void processa_colisao(Buffer* buffer){ Missil* missil = get_missil_tanque(buffer->tanque); if (missil) if( get_y_missil(missil) < 0) destroi_missil_tanque(buffer->tanque); else if(get_y_missil(missil) > get_bottom_wave(buffer->invasores) && colide_wave(buffer->invasores, missil)) destroi_missil_tanque(buffer->tanque); else for (int i = 0; i < buffer->n_escudos && missil; i++) if (colide_escudo(buffer->escudo[i], missil)){ destroi_missil_tanque(buffer->tanque); break; } }