import java.util.List; import java.util.ArrayList; import java.io.BufferedReader; public class Interaction { String nom; Condition visible; List connaissances; List objetsRecus; List objetsConso; List actions; public Interaction( String nom, Condition visible, List connaissances, List objetsRecus, List objetsConso, List actions) { this.nom = nom; this.visible = visible; this.connaissances = connaissances; this.objetsRecus = objetsRecus; this.objetsConso = objetsConso; this.actions = actions; } void interragir(BufferedReader reader, Lieu lieu) { for (Objet o : this.objetsRecus) { Jeu.explorateur.objets.add(o); } for (Objet o : this.objetsConso) { Jeu.explorateur.objets.remove(o); } for (Connaissance c : this.connaissances) { if (!Jeu.explorateur.connaissances.contains(c)) { Jeu.explorateur.connaissances.add(c); } } while (true) { System.out.println(this); System.out.print("\nChoix : "); List actions_choix = new ArrayList<>(); for (Action a : this.actions) { if (a.visible.evaluer()) { actions_choix.add(a); } } int choix = 0; Action a = null; try { choix = Integer.parseInt(reader.readLine()); a = actions_choix.get(choix); } catch (Exception e) { continue; } a.actionner(); if (a.finInterraction.evaluer()) break; } } @Override public String toString() { String res = ""; int k = 0; for (Action a : this.actions) { if (a.visible.evaluer()) { res += "[" + k + "] " + a + "\n"; k++; } } return res; } public static Interaction search(List list, String name) { return list.stream().filter(o -> o.nom.equals(name)).findFirst() .orElseThrow(() -> new IllegalArgumentException("No data found")); } }