public InputRequest takeInputRequest(InputRequest i) { makeAllUnSelectable(); confirmPanel.setText(i.getOwner().getName() + "! " + i.getMessage()); confirmPanel.activate(); if (i instanceof CreatureSelectionRequest) { CreatureSelectionRequest request = (CreatureSelectionRequest) i; List<CardPanel> creaturePanels = getCreaturePanelsOnFields(request.getPossibleCreatures()); for (CardPanel panel : creaturePanels) { panel.setSelectable(true); } Thread b = new Thread(); synchronized (b) { while (!request.hasAnswer()) { while (!confirmPanel.isConfirmed()) { try { b.wait(250); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } List<CreatureCard> creatures = new LinkedList<CreatureCard>(); for (CardPanel panel : creaturePanels) { if (panel.isSelected()) { creatures.add((CreatureCard) panel.getCard()); } } try { request.setCreatures(creatures); } catch (InvalidSelectionException e) { confirmPanel.setText("Invalid Selection: " + request.getMessage()); confirmPanel.activate(); } } } } else if (i instanceof PlayerSelectionRequest) { PlayerSelectionRequest request = (PlayerSelectionRequest) i; List<PlayerSelectionPanel> playerPanels = getPlayerSelectionPanels(request.getPossiblePlayers()); for (PlayerSelectionPanel panel : playerPanels) { panel.setSelectable(true); } Thread b = new Thread(); synchronized (b) { while (!request.hasAnswer()) { while (!confirmPanel.isConfirmed()) { try { b.wait(250); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } List<Player> players = new LinkedList<Player>(); for (PlayerSelectionPanel panel : playerPanels) { if (panel.isSelected()) { players.add((Player) panel.getReference()); } } try { request.setSelectedPlayers(players); } catch (InvalidSelectionException e) { confirmPanel.setText("Invalid Selection: " + request.getMessage()); confirmPanel.activate(); } } } } else if (i instanceof CardSelectionRequest) { CardSelectionRequest request = (CardSelectionRequest) i; /*for(Card card : request.getPossibleCards()) { //System.out.println(card.getName()); }*/ List<CardPanel> cardPanels = getCardPanelsInHands(request.getPossibleCards()); for (CardPanel panel : cardPanels) { // System.out.println("Selectable!"); panel.setSelectable(true); } Thread b = new Thread(); synchronized (b) { while (!request.hasAnswer()) { while (!confirmPanel.isConfirmed()) { try { b.wait(250); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // System.out.println(confirmPanel.isConfirmed()); List<Card> cards = new LinkedList<Card>(); for (CardPanel panel : cardPanels) { if (panel.isSelected()) { // System.out.println("Hellooooo"); // System.out.println(panel.getCard().getName()); cards.add((Card) panel.getCard()); } } try { // System.out.println("Selected Cards"); // System.out.println(cards); // System.out.println("Possible Cards"); // System.out.println(request.getPossibleCards()); request.setSelectedCards(cards); } catch (InvalidSelectionException e) { confirmPanel.setText("Invalid Selection: " + request.getMessage()); confirmPanel.activate(); } } } } else if (i instanceof BooleanInputRequest) { confirmPanel.getBoolPanel().activate(); BooleanInputRequest request = (BooleanInputRequest) i; Thread b = new Thread(); synchronized (b) { while (!request.hasAnswer()) { while (!confirmPanel.isConfirmed()) { try { b.wait(250); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } request.setAnswer(confirmPanel.getBoolPanel().getAnswer()); } } confirmPanel.getBoolPanel().deactivate(); } else if (i instanceof EndGameInputRequest) { refreshPlayers(); System.out.println("The game has ended"); } makeAllUnSelectable(); return i; }