package server;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.Socket;

import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONTokener;

public class ClientGame extends BaseGame {
	Socket socket;
	
	int selectedPlayer;
	int selectedCards;
	int chosenColor;
	int chosenValue;
	boolean useColor;
	boolean useValue;
	boolean placeCard;
	boolean trashCard;
	
	//Options stuff
	final File options = new File("options.json");
	JSONObject root;
	int difficulty;
	int fontSize;
	
	protected void loadOptions(){
		try {
			JSONTokener tokener = new JSONTokener(options.toURI().toURL().openStream());
			root = new JSONObject(tokener);
			difficulty = root.getInt("difficulty");
			fontSize = root.getInt("fontSize");
			if(difficulty < 0) difficulty = 0;
			if(fontSize <= 0) fontSize = 20;
		} catch (JSONException e) {
			e.printStackTrace();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void resetMoveValues(){
		selectedPlayer = -1;
		chosenColor = -1;
		chosenValue = -1;
		selectedCards = 0;
		useColor = useValue = trashCard = placeCard = false;
	}
	
	boolean checkValidMove(){
		if(selectedCards == 0) return false;
		if(!hintAvailable() && (useColor || useValue)) return false;
		if((trashCard || placeCard) && selectedCards == 1) return true;
		int countCards = 0;
		for(int i=0; i<CARDS_PER_PLAYER; ++i){
			AbstractPlayer p = players[selectedPlayer];
			if(useColor){
				if(p.getCard(i).getColorInt() == chosenColor) countCards++;
			} else if(useValue){
				if(p.getCard(i).getValue() == chosenValue) countCards++;
			}
		}
		return countCards == selectedCards;
	}
	
	@Override
	protected void createUI() {
		// TODO Auto-generated method stub

	}

	@Override
	protected void setNoCard(int index) {
		// TODO Auto-generated method stub

	}

	@Override
	public void loadFont() {
		// TODO Auto-generated method stub

	}

	@Override
	public Object getFont() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void printMessage(String msg, MSG_TYPES type) {
		// TODO Auto-generated method stub

	}

	@Override
	protected void showTrash() {
		// TODO Auto-generated method stub

	}

}
