void Powerup_PickUp (int x, int y) { int i; powerup_t *pow; bool p_left = false, p_pick = false; for (i = 0, pow = levelData.powerups ; i < levelData.numPowerups ; i++, pow++) { if (pow->x == x && pow->y == y) { // got a powerup here if (Pow_Give (pow->type)) { //FIXME script // picked up this stuff, remove it! p_pick = true; Sprite_RemoveSprite (pow->sprite); Pow_Remove (pow); } else { // player do not need it, so may be next time! p_left = true; } } } if (p_left) { levelData.tilemap[ x ][ y ] |= POWERUP_TILE; } else { levelData.tilemap[ x ][ y ] &= ~POWERUP_TILE; } }
/* ----------------------------------------------------------------------------- Function: Parameters: Returns: Notes: ----------------------------------------------------------------------------- */ PUBLIC void Powerup_Reset( void ) { powerup_t *powerup = powerups; while( powerup ) { powerup = Pow_Remove( powerup ); } powerups = NULL; }
/* ----------------------------------------------------------------------------- Function: Parameters: x, y -[in] In are in TILES. Returns: Notes: ----------------------------------------------------------------------------- */ PUBLIC void Powerup_PickUp( int x, int y ) { powerup_t *pow; _boolean p_left = false, p_pick = false; for( pow = powerups ; pow ; pow = pow->next ) { check_again: if( pow->x == x && pow->y == y) {// got a powerup here if( Pow_Give( pow->type ) ) //FIXME script {// picked up this stuff, remove it! p_pick = true; Sprite_RemoveSprite( pow->sprite ); pow = Pow_Remove( pow ); if( pow ) goto check_again; else break; } else {// player do not need it, so may be next time! p_left = true; } } } if( p_left ) { r_world->tilemap[ x ][ y ] |= POWERUP_TILE; } else { r_world->tilemap[ x ][ y ] &= ~POWERUP_TILE; } }