package org.ggp.base.apps.kiosk.games;

import java.awt.Color;
import java.awt.Graphics;
import java.util.Set;

import org.ggp.base.apps.kiosk.templates.CommonGraphics;
import org.ggp.base.apps.kiosk.templates.GameCanvas_FancyGrid;


public class BlockerCanvas extends GameCanvas_FancyGrid {
    private static final long serialVersionUID = 1L;

    @Override
    public String getGameName() { return "Blocker"; }
    @Override
    protected String getGameKey() { return "blocker"; }
    @Override
    protected int getGridHeight() { return 6; }
    @Override
    protected int getGridWidth() { return 6; }

    @Override
    protected boolean coordinatesStartAtOne() { return false; }

    @Override
    protected void renderCellBackground(Graphics g, int xCell, int yCell) {
        int width = g.getClipBounds().width;
        int height = g.getClipBounds().height;

        boolean isBlue = (yCell == 0) || (yCell == 5);
        boolean isBlack = ((xCell == 0) || (xCell == 5)) && !isBlue;

        if(isBlue) {
            CommonGraphics.drawBubbles(g, xCell*11+yCell);
        } else if(isBlack) {
            g.setColor(Color.GRAY);
            g.fillRect(1, 1, width-2, height-2);
        }
    }

    @Override
    protected void renderCellContent(Graphics g, String theFact) {
        int width = g.getClipBounds().width;
        int height = g.getClipBounds().height;

        String[] theFacts = theFact.split(" ");
        String theProperty = theFacts[4];
        if(theProperty.equals("blk")) {
            CommonGraphics.drawBubbles(g, theFact.hashCode());
        } else if(theProperty.equals("crosser")) {
            g.setColor(Color.GRAY);
            g.fillRect(1, 1, width-2, height-2);
        }
    }

    @Override
    protected Set<String> getFactsAboutCell(int xCell, int yCell) {
        return gameStateHasFactsMatching("\\( cell " + xCell + " " + yCell + " (.*) \\)");
    }

    @Override
    protected Set<String> getLegalMovesForCell(int xCell, int yCell) {
        return gameStateHasLegalMovesMatching("\\( mark " + xCell + " " + yCell + " \\)");
    }
}