/**
*
*/
package rampancy;
import rampancy.util.*;
import rampancy.util.wave.RBulletWave;
import rampancy.util.wave.REnemyWave;
import rampancy.util.wave.RWave;
import robocode.Bullet;
import java.awt.Graphics2D;
import java.util.List;
/**
* @author Matthew Chun-Lum
*
*/
public interface RWaveManager extends REnemyListener{
public void updateReference(RampantRobot reference);
/**
* Adds a wave to the wave manager
* @param wave the wave to add to the wave manager
*/
public void add(RWave wave);
/**
* @return the closest wave to the RampantRobot's current location
*/
public RWave getClosestWave();
/**
* @param location
* @return the closest wave to the given location
*/
public RWave getClosestWave(RPoint location);
/**
* @param bullet
* @return the bullet wave corresponding to the given bullet
*/
public RBulletWave getWaveForBullet(Bullet bullet);
/**
* @return the closest wave to the RampantRobot's current location
*/
public REnemyWave getClosestEnemyWave();
/**
* @param location
* @return the closest wave to the given location
*/
public REnemyWave getClosestEnemyWave(RPoint location);
/**
* @param bullet
* @return the enemy wave that corresponds to the given bullet
*/
public REnemyWave getWaveForEnemyBullet(Bullet bullet);
/**
* @return a list of the enemy waves
*/
public List<REnemyWave> getEnemyWaves();
/**
* updates the positions of all waves
*/
public void update();
/**
* Removes all the waves from the manager
*/
public void clearWaves();
/**
* @param g
*/
public void draw(Graphics2D g);
}