package com.editev.chess.printer;

import com.editev.chess.GameHTML;
import com.editev.util.Lists;

/** Prints the array of captured pieces. 
 *
 *  @see See the source here.
 */
public class CapturedPrinter extends Printer {
    /** A template for CSS styles for captured pieces.. */
    private static String STYLE_TEMPLATE = "; font-family: sans-serif }\n";

    /** The name of a style for a captured piece. 
     *
     * @return name of the style representing that piece and square color. 
     */
    public static String styleName( boolean isWhitePiece ) { return  isWhitePiece ? "white" : "black"; }
    
    boolean isWhite;
    public CapturedPrinter( boolean isWhite ) { this.isWhite = isWhite; }
    
    /** Prints the array of captured pieces.
     *  @param game the GameHTML with the board status and PrintStream for this board.
     */
    public void print( GameHTML game ) {
        Lists.Bytes captured = game.getCaptured( isWhite );
        int length = captured.getLength();
        if (length == 0) return;
        int root   = (int) Math.floor( Math.sqrt( length ) );
        if (length == 2 || length > root*root+root) root++;    // make the table wider for better results.
        
        game.out.startTag( "\n" );

        for (int i=0; i " );
            game.out.print( " " );                             // finally, the end of the table entry.
            if ((i+1)%root == 0 || i==(length-1)) game.out.print( "\n" );
        }

        game.out.endTag( "
" ); // end the target of the table entry game.out.print( game.getPieceHTML( captured.getAt( i ) ) ); game.out.print( "
\n" ); } }