// GameFileUtil.java
package net.sf.gogui.gamefile;
import java.io.File;
import net.sf.gogui.game.ConstNode;
import net.sf.gogui.game.Game;
import net.sf.gogui.game.GameTree;
import net.sf.gogui.go.ConstBoard;
import net.sf.gogui.util.ErrorMessage;
/** Static utility functions. */
public final class GameFileUtil
{
/** Load position from SGF or XML file.
@param file The file.
@param maxMove A move number (or -1 for last position)
@return Position of main variation before that move number or last
position if game has less moves (same convention as in the loadsgf GTP
command).
@throws ErrorMessage If loading fails. */
public static ConstBoard load(File file, int maxMove) throws ErrorMessage
{
GameReader reader = new GameReader(file);
GameTree tree = reader.getTree();
Game game = new Game(tree);
ConstNode node = tree.getRoot();
int moveNumber = 0;
while (true)
{
if (node.getMove() != null)
{
++moveNumber;
if (maxMove >= 0 && moveNumber >= maxMove)
break;
}
ConstNode child = node.getChildConst();
if (child == null)
break;
node = child;
}
game.gotoNode(node);
return game.getBoard();
}
/** Make constructor unavailable; class is for namespace only. */
private GameFileUtil()
{
}
}