
// TilesPriQueue.java 
// Andrew Davison, April 2005, ad@fivedots.coe.psu.ac.th

/* Podtřída třídy TilesList.

   Objekt typu TilesPriQueue uchovává 'otevřený' seznam dlaždic, 
   které dosud nebyly navštínevy algoritmem A*.
   Instance tříd TileNode jsou v seznamu TilesList setříděny sestupně dle
   ohodnocení uzlu.

   Algoritmus hledání cesty A* využívají objekty typu AlienAStarSprite.
*/

import java.awt.*;
import java.util.*;


public class TilesPriQueue extends TilesList
{
  public TilesPriQueue()
  { super();  }

  public TilesPriQueue(TileNode node)
  {  super(node);  }


  public void add(TileNode node)
  /* Přetížená metoda add(), aby se seznam sestavoval 
     setříděn sestupně dle ohodnocení.
  */
  {
    double newScore = node.getScore();
    TileNode entry;
    for(int i=0; i < nodes.size(); i++) {
      entry = (TileNode) nodes.get(i);
      if (newScore <= entry.getScore()) {
        nodes.add(i, node);
        return;
      }
    }
    nodes.add(node);   // přidej uzel na konec seznamu
  }  // konec metody: add()


  public TileNode removeFirst()
  {  return (TileNode) nodes.remove(0);  }
    

}  // konec třídy: TilesPriQueue
