#include "internal.h"
#include "ap.h"

extern int score[27];

void
KinitialiseAP()
 {
  InitialiseAP();
 }

/*---------------------------------------*/

KBMove *
KAPMove(KTileList *g)
 {
  KBMove *temp;
  KTile  *t;
  t_move_list temp2;
  t_move_list tile;
  int i=0;


  temp = (KBMove *)malloc(sizeof(KBMove));
  tile.moves = (t_move *)malloc(sizeof(t_move)*7);


  /* Convert KTileList to t_move_list */
  tile.num_moves = 0;
  tile.move_type = NUM_BMS_MOVE_TYPES;

  t = g->Tiles;

  while (t != NULL)
   {
    tile.num_moves++;
    tile.moves[i].letter = t->letter;
	tile.moves[i].move_base_value = score[(int)(t->letter-97)];
    i++;
    t = t->link;
   }


  temp2 = APMove(tile);


  temp->numMoves = temp2.num_moves;

  if (temp2.move_type == BMS_PLACE_MOVE)
    temp->type = PLACE;
  else
    temp->type = SWAP;

  for (i = 0; i < temp2.num_moves; i++)
   {

    temp->moves[i].letter = temp2.moves[i].letter;
    temp->moves[i].Pos.x = temp2.moves[i].grid_ref.x;
    temp->moves[i].Pos.y = temp2.moves[i].grid_ref.y;
    if (temp2.moves[i].move_base_value == 0)
     {
      temp->moves[i].fromBlank = 1;
     } 
    else
     {
      temp->moves[i].fromBlank = 0;
     }
   }

  return(temp);

 }

