/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package grupp07.model;

import java.util.ArrayList;
import javafx.scene.paint.Color;
import javafx.util.Pair;

/**
 *
 * @author gast
 */
public abstract class Player {
    
    private String name;
    private Color playerColor;
    
    /** This function should return the wished next move for player.
     * 
     * @return a tuple of the wished move containing two Integers for player.
     */
    public abstract Pair nextMove();
    
    /** This function may use the supplied list of possible moves for
     * the actual game. The player returns a wished move, that may be one of
     * the supplied ones.
     * 
     * @param coords is a list of possible moves for the current player to
     * choose from. This could guide a computer player for example.
     * @return 
     */
    public abstract Pair nextMove(ArrayList<Pair<Integer, Integer>> coords);
    
    /** This function gets the players color.
     * 
     * @return the player's color.
     */
    public Color getColor(){
        return playerColor;
    }
    
    /** This function sets the players color.
     * 
     * @param color  the  player to use color.
     */
    public void setColor(Color color){
        playerColor = color;
    }
    
    /** This function gets the name of the player.
     * 
     * @return the name of the player
     */
    public String getName(){
        return name;
    }
    
    /** This function sets the players name
     * 
     * @param name  the player's name.
     */
    public void setName(String name){
         this.name = name;
    }
}
