/* CVS: $Id: Evolver.java,v 1.14 2001/03/18 20:54:12 gvijf Exp $ */

package evolution;

import java.util.*;

/**
 * Interface for objects which want to register by the Evolution manager.
 */
public interface Evolver {

   /**
    * This method is called when the Evolver should evolve to the
    * next state.
    */
   public void evolve(double value);

   /**
    * Return the priority of this evolver
    */
   public double getPriority();

   /**
    * Check whether this evolver produces energy or not.
    */
   public boolean producesEnergy();

   /**
    * Return the maximum energy production of this evolver.
    * @param maxProduction A (String, Double) map wich holds the maximal
    * production of worldresources.
    * @param leftOver A (String, Double) map wich holds the actual status
    * of worldresources in calculating the maximum energy production.
    */
   public double maxEnergyProduction(Map maxProduction, Map leftOver);

}