feat: java fini ?

This commit is contained in:
Laurent Fainsin 2022-01-18 23:29:53 +01:00
parent 275f849c47
commit 9a145618c7
18 changed files with 2844 additions and 2478 deletions

View file

@ -50,8 +50,4 @@ public class Action {
return "No desc"; return "No desc";
} }
public static Action search(List<Action> list, String name) {
return list.stream().filter(o -> o.nom.equals(name)).findFirst()
.orElseThrow(() -> new IllegalArgumentException("No data found"));
}
} }

View file

@ -61,8 +61,4 @@ public class Chemin {
return this.lieuOut; return this.lieuOut;
} }
public static Chemin search(List<Chemin> list, String name) {
return list.stream().filter(o -> o.nom.equals(name)).findFirst()
.orElseThrow(() -> new IllegalArgumentException("No data found"));
}
} }

View file

@ -24,8 +24,4 @@ public class Connaissance {
return "(no description)"; return "(no description)";
} }
public static Connaissance search(List<Connaissance> list, String name) {
return list.stream().filter(o -> o.nom.equals(name)).findFirst()
.orElseThrow(() -> new IllegalArgumentException("No data found"));
}
} }

View file

@ -19,8 +19,4 @@ public class Description {
return this.texte; return this.texte;
} }
public static Description search(List<Description> list, String name) {
return list.stream().filter(o -> o.nom.equals(name)).findFirst()
.orElseThrow(() -> new IllegalArgumentException("No data found"));
}
} }

View file

@ -25,7 +25,7 @@ public class Interaction {
this.actions = actions; this.actions = actions;
} }
void interragir(BufferedReader reader, Lieu lieu) { void interragir(BufferedReader reader) {
for (Objet o : this.objetsRecus) { for (Objet o : this.objetsRecus) {
Jeu.explorateur.objets.add(o); Jeu.explorateur.objets.add(o);
@ -40,21 +40,21 @@ public class Interaction {
} }
while (true) { while (true) {
System.out.println(this); Jeu.clearScreen();
System.out.print("\nChoix : "); List<Action> interaction_choix = new ArrayList<>();
List<Action> actions_choix = new ArrayList<>();
for (Action a : this.actions) { for (Action a : this.actions) {
if (a.visible.evaluer()) { if (a.visible.evaluer()) {
actions_choix.add(a); System.out.println("[" + interaction_choix.size() + "] " + a);
interaction_choix.add(a);
} }
} }
System.out.print("\nChoix : ");
int choix = 0; int choix = 0;
Action a = null; Action a = null;
try { try {
choix = Integer.parseInt(reader.readLine()); choix = Integer.parseInt(reader.readLine());
a = actions_choix.get(choix); a = interaction_choix.get(choix);
} catch (Exception e) { } catch (Exception e) {
continue; continue;
} }
@ -66,21 +66,4 @@ public class Interaction {
} }
} }
@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<Interaction> list, String name) {
return list.stream().filter(o -> o.nom.equals(name)).findFirst()
.orElseThrow(() -> new IllegalArgumentException("No data found"));
}
} }

View file

