@Override
	/**
	 * Decides how to act at a given state of the game
	 * @param raiseAllowed is it allowed to raise or not
	 */
	public PlayerAction makeBet(boolean raiseAllowed) throws Exception {
		PlayerAction action = new PlayerAction();
		action.oldStake = currentBet;
		if (folded) {
			action.action = PlayerAction.ACTION.FOLD;
			return action;
		}

		action = strategy.chooseAction(state, this);

		double payToCall = state.getBiggestRaise() - currentBet;
		action.potOdd = payToCall / (payToCall + state.getPot());
		
		if (action.action == PlayerAction.ACTION.CALL
				|| (action.action == PlayerAction.ACTION.RAISE && !raiseAllowed)) {
			action.action = PlayerAction.ACTION.CALL;
			action.toPay = state.getBiggestRaise() - currentBet;
			makeRaise(action.toPay);
		} else if (action.action == PlayerAction.ACTION.RAISE) {
			makeRaise(action.toPay);
		} else { // Fold
			folded = true;
			action.action = PlayerAction.ACTION.FOLD;
		}
		return action;
	}