package rulettasztal;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Random;
import java.util.Scanner;

/**
 * @author Daniel "3ICE" Berezvai
 */
public class RulettAsztal {

  public static void main(String[] args) {
    Random rnd = new Random();

    Scanner sc;
    try {
      sc = new Scanner(new FileInputStream("roulette.txt"));
    } catch (FileNotFoundException ex) {
      System.err.println("A roulette.txt nem talalhato");
      return;
    }

    if (!sc.hasNextInt()) {
      System.err.println("A seed nem olvashato");
      sc.close();
      return;
    }
    int seed = sc.nextInt();
    rnd.setSeed(seed); // hogy ne legyen teljesen veletlen, azaz ellenorizheto legyen a program
    RouletteTable rouletteTable = new RouletteTable(rnd);


    if (!sc.hasNextInt()) {
      System.err.println("A jatekosok szama nem olvashato");
      sc.close();
      return;
    }
    int numOfPlayers = sc.nextInt();
    for (int i = 0; i < numOfPlayers; i++) {
      if (!sc.hasNext()) {
        System.err.println("A(z) " + (i + 1) + ". jatekos tipusa nem olvashato");
        sc.close();
        return;
      }
      String type = sc.next();
      if (type.equals("RandomPlayer")) {
        rouletteTable.join(new RandomPlayer(rnd));
      } else if (type.equals("TacticalPlayer")) {
        rouletteTable.join(new TacticalPlayer(rnd));
      } else {
        System.err.println("A(z) " + (i + 1) + ". jatekos tipusa hibas: " + type);
        sc.close();
        return;
      }
    }

    if (!sc.hasNextInt()) {
      System.err.println("A kezdo zsetonertek nem olvashato");
      sc.close();
      return;
    }
    int initCredit = sc.nextInt();
    System.out.println("Az asztal mindenkinek ad " + initCredit + " zsetont");
    rouletteTable.giveCreditToAll(initCredit);

    if (!sc.hasNextInt()) {
      System.err.println("A korok szama nem olvashato");
      sc.close();
      return;
    }
    int numOfRounds = sc.nextInt();
    for (int i = 0; i < numOfRounds; i++) {
      System.out.println("A(z) " + (i + 1) + ". porgetes kovetkezik");
      System.out.println("Az asztal a teteket keri");
      rouletteTable.betsPlease();
      System.out.println("\tdebug - BETS = " + rouletteTable.getPlayersBets());
      System.out.println("\tdebug - NUMBERS = " + rouletteTable.getPlayersNumbers());
      System.out.print("Az asztal porget... ");
      int number = rouletteTable.spin();
      System.out.println("eredmeny: " + number);
      rouletteTable.payWinners();
      System.out.println(rouletteTable.getPlayersCredits());
    }

    sc.close();
  }
}
