package a8;

import java.util.Observable;
import java.util.Observer;
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

import javax.swing.JFrame;

public class A8Main {

	public static void main(String[] args) {

		ChessPlayer p1 = new ChessPlayer("P1");
		ChessPlayer p2 = new ChessPlayer("P2");

		ChessGame game = new ChessGame(p1, p2);
		
		CommandLoop cmd_loop = new CommandLoop(game);
		
		JFrame main_frame = new JFrame();
		main_frame.setTitle("Chess Game");
		main_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		ChessGameView game_view = new ChessGameView(game);
		main_frame.setContentPane(game_view);
		main_frame.pack();
		main_frame.setSize(1000,1000);
		main_frame.setVisible(true);
		game_view.addMoveListener(cmd_loop);
		cmd_loop.run();
	}
}

class CommandLoop implements MoveListener {

	private ChessGame game;

	public CommandLoop(ChessGame game) {
		this.game = game;
	}

	public void run() {
		ChessBoard board = game.getBoard();
	}

	@Override
	public void moveAttempted(ChessMove m) throws WrongTurn {
		try {
			ChessPiece p = game.getBoard().getPieceAt(m.getFrom());
			if (p != null) {
				
				if((game.getPlayer1Move()&&m.getPiece().getOwner().getName()=="P1")||(!game.getPlayer1Move()&&m.getPiece().getOwner().getName()=="P2")){
				p.moveTo(m.getTo());
				game.changePlayerMove();
				}else{
					throw new WrongTurn();
				}
			}
		} catch (IllegalMove e) {
			System.out.println(e.toString());
		}
	}
}