@ -2,24 +2,32 @@ import java.io.InputStreamReader;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
public class Jeu { public class Jeu {
public static Explorateur explorateur; public static Explorateur explorateur;
Territoire territoire; Territoire territoire;
List<Objet> objets; Map<String, Objet> objets;
List<Connaissance> connaissances; Map<String, Connaissance> connaissances;
List<Personne> personnes; Map<String, Personne> personnes;
List<Transformation> transformations; Map<String, Transformation> transformations;
Lieu lieu = null; static Lieu lieu = null;
Personne personne = null;
static void clearScreen() {
System.out.print("\033[H\033[2J");
System.out.flush();
System.out.println("Lieu actuel: " + lieu + "\n");
System.out.println("Explorateur:\n" + Jeu.explorateur + "\n");
System.out.println("-".repeat(50));
}
public Jeu( public Jeu(
Territoire territoire, Territoire territoire,
List<Objet> objets, Map<String, Objet> objets,
List<Connaissance> connaissances, Map<String, Connaissance> connaissances,
List<Personne> personnes, Map<String, Personne> personnes,
List<Transformation> transformations) { Map<String, Transformation> transformations) {
this.territoire = territoire; this.territoire = territoire;
this.objets = objets; this.objets = objets;
this.connaissances = connaissances; this.connaissances = connaissances;
@ -27,16 +35,11 @@ public class Jeu {
this.transformations = transformations; this.transformations = transformations;
} }
public static void clearScreen() {
System.out.print("\033[H\033[2J");
System.out.flush();
}
void jouer() { void jouer() {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// on cherche le (premier) lieu de départ // on cherche le (premier) lieu de départ
for (Lieu l : territoire.lieux) { for (Lieu l : territoire.lieux.values()) {
if (l.depart.evaluer()) { if (l.depart.evaluer()) {
lieu = l; lieu = l;
break; break;
@ -50,32 +53,28 @@ public class Jeu {
List<Object> choix = new ArrayList<>(); List<Object> choix = new ArrayList<>();
clearScreen(); clearScreen();
System.out.println("Lieu actuel: " + lieu + "\n"); if (lieu.deposable.evaluer()) {
System.out.println("Explorateur:\n" + Jeu.explorateur + "\n"); System.out.println("[" + choix.size() + "] déposer/ramasser");
System.out.println("-".repeat(50)); choix.add(lieu);
}
for (Personne p : lieu.personnes) { for (Personne p : lieu.personnes) {
if (p.visible.evaluer() && p.obligatoire.evaluer() || p == personne) { if (p.visible.evaluer() && p.obligatoire.evaluer()) {
System.out.println(p + ":"); System.out.println(p + ":");
p.interragir(reader);
p.interragir(reader, lieu);
personne = null;
continue mainloop; continue mainloop;
} else if (lieu.personnes.contains(p) && p.visible.evaluer()) {
System.out.println("[" + choix.size() + "] " + p);
choix.add(p);
} }
} }
for (Chemin c : territoire.chemins) { for (Chemin c : territoire.chemins.values()) {
if (c.lieuIn == lieu) { if (c.lieuIn == lieu) {
if (c.visible.evaluer() && c.obligatoire.evaluer() && c.ouvert.evaluer()) { if (c.visible.evaluer() && c.obligatoire.evaluer() && c.ouvert.evaluer()) {
lieu = c.lieuOut; lieu = c.lieuOut;
continue mainloop; continue mainloop;
} } else if (c.visible.evaluer()) {
}
}
for (Chemin c : territoire.chemins) {
if (c.lieuIn == lieu) {
if (c.visible.evaluer()) {
if (c.ouvert.evaluer()) { if (c.ouvert.evaluer()) {
System.out.println("[" + choix.size() + "] " + c); System.out.println("[" + choix.size() + "] " + c);
choix.add(c); choix.add(c);
@ -86,24 +85,17 @@ public class Jeu {
} }
} }
for (Personne p : personnes) {
if (lieu.personnes.contains(p)) {
if (p.visible.evaluer()) {
System.out.println("[" + choix.size() + "] " + p);
choix.add(p);
}
}
}
try { try {
System.out.print("\nChoix : "); System.out.print("\nChoix : ");
selection = Integer.parseInt(reader.readLine()); selection = Integer.parseInt(reader.readLine());
Object choix_selection = choix.get(selection); Object choix_selection = choix.get(selection);
if (choix_selection instanceof Chemin) { if (choix_selection instanceof Lieu) {
((Lieu) choix_selection).interragir(reader);
} else if (choix_selection instanceof Chemin) {
lieu = ((Chemin) choix_selection).emprunter(); lieu = ((Chemin) choix_selection).emprunter();
} else if (choix_selection instanceof Personne) { } else if (choix_selection instanceof Personne) {
personne = (Personne) choix_selection; ((Personne) choix_selection).interragir(reader);
} else { } else {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@ -116,7 +108,3 @@ public class Jeu {
System.out.println("FIN : " + lieu.nom); System.out.println("FIN : " + lieu.nom);
} }
} }
// TODO: faire le truc des dépots dans les lieux
// TODO: arreter de créer pleins d'objets et créer des objets anonymes que l'on
// place dans une hashmap avec son nom ?

View file

@ -1,3 +1,5 @@
import java.io.BufferedReader;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class Lieu { public class Lieu {
@ -34,8 +36,39 @@ public class Lieu {
return nom; return nom;
} }
public static Lieu search(List<Lieu> list, String name) { public void interragir(BufferedReader reader) {
return list.stream().filter(o -> o.nom.equals(name)).findFirst() while (true) {
.orElseThrow(() -> new IllegalArgumentException("No data found"));
Jeu.clearScreen();
List<Objet> actions_choix = new ArrayList<>();
for (Objet o : this.objets) {
System.out.println("[" + actions_choix.size() + "] Ramasser " + o);
actions_choix.add(o);
}
for (Objet o : Jeu.explorateur.objets) {
System.out.println("[" + actions_choix.size() + "] Déposer " + o);
actions_choix.add(o);
}
System.out.print("\nChoix : ");
int choix = 0;
Objet obj = null;
try {
choix = Integer.parseInt(reader.readLine());
obj = actions_choix.get(choix);
} catch (Exception e) {
continue;
}
if (choix < this.objets.size()) {
Jeu.explorateur.objets.add(obj);
this.objets.remove(obj);
break;
} else if (choix < actions_choix.size()) {
this.objets.add(obj);
Jeu.explorateur.objets.remove(obj);
break;
}
}
} }
} }

View file

@ -27,9 +27,4 @@ public class Objet {
return "(no description)"; return "(no description)";
} }
public static Objet search(List<Objet> list, String name) {
return list.stream().filter(o -> o.nom.equals(name)).findFirst()
.orElseThrow(() -> new IllegalArgumentException("No data found"));
}
} }

View file

@ -1,8 +1,4 @@
import java.util.List; import java.util.List;
import javax.print.attribute.standard.PresentationDirection;
import java.io.InputStreamReader;
import java.io.BufferedReader; import java.io.BufferedReader;
public class Personne { public class Personne {
@ -22,10 +18,13 @@ public class Personne {
this.interactions = interactions; this.interactions = interactions;
} }
void interragir(BufferedReader reader, Lieu lieu) { void interragir(BufferedReader reader) {
Jeu.clearScreen();
System.out.println(this);
for (Interaction i : this.interactions) { for (Interaction i : this.interactions) {
if (i.visible.evaluer()) { if (i.visible.evaluer()) {
i.interragir(reader, lieu); i.interragir(reader);
} }
break; break;
} }
@ -35,9 +34,4 @@ public class Personne {
public String toString() { public String toString() {
return nom; return nom;
} }
public static Personne search(List<Personne> list, String name) {
return list.stream().filter(o -> o.nom.equals(name)).findFirst()
.orElseThrow(() -> new IllegalArgumentException("No data found"));
}
} }

View file

@ -1,8 +1,5 @@
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Map; import java.util.Map;
import static java.util.Map.entry; import static java.util.Map.entry;
@ -19,33 +16,48 @@ Map<String, Objet> jeu_objets = Map.ofEntries(
new Condition( new Condition(
List.of( List.of(
List.of( List.of(
new ConditionBoolean(true) new ConditionBoolean(
, true
new ConditionBoolean(true)
,
new ConditionBoolean(true)
),
new ConditionBoolean(
true
),
new ConditionBoolean(
true
)
), ),
List.of( List.of(
new ConditionBoolean(true) new ConditionBoolean(
, true
new ConditionBoolean(false)
),
new ConditionBoolean(
false
)
), ),
List.of( List.of(
new ConditionBoolean(false) new ConditionBoolean(
false
)
) )
) )
), ),
List.of( List.of(
new Description( new Description(
"Description1",
"warpToken description", "warpToken description",
new Condition( new Condition(
List.of( List.of(
List.of( List.of(
new ConditionBoolean(true) new ConditionBoolean(
true
)
) )
) )
) )
@ -61,19 +73,24 @@ Map<String, Objet> jeu_objets = Map.ofEntries(
new Condition( new Condition(
List.of( List.of(
List.of( List.of(
new ConditionBoolean(true) new ConditionBoolean(
true
)
) )
) )
), ),
List.of( List.of(
new Description( new Description(
"Description1",
"warpTicket description", "warpTicket description",
new Condition( new Condition(
List.of( List.of(
List.of( List.of(
new ConditionBoolean(true) new ConditionBoolean(
true
)
) )
) )
) )
@ -89,19 +106,24 @@ Map<String, Objet> jeu_objets = Map.ofEntries(
new Condition( new Condition(
List.of( List.of(
List.of( List.of(
new ConditionBoolean(true) new ConditionBoolean(
true
)
) )
) )
), ),
List.of( List.of(
new Description( new Description(
"Description1",
"warpReceipt description", "warpReceipt description",
new Condition( new Condition(
List.of( List.of(
List.of( List.of(
new ConditionBoolean(true) new ConditionBoolean(
true
)
) )
) )
) )
@ -112,215 +134,504 @@ Map<String, Objet> jeu_objets = Map.ofEntries(
); );
// "Connaissances" // "Connaissances"
Map<String, Objet> jeu_objets = Map.ofEntries( Map<String, Connaissance> jeu_connaissances = Map.ofEntries(
Map<String, Objet> jeu_objets = Map.ofEntries(
); );
// "Transformations" // "Transformations"
Map<String, Transformation> jeu_transformations = Map.ofEntries(
List<Transformation> jeu_transformations = new ArrayList<>(); );
// "Explorateur" // "Explorateur"
List<Objet> explorateur_inventaire = new ArrayList<>();
explorateur_inventaire.addAll(
List.of(
jeu_objets.get("warpToken")
)
);
List<Connaissance> explorateur_connaissances = new ArrayList<>();
Jeu.explorateur = new Explorateur( Jeu.explorateur = new Explorateur(
5, 5,
explorateur_connaissances, new ArrayList<>(List.of(
explorateur_inventaire )),
new ArrayList<>(List.of(
jeu_objets.get("warpTicket")
))
); );
// "Personnes" // "Personnes"
Map<String, Personne> jeu_personnes = Map.ofEntries(
List<Personne> jeu_personnes = new ArrayList<>(); entry(
List<Interaction> personne_cashier_1_interactions = new ArrayList<>();
List<Action> personne_cashier_1_interaction_1_actions = new ArrayList<>();
List<Connaissance> personne_cashier_1_interaction_1_action_1_connaissances = new ArrayList<>();
List<Objet> personne_cashier_1_interaction_1_action_1_objets_conso = new ArrayList<>();
personne_cashier_1_interaction_1_action_1_objets_conso.add(objet_warpTicket);
List<Objet> personne_cashier_1_interaction_1_action_1_objets_recus = new ArrayList<>();
personne_cashier_1_interaction_1_action_1_objets_recus.add(objet_warpToken);
personne_cashier_1_interaction_1_action_1_objets_recus.add(objet_warpReceipt);
personne_cashier_1_interaction_1_actions.add(
new Action(
personne_cashier_1_interaction_1_action_visible_1_condition,
personne_cashier_1_interaction_1_action_fin_1_condition,
personne_cashier_1_interaction_1_action_1_connaissances,
personne_cashier_1_interaction_1_action_1_objets_recus,
personne_cashier_1_interaction_1_action_1_objets_conso,
personne_cashier_1_interaction_1_action_1_descriptions
)
);
List<Connaissance> personne_cashier_1_interaction_1_action_2_connaissances = new ArrayList<>();
List<Objet> personne_cashier_1_interaction_1_action_2_objets_conso = new ArrayList<>();
List<Objet> personne_cashier_1_interaction_1_action_2_objets_recus = new ArrayList<>();
personne_cashier_1_interaction_1_actions.add(
new Action(
personne_cashier_1_interaction_1_action_visible_2_condition,
personne_cashier_1_interaction_1_action_fin_2_condition,
personne_cashier_1_interaction_1_action_2_connaissances,
personne_cashier_1_interaction_1_action_2_objets_recus,
personne_cashier_1_interaction_1_action_2_objets_conso,
personne_cashier_1_interaction_1_action_2_descriptions
)
);
List<Connaissance> personne_cashier_1_interaction_1_connaissances = new ArrayList<>();
List<Objet> personne_cashier_1_interaction_1_objets_conso = new ArrayList<>();
List<Objet> personne_cashier_1_interaction_1_objets_recus = new ArrayList<>();
personne_cashier_1_interactions.add(
new Interaction(
personne_cashier_1_interaction_visible_1_condition,
personne_cashier_1_interaction_1_connaissances,
personne_cashier_1_interaction_1_objets_conso,
personne_cashier_1_interaction_1_objets_recus,
personne_cashier_1_interaction_1_actions
)
);
Personne personne_cashier = new Personne(
"cashier", "cashier",
personne_visible_cashier_1_condition, new Personne(
personne_obligatoire_cashier_1_condition, "cashier",
personne_cashier_1_interactions new Condition(
); List.of(
List.of(
new ConditionBoolean(
true
jeu_personnes.add(personne_cashier); )
)
)
),
new Condition(
List.of(
List.of(
new ConditionBoolean(
false
)
)
)
),
List.of(
new Interaction(
"Parler",
new Condition(
List.of(
List.of(
new ConditionBoolean(
true
)
)
)
),
new ArrayList<>(List.of(
)),
new ArrayList<>(List.of(
)), // TODO: inverser recu et conso
new ArrayList<>(List.of(
)),
List.of(
new Action(
"Acheter",
new Condition(
List.of(
List.of(
new ConditionObjet(
jeu_objets.get("warpTicket"),
"==",
1
)
)
)
),
new Condition(
List.of(
List.of(
new ConditionBoolean(
true
)
)
)
),
new ArrayList<>(List.of(
)),
new ArrayList<>(List.of(
jeu_objets.get("warpToken"),
jeu_objets.get("warpReceipt")
)),
new ArrayList<>(List.of(
jeu_objets.get("warpTicket")
)),
List.of(
new Description(
"Description1",
"Acheter un ticket",
new Condition(
List.of(
List.of(
new ConditionBoolean(
true
)
)
)
)
)
)
),
new Action(
"Quitter",
new Condition(
List.of(
List.of(
new ConditionBoolean(
true
)
)
)
),
new Condition(
List.of(
List.of(
new ConditionBoolean(
true
)
)
)
),
new ArrayList<>(List.of(
)),
new ArrayList<>(List.of(
)),
new ArrayList<>(List.of(
)),
List.of(
new Description(
"Description1",
"Quitter",
new Condition(
List.of(
List.of(
new ConditionBoolean(
true
)
)
)
)
)
)
)
)
)
)
)
)
);
// "Lieux" // "Lieux"
Map<String, Lieu> territoire_lieux = Map.ofEntries(
List<Lieu> territoire_lieux = new ArrayList<>(); entry(
List<Personne> lieu_preWarp_1_personnes = new ArrayList<>();
lieu_preWarp_1_personnes.add(personne_cashier);
List<Objet> lieu_preWarp_1_objets = new ArrayList<>();
List<Connaissance> lieu_preWarp_1_connaissances = new ArrayList<>();
// TODO: utiliser un search dans la liste plutot que de déclarer les objets
Lieu lieu_preWarp = new Lieu(
"preWarp", "preWarp",
lieu_deposable_1_condition, new Lieu(
lieu_depart_1_condition, "preWarp",
lieu_fin_1_condition, new Condition(
lieu_preWarp_1_personnes, List.of(
lieu_preWarp_1_descriptions, List.of(
lieu_preWarp_1_objets, new ConditionBoolean(
lieu_preWarp_1_connaissances false
);
territoire_lieux.add(lieu_preWarp); )
)
)
),
new Condition(
List.of(
List.of(
new ConditionBoolean(
true
List<Personne> lieu_postWarp_2_personnes = new ArrayList<>(); )
List<Objet> lieu_postWarp_2_objets = new ArrayList<>(); )
List<Connaissance> lieu_postWarp_2_connaissances = new ArrayList<>(); )
),
new Condition(
List.of(
List.of(
new ConditionBoolean(
false
// TODO: utiliser un search dans la liste plutot que de déclarer les objets )
Lieu lieu_postWarp = new Lieu( )
)
),
List.of(
jeu_personnes.get("cashier")
),
List.of(
new Description(
"Description1",
"preWarp description",
new Condition(
List.of(
List.of(
new ConditionBoolean(
true
)
)
)
)
)
),
new ArrayList<>(List.of(
)),
List.of(
)
)
),
entry(
"postWarp", "postWarp",
lieu_deposable_2_condition, new Lieu(
lieu_depart_2_condition, "postWarp",
lieu_fin_2_condition, new Condition(
lieu_postWarp_2_personnes, List.of(
lieu_postWarp_2_descriptions, List.of(
lieu_postWarp_2_objets, new ConditionBoolean(
lieu_postWarp_2_connaissances true
);
territoire_lieux.add(lieu_postWarp); )
)
)
),
new Condition(
List.of(
List.of(
new ConditionBoolean(
false
List<Personne> lieu_END_3_personnes = new ArrayList<>(); )
List<Objet> lieu_END_3_objets = new ArrayList<>(); )
List<Connaissance> lieu_END_3_connaissances = new ArrayList<>(); )
),
new Condition(
List.of(
List.of(
new ConditionBoolean(
false
// TODO: utiliser un search dans la liste plutot que de déclarer les objets )
Lieu lieu_END = new Lieu( )
)
),
List.of(
),
List.of(
new Description(
"Description1",
"postWarp description",
new Condition(
List.of(
List.of(
new ConditionBoolean(
true
)
)
)
)
)
),
new ArrayList<>(List.of(
)),
List.of(
)
)
),
entry(
"END", "END",
lieu_deposable_3_condition, new Lieu(
lieu_depart_3_condition, "END",
lieu_fin_3_condition, new Condition(
lieu_END_3_personnes, List.of(
lieu_END_3_descriptions, List.of(
lieu_END_3_objets, new ConditionBoolean(
lieu_END_3_connaissances false
);
territoire_lieux.add(lieu_END); )
)
)
),
new Condition(
List.of(
List.of(
new ConditionBoolean(
false
)
)
)
),
new Condition(
List.of(
List.of(
new ConditionBoolean(
true
)
)
)
),
List.of(
),
List.of(
new Description(
"Description1",
"END description",
new Condition(
List.of(
List.of(
new ConditionBoolean(
true
)
)
)
)
)
),
new ArrayList<>(List.of(
)),
List.of(
)
)
)
);
// "Chemins" // "Chemins"
Map<String, Chemin> territoire_chemins = Map.ofEntries(
List<Chemin> territoire_chemins = new ArrayList<>(); entry(
List<Connaissance> chemin_Warp_1_connaissances = new ArrayList<>();
List<Objet> chemin_Warp_1_objets_recus = new ArrayList<>();
List<Objet> chemin_Warp_1_objets_conso = new ArrayList<>();
chemin_Warp_1_objets_conso.add(objet_warpToken);
Chemin chemins_Warp = new Chemin(
"Warp", "Warp",
lieu_preWarp, new Chemin(
lieu_postWarp, "Warp",
chemin_ouvert_Warp_1_condition, territoire_lieux.get("preWarp"),
chemin_visible_Warp_1_condition, territoire_lieux.get("postWarp"),
chemin_obligatoire_Warp_1_condition, new Condition(
chemin_Warp_1_connaissances, List.of(
chemin_Warp_1_objets_recus, List.of(
chemin_Warp_1_objets_conso, new ConditionObjet(
chemin_Warp_1_descriptions jeu_objets.get("warpToken"),
); ">",
0
)
)
)
),
new Condition(
List.of(
List.of(
new ConditionBoolean(
true
territoire_chemins.add(chemins_Warp); )
)
)
),
new Condition(
List.of(
List.of(
new ConditionBoolean(
false
List<Connaissance> chemin_EndChemin_2_connaissances = new ArrayList<>(); )
List<Objet> chemin_EndChemin_2_objets_recus = new ArrayList<>(); )
List<Objet> chemin_EndChemin_2_objets_conso = new ArrayList<>(); )
),
Chemin chemins_EndChemin = new Chemin( List.of(
),
List.of(
),
List.of(
jeu_objets.get("warpToken")
),
List.of(
new Description(
"DescriptionToken",
"Warp description (need token)",
new Condition(
List.of(
List.of(
new ConditionObjet(
jeu_objets.get("warpToken"),
"==",
0
)
)
)
)
),
new Description(
"DescriptionNoToken",
"Warp description (token acquired)",
new Condition(
List.of(
List.of(
new ConditionObjet(
jeu_objets.get("warpToken"),
"==",
1
)
)
)
)
)
)
)
),
entry(
"EndChemin", "EndChemin",
lieu_postWarp, new Chemin(
lieu_END, "EndChemin",
chemin_ouvert_EndChemin_2_condition, territoire_lieux.get("postWarp"),
chemin_visible_EndChemin_2_condition, territoire_lieux.get("END"),
chemin_obligatoire_EndChemin_2_condition, new Condition(
chemin_EndChemin_2_connaissances, List.of(
chemin_EndChemin_2_objets_recus, List.of(
chemin_EndChemin_2_objets_conso, new ConditionBoolean(
chemin_EndChemin_2_descriptions true
);
territoire_chemins.add(chemins_EndChemin); )
)
)
),
new Condition(
List.of(
List.of(
new ConditionBoolean(
true
Territoire jeu_territoire = new Territoire(territoire_lieux, territoire_chemins); )
)
)
),
new Condition(
List.of(
List.of(
new ConditionBoolean(
false
Jeu ze_GAME = new Jeu( )
jeu_territoire, )
jeu_objets, )
jeu_connaissances, ),
jeu_personnes, List.of(
jeu_transformations ),
); List.of(
),
List.of(
),
List.of(
new Description(
"DescriptionToken",
"END description",
new Condition(
List.of(
List.of(
new ConditionBoolean(
true
ze_GAME.jouer(); )
)
)
)
)
)
)
)
);
// Territoire
Territoire jeu_territoire = new Territoire(territoire_lieux, territoire_chemins);
// Jeu
Jeu ze_GAME = new Jeu(
jeu_territoire,
jeu_objets,
jeu_connaissances,
jeu_personnes,
jeu_transformations
);
ze_GAME.jouer();
} }
} }

View file

@ -1,12 +1,12 @@
import java.util.List; import java.util.Map;
public class Territoire { public class Territoire {
List<Lieu> lieux; Map<String, Lieu> lieux;
List<Chemin> chemins; Map<String, Chemin> chemins;
public Territoire( public Territoire(
List<Lieu> lieux, Map<String, Lieu> lieux,
List<Chemin> chemins) { Map<String, Chemin> chemins) {
this.lieux = lieux; this.lieux = lieux;
this.chemins = chemins; this.chemins = chemins;
} }

View file

@ -1 +0,0 @@
/fr/

View file

@ -6,9 +6,6 @@
[file ('Prototype.java', false, 'UTF-8')] [file ('Prototype.java', false, 'UTF-8')]
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Map; import java.util.Map;
import static java.util.Map.entry; import static java.util.Map.entry;
@ -57,12 +54,12 @@ Map<String, Transformation> jeu_transformations = Map.ofEntries(
[print_condition(t.condition)/], [print_condition(t.condition)/],
List.of( List.of(
[for (o : Objet | t.objetsIn)] [for (o : Objet | t.objetsIn)]
jeu_connaissances.get("[o.name/]")[if (i <> t.objetsIn->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> t.objetsIn->size())],[/if]
[/for] [/for]
), ),
List.of( List.of(
[for (o : Objet | t.objetsOut)] [for (o : Objet | t.objetsOut)]
jeu_connaissances.get("[o.name/]")[if (i <> t.objetsOut->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> t.objetsOut->size())],[/if]
[/for] [/for]
) )
) )
@ -74,16 +71,16 @@ Map<String, Transformation> jeu_transformations = Map.ofEntries(
// "Explorateur" // "Explorateur"
Jeu.explorateur = new Explorateur( Jeu.explorateur = new Explorateur(
[jeu.explorateur.tailleInventaire/], [jeu.explorateur.tailleInventaire/],
List.of( new ArrayList<>(List.of(
[for (c : Connaissance | jeu.explorateur.connaissances)] [for (c : Connaissance | jeu.explorateur.connaissances)]
jeu_connaissances.get("[c.name/]")[if (i <> jeu.explorateur.connaissances->size())],[/if] jeu_connaissances.get("[c.name/]")[if (i <> jeu.explorateur.connaissances->size())],[/if]
[/for] [/for]
), )),
List.of( new ArrayList<>(List.of(
[for (o : Objet | jeu.explorateur.objets)] [for (o : Objet | jeu.explorateur.objets)]
jeu_objets.get("[o.name/]")[if (i <> jeu.explorateur.objets->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> jeu.explorateur.objets->size())],[/if]
[/for] [/for]
) ))
); );
[comment Personnes /] [comment Personnes /]
@ -119,14 +116,14 @@ Map<String, Lieu> territoire_lieux = Map.ofEntries(
[/for] [/for]
), ),
[print_descriptions(l.descriptions)/], [print_descriptions(l.descriptions)/],
List.of( new ArrayList<>(List.of(
[for (o : Objet | l.objets)] [for (o : Objet | l.objets)]
jeu_personnes.get("[o.name/]")[if (i <> l.objets->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> l.objets->size())],[/if]
[/for] [/for]
), )),
List.of( List.of(
[for (c : Connaissance | l.connaissances)] [for (c : Connaissance | l.connaissances)]
jeu_personnes.get("[c.name/]")[if (i <> l.connaissances->size())],[/if] jeu_connaissances.get("[c.name/]")[if (i <> l.connaissances->size())],[/if]
[/for] [/for]
) )
) )
@ -136,7 +133,6 @@ Map<String, Lieu> territoire_lieux = Map.ofEntries(
[comment Chemins /] [comment Chemins /]
// "Chemins" // "Chemins"
Map<String, Chemin> territoire_chemins = Map.ofEntries( Map<String, Chemin> territoire_chemins = Map.ofEntries(
[for (c : Chemin | jeu.territoire.chemins)] [for (c : Chemin | jeu.territoire.chemins)]
entry( entry(
@ -144,7 +140,7 @@ Map<String, Chemin> territoire_chemins = Map.ofEntries(
new Chemin( new Chemin(
"[c.name/]", "[c.name/]",
territoire_lieux.get("[c.lieuIn.name/]"), territoire_lieux.get("[c.lieuIn.name/]"),
territoire_lieux.get("[c.lieuOut.name/]") territoire_lieux.get("[c.lieuOut.name/]"),
[print_condition(c.ouvert)/], [print_condition(c.ouvert)/],
[print_condition(c.visible)/], [print_condition(c.visible)/],
[print_condition(c.obligatoire)/], [print_condition(c.obligatoire)/],
@ -155,17 +151,17 @@ Map<String, Chemin> territoire_chemins = Map.ofEntries(
), ),
List.of( List.of(
[for (o : Objet | c.objetsRecus)] [for (o : Objet | c.objetsRecus)]
jeu_personnes.get("[o.name/]")[if (i <> c.objetsRecus->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> c.objetsRecus->size())],[/if]
[/for] [/for]
), ),
List.of( List.of(
[for (o : Objet | c.objetsConso)] [for (o : Objet | c.objetsConso)]
jeu_personnes.get("[o.name/]")[if (i <> c.objetsConso->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> c.objetsConso->size())],[/if]
[/for] [/for]
), ),
[print_descriptions(c.descriptions)/] [print_descriptions(c.descriptions)/]
) )
)[if (i <> jeu.territoire.lieux->size())],[/if] )[if (i <> jeu.territoire.chemins->size())],[/if]
[/for] [/for]
); );
@ -196,26 +192,28 @@ new Condition(
[for (cET : ConditionEt | c.condition)] [for (cET : ConditionEt | c.condition)]
List.of( List.of(
[for (cTEST : ConditionTest | cET.conditionTest)] [for (cTEST : ConditionTest | cET.conditionTest)]
[if (cTEST.oclIsKindOf(ConditionBoolean))] [if (cTEST.oclIsKindOf(ConditionBoolean))]
[let cBOOL : ConditionBoolean = cTEST.oclAsType(ConditionBoolean)] [let cBOOL : ConditionBoolean = cTEST.oclAsType(ConditionBoolean)]
new ConditionBoolean([cBOOL.valeur/]) new ConditionBoolean(
[/let] [cBOOL.valeur/]
[elseif (cTEST.oclIsKindOf(ConditionConnaissance))] [/let]
[let cCONN : ConditionConnaissance = cTEST.oclAsType(ConditionConnaissance)]
new ConditionConnaissance( [elseif (cTEST.oclIsKindOf(ConditionConnaissance))]
connaissance_[cCONN.connaissance.name/], [let cCONN : ConditionConnaissance = cTEST.oclAsType(ConditionConnaissance)]
[if (cCONN.negation = '!')]true[else]false[/if] new ConditionConnaissance(
) jeu_connaissances.get("[cCONN.connaissance.name/]"),
[/let] [if (cCONN.negation = '!')]true[else]false[/if]
[elseif (cTEST.oclIsKindOf(ConditionObjet))] [/let]
[let cOBJET : ConditionObjet = cTEST.oclAsType(ConditionObjet)]
new ConditionObjet( [elseif (cTEST.oclIsKindOf(ConditionObjet))]
objet_[cOBJET.objet.name/], [let cOBJET : ConditionObjet = cTEST.oclAsType(ConditionObjet)]
"[cOBJET.comparateur/]", new ConditionObjet(
[cOBJET.nombre/] jeu_objets.get("[cOBJET.objet.name/]"),
) "[cOBJET.comparateur/]",
[/let] [cOBJET.nombre/]
[/if][if (i < cET.conditionTest->size())],[/if] [/let]
[/if]
)[if (i < cET.conditionTest->size())],[/if]
[/for] [/for]
)[if (i < c.condition->size())],[/if] )[if (i < c.condition->size())],[/if]
[/for] [/for]
@ -227,7 +225,7 @@ new Condition(
List.of( List.of(
[for (d : Description | ds)] [for (d : Description | ds)]
new Description( new Description(
"[d.name/]" "[d.name/]",
"[d.texte/]", "[d.texte/]",
[print_condition(d.condition)/] [print_condition(d.condition)/]
)[if (i < ds->size())],[/if] )[if (i < ds->size())],[/if]
@ -239,23 +237,25 @@ List.of(
List.of( List.of(
[for (a : Action | as)] [for (a : Action | as)]
new Action( new Action(
"[a.name/]",
[print_condition(a.visible)/], [print_condition(a.visible)/],
[print_condition(a.finInteraction)/], [print_condition(a.finInteraction)/],
List.of( new ArrayList<>(List.of(
[for (co : Connaissance | a.connaissances)] [for (co : Connaissance | a.connaissances)]
jeu_connaissances.get("[co.name/]")[if (i <> a.connaissances->size())],[/if] jeu_connaissances.get("[co.name/]")[if (i <> a.connaissances->size())],[/if]
[/for] [/for]
), )),
List.of( new ArrayList<>(List.of(
[for (o : Objet | a.objetsRecus)] [for (o : Objet | a.objetsRecus)]
jeu_personnes.get("[o.name/]")[if (i <> a.objetsRecus->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> a.objetsRecus->size())],[/if]
[/for] [/for]
), )),
List.of( new ArrayList<>(List.of(
[for (o : Objet | a.objetsConso)] [for (o : Objet | a.objetsConso)]
jeu_personnes.get("[o.name/]")[if (i <> a.objetsConso->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> a.objetsConso->size())],[/if]
[/for] [/for]
), )),
[print_descriptions(a.descriptions)/]
)[if (i < as->size())],[/if] )[if (i < as->size())],[/if]
[/for] [/for]
) )
@ -265,23 +265,23 @@ List.of(
List.of( List.of(
[for (it : Interaction | is)] [for (it : Interaction | is)]
new Interaction( new Interaction(
"[it.name/]" "[it.name/]",
[print_condition(it.visible)/], [print_condition(it.visible)/],
List.of( new ArrayList<>(List.of(
[for (co : Connaissance | it.connaissances)] [for (co : Connaissance | it.connaissances)]
jeu_connaissances.get("[co.name/]")[if (i <> it.connaissances->size())],[/if] jeu_connaissances.get("[co.name/]")[if (i <> it.connaissances->size())],[/if]
[/for] [/for]
), )),
List.of( new ArrayList<>(List.of(
[for (o : Objet | it.objetsConso)] [for (o : Objet | it.objetsConso)]
jeu_personnes.get("[o.name/]")[if (i <> it.objetsConso->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> it.objetsConso->size())],[/if]
[/for] [/for]
), // TODO: inverser recu et conso )), // TODO: inverser recu et conso
List.of( new ArrayList<>(List.of(
[for (o : Objet | it.objetsRecus)] [for (o : Objet | it.objetsRecus)]
jeu_personnes.get("[o.name/]")[if (i <> it.objetsRecus->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> it.objetsRecus->size())],[/if]
[/for] [/for]
), )),
[print_actions(it.actions)/] [print_actions(it.actions)/]
)[if (i < is->size())],[/if] )[if (i < is->size())],[/if]
[/for] [/for]

View file

@ -6,9 +6,6 @@
[file ('Prototype.java', false, 'UTF-8')] [file ('Prototype.java', false, 'UTF-8')]
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Map; import java.util.Map;
import static java.util.Map.entry; import static java.util.Map.entry;
@ -57,12 +54,12 @@ Map<String, Transformation> jeu_transformations = Map.ofEntries(
[print_condition(t.condition)/], [print_condition(t.condition)/],
List.of( List.of(
[for (o : Objet | t.objetsIn)] [for (o : Objet | t.objetsIn)]
jeu_connaissances.get("[o.name/]")[if (i <> t.objetsIn->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> t.objetsIn->size())],[/if]
[/for] [/for]
), ),
List.of( List.of(
[for (o : Objet | t.objetsOut)] [for (o : Objet | t.objetsOut)]
jeu_connaissances.get("[o.name/]")[if (i <> t.objetsOut->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> t.objetsOut->size())],[/if]
[/for] [/for]
) )
) )
@ -74,16 +71,16 @@ Map<String, Transformation> jeu_transformations = Map.ofEntries(
// "Explorateur" // "Explorateur"
Jeu.explorateur = new Explorateur( Jeu.explorateur = new Explorateur(
[jeu.explorateur.tailleInventaire/], [jeu.explorateur.tailleInventaire/],
List.of( new ArrayList<>(List.of(
[for (c : Connaissance | jeu.explorateur.connaissances)] [for (c : Connaissance | jeu.explorateur.connaissances)]
jeu_connaissances.get("[c.name/]")[if (i <> jeu.explorateur.connaissances->size())],[/if] jeu_connaissances.get("[c.name/]")[if (i <> jeu.explorateur.connaissances->size())],[/if]
[/for] [/for]
), )),
List.of( new ArrayList<>(List.of(
[for (o : Objet | jeu.explorateur.objets)] [for (o : Objet | jeu.explorateur.objets)]
jeu_objets.get("[o.name/]")[if (i <> jeu.explorateur.objets->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> jeu.explorateur.objets->size())],[/if]
[/for] [/for]
) ))
); );
[comment Personnes /] [comment Personnes /]
@ -119,14 +116,14 @@ Map<String, Lieu> territoire_lieux = Map.ofEntries(
[/for] [/for]
), ),
[print_descriptions(l.descriptions)/], [print_descriptions(l.descriptions)/],
List.of( new ArrayList<>(List.of(
[for (o : Objet | l.objets)] [for (o : Objet | l.objets)]
jeu_personnes.get("[o.name/]")[if (i <> l.objets->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> l.objets->size())],[/if]
[/for] [/for]
), )),
List.of( List.of(
[for (c : Connaissance | l.connaissances)] [for (c : Connaissance | l.connaissances)]
jeu_personnes.get("[c.name/]")[if (i <> l.connaissances->size())],[/if] jeu_connaissances.get("[c.name/]")[if (i <> l.connaissances->size())],[/if]
[/for] [/for]
) )
) )
@ -136,7 +133,6 @@ Map<String, Lieu> territoire_lieux = Map.ofEntries(
[comment Chemins /] [comment Chemins /]
// "Chemins" // "Chemins"
Map<String, Chemin> territoire_chemins = Map.ofEntries( Map<String, Chemin> territoire_chemins = Map.ofEntries(
[for (c : Chemin | jeu.territoire.chemins)] [for (c : Chemin | jeu.territoire.chemins)]
entry( entry(
@ -144,7 +140,7 @@ Map<String, Chemin> territoire_chemins = Map.ofEntries(
new Chemin( new Chemin(
"[c.name/]", "[c.name/]",
territoire_lieux.get("[c.lieuIn.name/]"), territoire_lieux.get("[c.lieuIn.name/]"),
territoire_lieux.get("[c.lieuOut.name/]") territoire_lieux.get("[c.lieuOut.name/]"),
[print_condition(c.ouvert)/], [print_condition(c.ouvert)/],
[print_condition(c.visible)/], [print_condition(c.visible)/],
[print_condition(c.obligatoire)/], [print_condition(c.obligatoire)/],
@ -155,17 +151,17 @@ Map<String, Chemin> territoire_chemins = Map.ofEntries(
), ),
List.of( List.of(
[for (o : Objet | c.objetsRecus)] [for (o : Objet | c.objetsRecus)]
jeu_personnes.get("[o.name/]")[if (i <> c.objetsRecus->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> c.objetsRecus->size())],[/if]
[/for] [/for]
), ),
List.of( List.of(
[for (o : Objet | c.objetsConso)] [for (o : Objet | c.objetsConso)]
jeu_personnes.get("[o.name/]")[if (i <> c.objetsConso->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> c.objetsConso->size())],[/if]
[/for] [/for]
), ),
[print_descriptions(c.descriptions)/] [print_descriptions(c.descriptions)/]
) )
)[if (i <> jeu.territoire.lieux->size())],[/if] )[if (i <> jeu.territoire.chemins->size())],[/if]
[/for] [/for]
); );
@ -196,26 +192,28 @@ new Condition(
[for (cET : ConditionEt | c.condition)] [for (cET : ConditionEt | c.condition)]
List.of( List.of(
[for (cTEST : ConditionTest | cET.conditionTest)] [for (cTEST : ConditionTest | cET.conditionTest)]
[if (cTEST.oclIsKindOf(ConditionBoolean))] [if (cTEST.oclIsKindOf(ConditionBoolean))]
[let cBOOL : ConditionBoolean = cTEST.oclAsType(ConditionBoolean)] [let cBOOL : ConditionBoolean = cTEST.oclAsType(ConditionBoolean)]
new ConditionBoolean([cBOOL.valeur/]) new ConditionBoolean(
[/let] [cBOOL.valeur/]
[elseif (cTEST.oclIsKindOf(ConditionConnaissance))] [/let]
[let cCONN : ConditionConnaissance = cTEST.oclAsType(ConditionConnaissance)]
new ConditionConnaissance( [elseif (cTEST.oclIsKindOf(ConditionConnaissance))]
connaissance_[cCONN.connaissance.name/], [let cCONN : ConditionConnaissance = cTEST.oclAsType(ConditionConnaissance)]
[if (cCONN.negation = '!')]true[else]false[/if] new ConditionConnaissance(
) jeu_connaissances.get("[cCONN.connaissance.name/]"),
[/let] [if (cCONN.negation = '!')]true[else]false[/if]
[elseif (cTEST.oclIsKindOf(ConditionObjet))] [/let]
[let cOBJET : ConditionObjet = cTEST.oclAsType(ConditionObjet)]
new ConditionObjet( [elseif (cTEST.oclIsKindOf(ConditionObjet))]
objet_[cOBJET.objet.name/], [let cOBJET : ConditionObjet = cTEST.oclAsType(ConditionObjet)]
"[cOBJET.comparateur/]", new ConditionObjet(
[cOBJET.nombre/] jeu_objets.get("[cOBJET.objet.name/]"),
) "[cOBJET.comparateur/]",
[/let] [cOBJET.nombre/]
[/if][if (i < cET.conditionTest->size())],[/if] [/let]
[/if]
)[if (i < cET.conditionTest->size())],[/if]
[/for] [/for]
)[if (i < c.condition->size())],[/if] )[if (i < c.condition->size())],[/if]
[/for] [/for]
@ -227,7 +225,7 @@ new Condition(
List.of( List.of(
[for (d : Description | ds)] [for (d : Description | ds)]
new Description( new Description(
"[d.name/]" "[d.name/]",
"[d.texte/]", "[d.texte/]",
[print_condition(d.condition)/] [print_condition(d.condition)/]
)[if (i < ds->size())],[/if] )[if (i < ds->size())],[/if]
@ -239,23 +237,25 @@ List.of(
List.of( List.of(
[for (a : Action | as)] [for (a : Action | as)]
new Action( new Action(
"[a.name/]",
[print_condition(a.visible)/], [print_condition(a.visible)/],
[print_condition(a.finInteraction)/], [print_condition(a.finInteraction)/],
List.of( new ArrayList<>(List.of(
[for (co : Connaissance | a.connaissances)] [for (co : Connaissance | a.connaissances)]
jeu_connaissances.get("[co.name/]")[if (i <> a.connaissances->size())],[/if] jeu_connaissances.get("[co.name/]")[if (i <> a.connaissances->size())],[/if]
[/for] [/for]
), )),
List.of( new ArrayList<>(List.of(
[for (o : Objet | a.objetsRecus)] [for (o : Objet | a.objetsRecus)]
jeu_personnes.get("[o.name/]")[if (i <> a.objetsRecus->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> a.objetsRecus->size())],[/if]
[/for] [/for]
), )),
List.of( new ArrayList<>(List.of(
[for (o : Objet | a.objetsConso)] [for (o : Objet | a.objetsConso)]
jeu_personnes.get("[o.name/]")[if (i <> a.objetsConso->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> a.objetsConso->size())],[/if]
[/for] [/for]
), )),
[print_descriptions(a.descriptions)/]
)[if (i < as->size())],[/if] )[if (i < as->size())],[/if]
[/for] [/for]
) )
@ -265,23 +265,23 @@ List.of(
List.of( List.of(
[for (it : Interaction | is)] [for (it : Interaction | is)]
new Interaction( new Interaction(
"[it.name/]" "[it.name/]",
[print_condition(it.visible)/], [print_condition(it.visible)/],
List.of( new ArrayList<>(List.of(
[for (co : Connaissance | it.connaissances)] [for (co : Connaissance | it.connaissances)]
jeu_connaissances.get("[co.name/]")[if (i <> it.connaissances->size())],[/if] jeu_connaissances.get("[co.name/]")[if (i <> it.connaissances->size())],[/if]
[/for] [/for]
), )),
List.of( new ArrayList<>(List.of(
[for (o : Objet | it.objetsConso)] [for (o : Objet | it.objetsConso)]
jeu_personnes.get("[o.name/]")[if (i <> it.objetsConso->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> it.objetsConso->size())],[/if]
[/for] [/for]
), // TODO: inverser recu et conso )), // TODO: inverser recu et conso
List.of( new ArrayList<>(List.of(
[for (o : Objet | it.objetsRecus)] [for (o : Objet | it.objetsRecus)]
jeu_personnes.get("[o.name/]")[if (i <> it.objetsRecus->size())],[/if] jeu_objets.get("[o.name/]")[if (i <> it.objetsRecus->size())],[/if]
[/for] [/for]
), )),
[print_actions(it.actions)/] [print_actions(it.actions)/]
)[if (i < is->size())],[/if] )[if (i < is->size())],[/if]
[/for] [/for]

View file

@ -1 +0,0 @@
/fr/