#include <stdio.h>
#include "globals.h"
#include "graphics.h"
#include "trie.h"

extern char *currentmove;

eval(char fill[17][17], int trans[17][17], unsigned int r, unsigned int c)
{
    register int    c1,
                    xscore = 0,
                    fscore = 0,
                    factor = 1,
                    count = 0;
    register char ch, *moveptr=currentmove;
    register int    l,
                    t;
    if (!*moveptr) return;
    for (c1 = c - 1; ; c1--)
        if (ch=fill[r][c1]) fscore += lettervalue[ch];
	else if (ch = *moveptr--)
	  {
	    l = lettermult[r][c1] * lettervalue[ch];
	    t = trans[r][c1];
	    if (t >= 0)
		xscore += (t + l) * wordmult[r][c1];
	    fscore += l;
	    factor *= wordmult[r][c1];
	    count++;
	}
	else break;

    xscore += fscore * factor + 50 * (count == 7);
    fscore = xscore;
    if (fscore > bestmove.value) {
        for(moveptr=currentmove, t=0; *moveptr; moveptr--, t++)
		bestmove.word[t] = *moveptr | NEWBIT;
	bestmove.word[t] = 0;
	bestmove.r = r;
	bestmove.c = c;
	bestmove.fill = fill;
	bestmove.score = xscore;
	bestmove.value = fscore;
    }
}