static int player_frame_end(Player * player, IOOPS * io_ops) { if (player->cur_shape) return 1; if (player->grade > player->old_grade) { if (player->grade / BLOCK_GRADE && !(player->grade % BLOCK_GRADE)) { player->speed *= 0.9; player->level++; } io_ops->out_grade(player); player->old_grade = player->grade; } player->cur_shape = player->next_shape; player->next_shape = shapes[rand_id()]; cp_next_shape(player); io_ops->out_next_block(player); player->direct = 0; player->x = BLOCK_MAP_W / 2 - player->cur_shape->w / 2; player->y = 0; cp_shape_to_block(player->blocks, player->x, player->y, player->cur_shape); if (check_collide(player)) return 0; return 1; }
void spaceSector :: handle_weapons() { // go through the array and call draw functions vector<spaceWeapon*>::iterator weapons_i; for (weapons_i = weapons.begin() ; weapons_i != weapons.end() ; weapons_i++) { (*weapons_i)->tick(); // remove this weapon if no bullets exist AND the owner is dead /* if( !(*weapons_i)->parent->alive ) if( !(*weapons_i)->alive ) { weapons.erase(weapons_i); weapons_i--; continue; } */ // do collision detection here // DEBUG : let's be lazy and do it with EVERY ship! vector<spaceBullet>::iterator bullet_i; spaceShip* victim; for(bullet_i = (*weapons_i)->part.begin() ; bullet_i != (*weapons_i)->part.end() ; bullet_i++) { victim = check_collide( bullet_i ); if(victim != NULL) { (*weapons_i)->damage(bullet_i, victim); // then remove this bullet // NOTE / HACK : instead of erasing it here and messing up the iterator, // let's just set it's life to 0 so it will automatically get removed bullet_i->life = 0; } }// bullet collision loop } // weapon handle loop }