From e4e9f157bc1bea45191d8a790bb10679c4745988 Mon Sep 17 00:00:00 2001 From: Laurent Fainsin Date: Tue, 18 Jan 2022 19:49:37 +0100 Subject: [PATCH] avancement java --- docs/tina.png | Bin 0 -> 79639 bytes .../fr.n7.game.examples/enigmeLibre.game | 5 +- .../fr.n7.game.examples/src-gen/Action.java | 8 + .../fr.n7.game.examples/src-gen/Chemin.java | 9 +- .../src-gen/Condition.java | 18 +- .../src-gen/ConditionEt.java | 1 - .../src-gen/Connaissance.java | 9 +- .../src-gen/Description.java | 10 + .../src-gen/Interaction.java | 10 +- .../fr.n7.game.examples/src-gen/Jeu.java | 42 +- .../fr.n7.game.examples/src-gen/Lieu.java | 5 + .../fr.n7.game.examples/src-gen/Objet.java | 12 +- .../fr.n7.game.examples/src-gen/Personne.java | 8 + .../src-gen/Prototype.java | 829 +- .../src-gen/Prototype.java.bak | 666 ++ .../src-gen/Tamerelapute.java | 42 + .../src-gen/Transformation.java | 3 + .../fr.n7.game.examples/test2.game | 7 +- .../fr.n7.game.examples/test3.game | 140 + .../n7/game/toPrototype/main/toPrototype.emtl | 9910 +++++++---------- .../n7/game/toPrototype/main/toPrototype.mtl | 497 +- .../n7/game/toPrototype/main/toPrototype.mtl | 497 +- .../antlr/internal/InternalGame.g | 20 +- .../antlr/internal/InternalGameLexer.java | 102 +- .../antlr/internal/InternalGameParser.java | 72 +- .../xtext/tests/.GameParsingTest.xtendbin | Bin 3389 -> 3389 bytes .../AbstractGameProposalProvider.java | 4 +- .../model/generated/Game.ecore | 4 +- .../model/generated/Game.genmodel | 4 +- .../src-gen/fr/n7/game/xtext/Game.xtextbin | Bin 6854 -> 6890 bytes .../xtext/game/ConditionConnaissance.java | 14 +- .../fr/n7/game/xtext/game/ConditionObjet.java | 14 +- .../fr/n7/game/xtext/game/GamePackage.java | 24 +- .../game/impl/ConditionConnaissanceImpl.java | 53 +- .../xtext/game/impl/ConditionObjetImpl.java | 55 +- .../game/xtext/game/impl/GamePackageImpl.java | 16 +- .../parser/antlr/internal/InternalGame.g | 26 +- .../antlr/internal/InternalGameLexer.java | 102 +- .../antlr/internal/InternalGameParser.java | 88 +- .../serializer/GameSemanticSequencer.java | 6 +- .../xtext/services/GameGrammarAccess.java | 32 +- .../src/fr/n7/game/xtext/Game.xtext | 4 +- .../xtext/generator/.GameGenerator.xtendbin | Bin 2284 -> 2284 bytes 43 files changed, 5941 insertions(+), 7427 deletions(-) create mode 100644 docs/tina.png create mode 100644 runtime-workspace/fr.n7.game.examples/src-gen/Prototype.java.bak create mode 100644 runtime-workspace/fr.n7.game.examples/src-gen/Tamerelapute.java create mode 100644 runtime-workspace/fr.n7.game.examples/test3.game diff --git a/docs/tina.png b/docs/tina.png new file mode 100644 index 0000000000000000000000000000000000000000..c9519f7b4e8cdb33f8fb452c76185866548872f5 GIT binary patch literal 79639 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%0DavRsi95!J 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

$~l zN_Y1DBFEhw)~WCmN z#|8Q}&9^K;M|;}V7k|B81YU=d;Dv4f>m5R@KYeb^|+)xopr zp_VxhX@^P~sWF{G#yczzVs`k(M}B@{?C6fifgjKOfNBag1j&YZfT@i)?gBf0EVskr z3ZM;_0Y?V^Se%Q-|!s(wwFBc;B>$iDt%E|{0`x{ z>&66o7hf=I72r z!g6MK>0?QC1y@zQ5G4q2F_|F?w#}$fNW6_q;8~G;8w8T#SxpVL3ZwlbS zl&b6@U7ael?5bL3UiKz-Kjj#GcG12ic{CrTps!OUEs1v5SP*d z9(&d;TNqbvuX2V zCM&#ksc%cibP4*PUEbPoWA}sEmI3Mw-F(xW#N-yw8)gGEHT@5u&wd9cT zVk>FyK;Ysex!~hmj7LD`Gp4khorfdsT__l;=VZsA7uci8IJ?I(!-T4NHz;jb3EXAlzVw>}FAmdE7Pm-b1$HQ+!uhjUQy zKk*;Lw9#)_I8a3vbnpO5rw*=zF(34}X!z!?{GFH2I30RMzQW{T**F%lJ8>nH2*mvZ z=M}0D(auRz)XD;U{hZo`py2zNJN!FB;?840U%w2I^8KNqq0`y3;o)D8q-(s@V5vHSFl~-bQ?ID&MPXuU>mzQZ}eaGO_Imft9i+hq5bC=tyEW01AG= z*<|S;>fJW$e01M~pZwb}6qp{5-T$VWE7sg1MpR68cJ{s+8?|2_c5>zL^BcrRDA8(@ z>dT|LylB@V+(!Z2pn1YOm%iC_lWp$`k%3`ys8_Ri+T8v47Htmqt1tzMhfT>e9Ln)> zsS;Q5wdQ{$#oY~H-+#ckZq3d~_mPl9_+CE;9v=g<8D z0@HLwlb@n_rJoY%7c{+(+2ZK7lM4%`Bx~J|neU3$e_K2&zXBx*;vX#qzi%@TesENp zQRw`=p7Ld)7B6P5iEhwObQ2wUfko)yZ_o18pTBr$4pduuy3ugz-HR61=<_Nl@(|2wqqAe!9u@zd_sC$0vD$ zo^3k?Advn@lbgyNyw=v=@FjW4HdDM&0-D?epYGcB(NGSu;M~SR527`sDL+OWTIWuE z{pfg9Ki}##AYqL^pbD_0AqTZ*TZ_VnP?29fgt_SwIaK6|7+YxV#Cjw{tgvxl5}4t< znv@t{v6KXS!;n9>aRPDE@4TYiZ~U;u z7yJB?=R^|dT9X3aZ;tcAn1ETO&)z8Q^%W?^No$3*K7&$p<>~pLFTLAH5A-$2a&PXF z4b+I*&~8T9-!J|L_BR#wY}a3h*z1VEvQeyS>&)7O8LQBHZGY_j&pwpQ1}C|T%%PWX z^{)oei=Y2qSTIor3hhsrq!N8jKW=8<)6#()@Y~FZnK@KQ7V$-U_%ERPg=cxQ&8ze_ zHZ{2wnl`5-T_rxxXMuFHdJJV@Doe?_@1jkgP;M)&auY%=Z)X2D^yl+`hTZjnF@)k@ zzSUkIA4+3(8hQN~s-DVt{TQCuuSj0s_**p=xsO+oXFKq#c3@XG1a^hKY~DN;nO8Jz7&yFXb*~)p{`* zVQ51Z)z`H!Z-=4%1Q^;fI}Gie{i2fW%_eF%j5$n-d4LO*9aOHL1`Z+}rTDZYuFJlM zu?LbW>~5tzbwh{MH8hgJh^qew)Y_H-P-|)DB2MftdxMfz#`l4FrawrjZ7nfY^IJef;bmFu12*y^%>V!Z literal 0 HcmV?d00001 diff --git a/runtime-workspace/fr.n7.game.examples/enigmeLibre.game b/runtime-workspace/fr.n7.game.examples/enigmeLibre.game index 15fb4f3..daea201 100644 --- a/runtime-workspace/fr.n7.game.examples/enigmeLibre.game +++ b/runtime-workspace/fr.n7.game.examples/enigmeLibre.game @@ -59,6 +59,7 @@ Personnes: - Description1: texte: "la mauvaise reponse" condition: true + - Combattre: visible: true connaissances: @@ -74,7 +75,7 @@ Personnes: objets_conso: descriptions: - Description1: - texte: "la bonne reponse" + texte: "Se faire taper" condition: true - Action_2: @@ -86,7 +87,7 @@ Personnes: - tentative descriptions: - Description1: - texte: "la mauvaise reponse" + texte: "Fuir" condition: true Territoire: diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/Action.java b/runtime-workspace/fr.n7.game.examples/src-gen/Action.java index f456faf..4729abe 100644 --- a/runtime-workspace/fr.n7.game.examples/src-gen/Action.java +++ b/runtime-workspace/fr.n7.game.examples/src-gen/Action.java @@ -1,6 +1,7 @@ import java.util.List; public class Action { + String nom; Condition visible; List connaissances; List objetsRecus; @@ -9,12 +10,14 @@ public class Action { List descriptions; public Action( + String nom, Condition visible, Condition finInterraction, List connaissances, List objetsRecus, List objetsConso, List descriptions) { + this.nom = nom; this.visible = visible; this.connaissances = connaissances; this.objetsRecus = objetsRecus; @@ -46,4 +49,9 @@ public class Action { } return "No desc"; } + + public static Action search(List list, String name) { + return list.stream().filter(o -> o.nom.equals(name)).findFirst() + .orElseThrow(() -> new IllegalArgumentException("No data found")); + } } diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/Chemin.java b/runtime-workspace/fr.n7.game.examples/src-gen/Chemin.java index 1b960dc..15a6dbc 100644 --- a/runtime-workspace/fr.n7.game.examples/src-gen/Chemin.java +++ b/runtime-workspace/fr.n7.game.examples/src-gen/Chemin.java @@ -40,10 +40,10 @@ public class Chemin { public String toString() { for (Description d : descriptions) { if (d.condition.evaluer()) { - return d.toString(); + return this.nom + " (" + d + ")"; } } - return "No desc"; + return "(no description)"; } public Lieu emprunter() { @@ -60,4 +60,9 @@ public class Chemin { } return this.lieuOut; } + + public static Chemin search(List list, String name) { + return list.stream().filter(o -> o.nom.equals(name)).findFirst() + .orElseThrow(() -> new IllegalArgumentException("No data found")); + } } diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/Condition.java b/runtime-workspace/fr.n7.game.examples/src-gen/Condition.java index 7231129..aec4808 100644 --- a/runtime-workspace/fr.n7.game.examples/src-gen/Condition.java +++ b/runtime-workspace/fr.n7.game.examples/src-gen/Condition.java @@ -1,21 +1,19 @@ import java.util.List; -import java.util.ArrayList; public class Condition { - List conditionEts; + List> conditionsNormaleDisjonctive; - public Condition(List conditionEts) { - this.conditionEts = conditionEts; + public Condition(List> conditions) { + this.conditionsNormaleDisjonctive = conditions; } public Boolean evaluer() { - for (ConditionEt cond : conditionEts) { - if (cond.evaluer()) { - return true; - } - } - return false; + + return conditionsNormaleDisjonctive.stream() + .anyMatch( + conditionOU -> conditionOU.stream() + .allMatch(c -> c.evaluer())); } } diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/ConditionEt.java b/runtime-workspace/fr.n7.game.examples/src-gen/ConditionEt.java index 5458432..93165dd 100644 --- a/runtime-workspace/fr.n7.game.examples/src-gen/ConditionEt.java +++ b/runtime-workspace/fr.n7.game.examples/src-gen/ConditionEt.java @@ -1,5 +1,4 @@ import java.util.List; -import java.util.ArrayList; public class ConditionEt { diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/Connaissance.java b/runtime-workspace/fr.n7.game.examples/src-gen/Connaissance.java index 044e202..6092f5a 100644 --- a/runtime-workspace/fr.n7.game.examples/src-gen/Connaissance.java +++ b/runtime-workspace/fr.n7.game.examples/src-gen/Connaissance.java @@ -18,9 +18,14 @@ public class Connaissance { public String toString() { for (Description d : this.descriptions) { if (d.condition.evaluer()) { - return "(" + this.nom + " : " + d + ")"; + return this.nom + " (" + d + ")"; } } - return "(" + this.nom + ")"; + return "(no description)"; + } + + public static Connaissance search(List list, String name) { + return list.stream().filter(o -> o.nom.equals(name)).findFirst() + .orElseThrow(() -> new IllegalArgumentException("No data found")); } } diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/Description.java b/runtime-workspace/fr.n7.game.examples/src-gen/Description.java index adb783b..fe30c52 100644 --- a/runtime-workspace/fr.n7.game.examples/src-gen/Description.java +++ b/runtime-workspace/fr.n7.game.examples/src-gen/Description.java @@ -1,10 +1,15 @@ +import java.util.List; + public class Description { String texte; Condition condition; + String nom; public Description( + String nom, String texte, Condition condition) { + this.nom = nom; this.texte = texte; this.condition = condition; } @@ -13,4 +18,9 @@ public class Description { public String toString() { return this.texte; } + + public static Description search(List list, String name) { + return list.stream().filter(o -> o.nom.equals(name)).findFirst() + .orElseThrow(() -> new IllegalArgumentException("No data found")); + } } diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/Interaction.java b/runtime-workspace/fr.n7.game.examples/src-gen/Interaction.java index af17beb..14fb619 100644 --- a/runtime-workspace/fr.n7.game.examples/src-gen/Interaction.java +++ b/runtime-workspace/fr.n7.game.examples/src-gen/Interaction.java @@ -1,10 +1,9 @@ import java.util.List; import java.util.ArrayList; -import java.io.InputStreamReader; import java.io.BufferedReader; -import java.io.IOException; public class Interaction { + String nom; Condition visible; List connaissances; List objetsRecus; @@ -12,11 +11,13 @@ public class Interaction { 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; @@ -77,4 +78,9 @@ public class Interaction { } 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")); + } } diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/Jeu.java b/runtime-workspace/fr.n7.game.examples/src-gen/Jeu.java index 70d5170..6ae4d2d 100644 --- a/runtime-workspace/fr.n7.game.examples/src-gen/Jeu.java +++ b/runtime-workspace/fr.n7.game.examples/src-gen/Jeu.java @@ -1,6 +1,5 @@ import java.io.InputStreamReader; import java.io.BufferedReader; -import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -47,14 +46,17 @@ public class Jeu { // tant qu'on est pas sur un lieu de fin mainloop: while (!lieu.fin.evaluer()) { + int selection = 0; + List choix = new ArrayList<>(); clearScreen(); + System.out.println("Lieu actuel: " + lieu + "\n"); System.out.println("Explorateur:\n" + Jeu.explorateur + "\n"); System.out.println("-".repeat(50)); for (Personne p : lieu.personnes) { if (p.visible.evaluer() && p.obligatoire.evaluer() || p == personne) { - System.out.println(p + " :"); + System.out.println(p + ":"); p.interragir(reader, lieu); personne = null; @@ -71,39 +73,41 @@ public class Jeu { } } - int k = 0; - List chemins_choix = new ArrayList<>(); for (Chemin c : territoire.chemins) { if (c.lieuIn == lieu) { - if (c.visible.evaluer() && c.ouvert.evaluer()) { - chemins_choix.add(c); - System.out.println("[" + k + "] " + c); - k++; + if (c.visible.evaluer()) { + if (c.ouvert.evaluer()) { + System.out.println("[" + choix.size() + "] " + c); + choix.add(c); + } else { + System.out.println("[X] " + c); + } } } } - List personnes_choix = new ArrayList<>(); for (Personne p : personnes) { if (lieu.personnes.contains(p)) { if (p.visible.evaluer()) { - personnes_choix.add(p); - System.out.println("[" + k + "] " + p); - k++; + System.out.println("[" + choix.size() + "] " + p); + choix.add(p); } } } - int choix = 0; try { System.out.print("\nChoix : "); - choix = Integer.parseInt(reader.readLine()); + selection = Integer.parseInt(reader.readLine()); + Object choix_selection = choix.get(selection); - if (choix < chemins_choix.size()) { - lieu = chemins_choix.get(choix).emprunter(); + if (choix_selection instanceof Chemin) { + lieu = ((Chemin) choix_selection).emprunter(); + } else if (choix_selection instanceof Personne) { + personne = (Personne) choix_selection; } else { - personne = personnes_choix.get(choix - chemins_choix.size()); + throw new UnsupportedOperationException(); } + } catch (Exception e) { continue; } @@ -112,3 +116,7 @@ public class Jeu { 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 ? \ No newline at end of file diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/Lieu.java b/runtime-workspace/fr.n7.game.examples/src-gen/Lieu.java index 4be1123..8005dd1 100644 --- a/runtime-workspace/fr.n7.game.examples/src-gen/Lieu.java +++ b/runtime-workspace/fr.n7.game.examples/src-gen/Lieu.java @@ -33,4 +33,9 @@ public class Lieu { public String toString() { return nom; } + + public static Lieu search(List list, String name) { + return list.stream().filter(o -> o.nom.equals(name)).findFirst() + .orElseThrow(() -> new IllegalArgumentException("No data found")); + } } diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/Objet.java b/runtime-workspace/fr.n7.game.examples/src-gen/Objet.java index df7b075..6614fec 100644 --- a/runtime-workspace/fr.n7.game.examples/src-gen/Objet.java +++ b/runtime-workspace/fr.n7.game.examples/src-gen/Objet.java @@ -19,13 +19,17 @@ public class Objet { @Override public String toString() { - String str = null; for (Description d : this.descriptions) { if (d.condition.evaluer()) { - str = this.nom + "(" + d + ")"; - break; + return this.nom + " (" + d + ")"; } } - return str; + return "(no description)"; } + + public static Objet search(List list, String name) { + return list.stream().filter(o -> o.nom.equals(name)).findFirst() + .orElseThrow(() -> new IllegalArgumentException("No data found")); + } + } diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/Personne.java b/runtime-workspace/fr.n7.game.examples/src-gen/Personne.java index 3687b6e..d24dc30 100644 --- a/runtime-workspace/fr.n7.game.examples/src-gen/Personne.java +++ b/runtime-workspace/fr.n7.game.examples/src-gen/Personne.java @@ -1,4 +1,7 @@ import java.util.List; + +import javax.print.attribute.standard.PresentationDirection; + import java.io.InputStreamReader; import java.io.BufferedReader; @@ -32,4 +35,9 @@ public class Personne { public String toString() { return nom; } + + public static Personne search(List list, String name) { + return list.stream().filter(o -> o.nom.equals(name)).findFirst() + .orElseThrow(() -> new IllegalArgumentException("No data found")); + } } diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/Prototype.java b/runtime-workspace/fr.n7.game.examples/src-gen/Prototype.java index cdb107e..a77f738 100644 --- a/runtime-workspace/fr.n7.game.examples/src-gen/Prototype.java +++ b/runtime-workspace/fr.n7.game.examples/src-gen/Prototype.java @@ -3,98 +3,121 @@ import java.util.ArrayList; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; +import java.util.Map; +import static java.util.Map.entry; public class Prototype { public static void main(String[] args) { // "Objets" - -List jeu_objets = new ArrayList<>(); - - List objet_tentative_descriptions = new ArrayList<>(); - - List objet_tentative_description_1_conditions_ET_list = new ArrayList<>(); - - List objet_tentative_description_1_conditions_TEST_list = new ArrayList<>(); - - objet_tentative_description_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - objet_tentative_description_1_conditions_ET_list.add( - new ConditionEt(objet_tentative_description_1_conditions_TEST_list) - ); - - Condition objet_tentative_description_1_condition = new Condition(objet_tentative_description_1_conditions_ET_list); - - objet_tentative_descriptions.add( - new Description( - "permet repondre une question du sphinx", - objet_tentative_description_1_condition +Map jeu_objets = Map.ofEntries( + entry( + "warpToken", + new Objet( + "warpToken", + 1, + new Condition( + List.of( + List.of( + new ConditionBoolean(true) + , + new ConditionBoolean(true) + , + new ConditionBoolean(true) + + ), + List.of( + new ConditionBoolean(true) + , + new ConditionBoolean(false) + + ), + List.of( + new ConditionBoolean(false) + + ) + ) + ), + List.of( + new Description( + "warpToken description", + new Condition( + List.of( + List.of( + new ConditionBoolean(true) + + ) + ) + ) + ) ) - ); - List objet_visible_tentative_conditions_ET_list = new ArrayList<>(); - - List objet_visible_tentative_conditions_TEST_list = new ArrayList<>(); - - objet_visible_tentative_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - objet_visible_tentative_conditions_ET_list.add( - new ConditionEt(objet_visible_tentative_conditions_TEST_list) - ); - - Condition objet_visible_tentative_condition = new Condition(objet_visible_tentative_conditions_ET_list); - Objet objet_tentative = new Objet( - "tentative", - 1, - objet_visible_tentative_condition, - objet_tentative_descriptions - ); - jeu_objets.add(objet_tentative); + ) + ), + entry( + "warpTicket", + new Objet( + "warpTicket", + 1, + new Condition( + List.of( + List.of( + new ConditionBoolean(true) + + ) + ) + ), + List.of( + new Description( + "warpTicket description", + new Condition( + List.of( + List.of( + new ConditionBoolean(true) + + ) + ) + ) + ) + ) + ) + ), + entry( + "warpReceipt", + new Objet( + "warpReceipt", + 1, + new Condition( + List.of( + List.of( + new ConditionBoolean(true) + + ) + ) + ), + List.of( + new Description( + "warpReceipt description", + new Condition( + List.of( + List.of( + new ConditionBoolean(true) + + ) + ) + ) + ) + ) + ) + ) +); // "Connaissances" +Map jeu_objets = Map.ofEntries( -List jeu_connaissances = new ArrayList<>(); - List connaissance_Reussite_descriptions = new ArrayList<>(); - - List connaissance_Reussite_description_1_conditions_ET_list = new ArrayList<>(); - - List connaissance_Reussite_description_1_conditions_TEST_list = new ArrayList<>(); - - connaissance_Reussite_description_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - connaissance_Reussite_description_1_conditions_ET_list.add( - new ConditionEt(connaissance_Reussite_description_1_conditions_TEST_list) - ); - - Condition connaissance_Reussite_description_1_condition = new Condition(connaissance_Reussite_description_1_conditions_ET_list); - - connaissance_Reussite_descriptions.add( - new Description( - "Permet de se casser de la", - connaissance_Reussite_description_1_condition - ) - ); - List connaissance_visible_Reussite_conditions_ET_list = new ArrayList<>(); - - List connaissance_visible_Reussite_conditions_TEST_list = new ArrayList<>(); - - connaissance_visible_Reussite_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - connaissance_visible_Reussite_conditions_ET_list.add( - new ConditionEt(connaissance_visible_Reussite_conditions_TEST_list) - ); - - Condition connaissance_visible_Reussite_condition = new Condition(connaissance_visible_Reussite_conditions_ET_list); - Connaissance connaissance_Reussite = new Connaissance( - "Reussite", - connaissance_visible_Reussite_condition, - connaissance_Reussite_descriptions - ); - jeu_connaissances.add(connaissance_Reussite); +Map jeu_objets = Map.ofEntries( +); + // "Transformations" @@ -104,14 +127,16 @@ List jeu_transformations = new ArrayList<>(); // "Explorateur" List explorateur_inventaire = new ArrayList<>(); - explorateur_inventaire.add(objet_tentative); - explorateur_inventaire.add(objet_tentative); - explorateur_inventaire.add(objet_tentative); + explorateur_inventaire.addAll( + List.of( + jeu_objets.get("warpToken") + ) + ); List explorateur_connaissances = new ArrayList<>(); Jeu.explorateur = new Explorateur( - 3, + 5, explorateur_connaissances, explorateur_inventaire ); @@ -120,598 +145,170 @@ Jeu.explorateur = new Explorateur( List jeu_personnes = new ArrayList<>(); - List personne_visible_Sphinx_1_conditions_ET_list = new ArrayList<>(); + List personne_cashier_1_interactions = new ArrayList<>(); - List personne_visible_Sphinx_1_conditions_TEST_list = new ArrayList<>(); - - personne_visible_Sphinx_1_conditions_TEST_list.add( - new ConditionConnaissance( - connaissance_Reussite, - true - ) - ); - personne_visible_Sphinx_1_conditions_TEST_list.add( - new ConditionObjet( - objet_tentative, - ">", - 0 - ) - ); - personne_visible_Sphinx_1_conditions_ET_list.add( - new ConditionEt(personne_visible_Sphinx_1_conditions_TEST_list) - ); - - Condition personne_visible_Sphinx_1_condition = new Condition(personne_visible_Sphinx_1_conditions_ET_list); - List personne_obligatoire_Sphinx_1_conditions_ET_list = new ArrayList<>(); - - List personne_obligatoire_Sphinx_1_conditions_TEST_list = new ArrayList<>(); - - personne_obligatoire_Sphinx_1_conditions_TEST_list.add( - new ConditionBoolean(false) - ); - personne_obligatoire_Sphinx_1_conditions_ET_list.add( - new ConditionEt(personne_obligatoire_Sphinx_1_conditions_TEST_list) - ); - - Condition personne_obligatoire_Sphinx_1_condition = new Condition(personne_obligatoire_Sphinx_1_conditions_ET_list); - List personne_Sphinx_1_interactions = new ArrayList<>(); - - List personne_Sphinx_1_interaction_visible_1_conditions_ET_list = new ArrayList<>(); + List personne_cashier_1_interaction_1_actions = new ArrayList<>(); - List personne_Sphinx_1_interaction_visible_1_conditions_TEST_list = new ArrayList<>(); - personne_Sphinx_1_interaction_visible_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - personne_Sphinx_1_interaction_visible_1_conditions_ET_list.add( - new ConditionEt(personne_Sphinx_1_interaction_visible_1_conditions_TEST_list) - ); - - Condition personne_Sphinx_1_interaction_visible_1_condition = new Condition(personne_Sphinx_1_interaction_visible_1_conditions_ET_list); - List personne_Sphinx_1_interaction_1_actions = new ArrayList<>(); - - List personne_Sphinx_1_interaction_1_action_visible_1_conditions_ET_list = new ArrayList<>(); + List personne_cashier_1_interaction_1_action_1_connaissances = new ArrayList<>(); + List personne_cashier_1_interaction_1_action_1_objets_conso = new ArrayList<>(); + personne_cashier_1_interaction_1_action_1_objets_conso.add(objet_warpTicket); + List 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); - List personne_Sphinx_1_interaction_1_action_visible_1_conditions_TEST_list = new ArrayList<>(); - - personne_Sphinx_1_interaction_1_action_visible_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - personne_Sphinx_1_interaction_1_action_visible_1_conditions_ET_list.add( - new ConditionEt(personne_Sphinx_1_interaction_1_action_visible_1_conditions_TEST_list) - ); - - Condition personne_Sphinx_1_interaction_1_action_visible_1_condition = new Condition(personne_Sphinx_1_interaction_1_action_visible_1_conditions_ET_list); - List personne_Sphinx_1_interaction_1_action_fin_1_conditions_ET_list = new ArrayList<>(); - - List personne_Sphinx_1_interaction_1_action_fin_1_conditions_TEST_list = new ArrayList<>(); - - personne_Sphinx_1_interaction_1_action_fin_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - personne_Sphinx_1_interaction_1_action_fin_1_conditions_ET_list.add( - new ConditionEt(personne_Sphinx_1_interaction_1_action_fin_1_conditions_TEST_list) - ); - - Condition personne_Sphinx_1_interaction_1_action_fin_1_condition = new Condition(personne_Sphinx_1_interaction_1_action_fin_1_conditions_ET_list); - List personne_Sphinx_1_interaction_1_action_1_descriptions = new ArrayList<>(); - - List personne_Sphinx_1_interaction_1_action_1_description_1_conditions_ET_list = new ArrayList<>(); - - List personne_Sphinx_1_interaction_1_action_1_description_1_conditions_TEST_list = new ArrayList<>(); - - personne_Sphinx_1_interaction_1_action_1_description_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - personne_Sphinx_1_interaction_1_action_1_description_1_conditions_ET_list.add( - new ConditionEt(personne_Sphinx_1_interaction_1_action_1_description_1_conditions_TEST_list) - ); - - Condition personne_Sphinx_1_interaction_1_action_1_description_1_condition = new Condition(personne_Sphinx_1_interaction_1_action_1_description_1_conditions_ET_list); - - personne_Sphinx_1_interaction_1_action_1_descriptions.add( - new Description( - "la bonne reponse", - personne_Sphinx_1_interaction_1_action_1_description_1_condition - ) - ); - - List personne_Sphinx_1_interaction_1_action_1_connaissances = new ArrayList<>(); - personne_Sphinx_1_interaction_1_action_1_connaissances.add(connaissance_Reussite); - List personne_Sphinx_1_interaction_1_action_1_objets_conso = new ArrayList<>(); - // TODO: OMG C DÉGUEULASSE -> LE FAIRE PARTOUT - List personne_Sphinx_1_interaction_1_action_1_objets_recus = new ArrayList<>(); - - personne_Sphinx_1_interaction_1_actions.add( + personne_cashier_1_interaction_1_actions.add( new Action( - personne_Sphinx_1_interaction_1_action_visible_1_condition, - personne_Sphinx_1_interaction_1_action_fin_1_condition, - personne_Sphinx_1_interaction_1_action_1_connaissances, - personne_Sphinx_1_interaction_1_action_1_objets_recus, - personne_Sphinx_1_interaction_1_action_1_objets_conso, - personne_Sphinx_1_interaction_1_action_1_descriptions + 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 personne_Sphinx_1_interaction_1_action_visible_2_conditions_ET_list = new ArrayList<>(); - - List personne_Sphinx_1_interaction_1_action_visible_2_conditions_TEST_list = new ArrayList<>(); - - personne_Sphinx_1_interaction_1_action_visible_2_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - personne_Sphinx_1_interaction_1_action_visible_2_conditions_ET_list.add( - new ConditionEt(personne_Sphinx_1_interaction_1_action_visible_2_conditions_TEST_list) - ); - - Condition personne_Sphinx_1_interaction_1_action_visible_2_condition = new Condition(personne_Sphinx_1_interaction_1_action_visible_2_conditions_ET_list); - List personne_Sphinx_1_interaction_1_action_fin_2_conditions_ET_list = new ArrayList<>(); - - List personne_Sphinx_1_interaction_1_action_fin_2_conditions_TEST_list = new ArrayList<>(); - - personne_Sphinx_1_interaction_1_action_fin_2_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - personne_Sphinx_1_interaction_1_action_fin_2_conditions_ET_list.add( - new ConditionEt(personne_Sphinx_1_interaction_1_action_fin_2_conditions_TEST_list) - ); - - Condition personne_Sphinx_1_interaction_1_action_fin_2_condition = new Condition(personne_Sphinx_1_interaction_1_action_fin_2_conditions_ET_list); - List personne_Sphinx_1_interaction_1_action_2_descriptions = new ArrayList<>(); - - List personne_Sphinx_1_interaction_1_action_2_description_1_conditions_ET_list = new ArrayList<>(); - - List personne_Sphinx_1_interaction_1_action_2_description_1_conditions_TEST_list = new ArrayList<>(); - - personne_Sphinx_1_interaction_1_action_2_description_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - personne_Sphinx_1_interaction_1_action_2_description_1_conditions_ET_list.add( - new ConditionEt(personne_Sphinx_1_interaction_1_action_2_description_1_conditions_TEST_list) - ); - - Condition personne_Sphinx_1_interaction_1_action_2_description_1_condition = new Condition(personne_Sphinx_1_interaction_1_action_2_description_1_conditions_ET_list); - - personne_Sphinx_1_interaction_1_action_2_descriptions.add( - new Description( - "la mauvaise reponse", - personne_Sphinx_1_interaction_1_action_2_description_1_condition - ) - ); - List personne_Sphinx_1_interaction_1_action_2_connaissances = new ArrayList<>(); - List personne_Sphinx_1_interaction_1_action_2_objets_conso = new ArrayList<>(); - // TODO: OMG C DÉGUEULASSE -> LE FAIRE PARTOUT - personne_Sphinx_1_interaction_1_action_2_objets_conso.add(objet_tentative); - List personne_Sphinx_1_interaction_1_action_2_objets_recus = new ArrayList<>(); + List personne_cashier_1_interaction_1_action_2_connaissances = new ArrayList<>(); + List personne_cashier_1_interaction_1_action_2_objets_conso = new ArrayList<>(); + List personne_cashier_1_interaction_1_action_2_objets_recus = new ArrayList<>(); - personne_Sphinx_1_interaction_1_actions.add( + personne_cashier_1_interaction_1_actions.add( new Action( - personne_Sphinx_1_interaction_1_action_visible_2_condition, - personne_Sphinx_1_interaction_1_action_fin_2_condition, - personne_Sphinx_1_interaction_1_action_2_connaissances, - personne_Sphinx_1_interaction_1_action_2_objets_recus, - personne_Sphinx_1_interaction_1_action_2_objets_conso, - personne_Sphinx_1_interaction_1_action_2_descriptions + 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 personne_Sphinx_1_interaction_1_connaissances = new ArrayList<>(); - List personne_Sphinx_1_interaction_1_objets_conso = new ArrayList<>(); - List personne_Sphinx_1_interaction_1_objets_recus = new ArrayList<>(); + List personne_cashier_1_interaction_1_connaissances = new ArrayList<>(); + List personne_cashier_1_interaction_1_objets_conso = new ArrayList<>(); + List personne_cashier_1_interaction_1_objets_recus = new ArrayList<>(); - personne_Sphinx_1_interactions.add( + personne_cashier_1_interactions.add( new Interaction( - personne_Sphinx_1_interaction_visible_1_condition, - personne_Sphinx_1_interaction_1_connaissances, - personne_Sphinx_1_interaction_1_objets_conso, - personne_Sphinx_1_interaction_1_objets_recus, - personne_Sphinx_1_interaction_1_actions + 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_Sphinx = new Personne( - "Sphinx", - personne_visible_Sphinx_1_condition, - personne_obligatoire_Sphinx_1_condition, - personne_Sphinx_1_interactions + Personne personne_cashier = new Personne( + "cashier", + personne_visible_cashier_1_condition, + personne_obligatoire_cashier_1_condition, + personne_cashier_1_interactions ); - jeu_personnes.add(personne_Sphinx); + jeu_personnes.add(personne_cashier); // "Lieux" List territoire_lieux = new ArrayList<>(); - List lieu_deposable_1_conditions_ET_list = new ArrayList<>(); - List lieu_deposable_1_conditions_TEST_list = new ArrayList<>(); - - lieu_deposable_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - lieu_deposable_1_conditions_ET_list.add( - new ConditionEt(lieu_deposable_1_conditions_TEST_list) - ); - - Condition lieu_deposable_1_condition = new Condition(lieu_deposable_1_conditions_ET_list); - List lieu_depart_1_conditions_ET_list = new ArrayList<>(); - - List lieu_depart_1_conditions_TEST_list = new ArrayList<>(); - - lieu_depart_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - lieu_depart_1_conditions_ET_list.add( - new ConditionEt(lieu_depart_1_conditions_TEST_list) - ); - - Condition lieu_depart_1_condition = new Condition(lieu_depart_1_conditions_ET_list); - List lieu_fin_1_conditions_ET_list = new ArrayList<>(); - - List lieu_fin_1_conditions_TEST_list = new ArrayList<>(); - - lieu_fin_1_conditions_TEST_list.add( - new ConditionBoolean(false) - ); - lieu_fin_1_conditions_ET_list.add( - new ConditionEt(lieu_fin_1_conditions_TEST_list) - ); - - Condition lieu_fin_1_condition = new Condition(lieu_fin_1_conditions_ET_list); - List lieu_Enigme_1_descriptions = new ArrayList<>(); - - List lieu_Enigme_1_description_1_conditions_ET_list = new ArrayList<>(); - - List lieu_Enigme_1_description_1_conditions_TEST_list = new ArrayList<>(); - - lieu_Enigme_1_description_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - lieu_Enigme_1_description_1_conditions_ET_list.add( - new ConditionEt(lieu_Enigme_1_description_1_conditions_TEST_list) - ); - - Condition lieu_Enigme_1_description_1_condition = new Condition(lieu_Enigme_1_description_1_conditions_ET_list); - - lieu_Enigme_1_descriptions.add( - new Description( - "lieu de depart", - lieu_Enigme_1_description_1_condition - ) - ); - - List lieu_Enigme_1_personnes = new ArrayList<>(); - lieu_Enigme_1_personnes.add(personne_Sphinx); - List lieu_Enigme_1_objets = new ArrayList<>(); - List lieu_Enigme_1_connaissances = new ArrayList<>(); + List lieu_preWarp_1_personnes = new ArrayList<>(); + lieu_preWarp_1_personnes.add(personne_cashier); + List lieu_preWarp_1_objets = new ArrayList<>(); + List lieu_preWarp_1_connaissances = new ArrayList<>(); // TODO: utiliser un search dans la liste plutot que de déclarer les objets - Lieu lieu_Enigme = new Lieu( - "Enigme", + Lieu lieu_preWarp = new Lieu( + "preWarp", lieu_deposable_1_condition, lieu_depart_1_condition, lieu_fin_1_condition, - lieu_Enigme_1_personnes, - lieu_Enigme_1_descriptions, - lieu_Enigme_1_objets, - lieu_Enigme_1_connaissances + lieu_preWarp_1_personnes, + lieu_preWarp_1_descriptions, + lieu_preWarp_1_objets, + lieu_preWarp_1_connaissances ); - territoire_lieux.add(lieu_Enigme); - List lieu_deposable_2_conditions_ET_list = new ArrayList<>(); + territoire_lieux.add(lieu_preWarp); - List lieu_deposable_2_conditions_TEST_list = new ArrayList<>(); - - lieu_deposable_2_conditions_TEST_list.add( - new ConditionBoolean(false) - ); - lieu_deposable_2_conditions_ET_list.add( - new ConditionEt(lieu_deposable_2_conditions_TEST_list) - ); - - Condition lieu_deposable_2_condition = new Condition(lieu_deposable_2_conditions_ET_list); - List lieu_depart_2_conditions_ET_list = new ArrayList<>(); - - List lieu_depart_2_conditions_TEST_list = new ArrayList<>(); - - lieu_depart_2_conditions_TEST_list.add( - new ConditionBoolean(false) - ); - lieu_depart_2_conditions_ET_list.add( - new ConditionEt(lieu_depart_2_conditions_TEST_list) - ); - - Condition lieu_depart_2_condition = new Condition(lieu_depart_2_conditions_ET_list); - List lieu_fin_2_conditions_ET_list = new ArrayList<>(); - - List lieu_fin_2_conditions_TEST_list = new ArrayList<>(); - - lieu_fin_2_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - lieu_fin_2_conditions_ET_list.add( - new ConditionEt(lieu_fin_2_conditions_TEST_list) - ); - - Condition lieu_fin_2_condition = new Condition(lieu_fin_2_conditions_ET_list); - List lieu_Succes_2_descriptions = new ArrayList<>(); - - List lieu_Succes_2_description_1_conditions_ET_list = new ArrayList<>(); - - List lieu_Succes_2_description_1_conditions_TEST_list = new ArrayList<>(); - - lieu_Succes_2_description_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - lieu_Succes_2_description_1_conditions_ET_list.add( - new ConditionEt(lieu_Succes_2_description_1_conditions_TEST_list) - ); - - Condition lieu_Succes_2_description_1_condition = new Condition(lieu_Succes_2_description_1_conditions_ET_list); - - lieu_Succes_2_descriptions.add( - new Description( - "lieu succes", - lieu_Succes_2_description_1_condition - ) - ); - - List lieu_Succes_2_personnes = new ArrayList<>(); - List lieu_Succes_2_objets = new ArrayList<>(); - List lieu_Succes_2_connaissances = new ArrayList<>(); + List lieu_postWarp_2_personnes = new ArrayList<>(); + List lieu_postWarp_2_objets = new ArrayList<>(); + List lieu_postWarp_2_connaissances = new ArrayList<>(); // TODO: utiliser un search dans la liste plutot que de déclarer les objets - Lieu lieu_Succes = new Lieu( - "Succes", + Lieu lieu_postWarp = new Lieu( + "postWarp", lieu_deposable_2_condition, lieu_depart_2_condition, lieu_fin_2_condition, - lieu_Succes_2_personnes, - lieu_Succes_2_descriptions, - lieu_Succes_2_objets, - lieu_Succes_2_connaissances + lieu_postWarp_2_personnes, + lieu_postWarp_2_descriptions, + lieu_postWarp_2_objets, + lieu_postWarp_2_connaissances ); - territoire_lieux.add(lieu_Succes); - List lieu_deposable_3_conditions_ET_list = new ArrayList<>(); + territoire_lieux.add(lieu_postWarp); - List lieu_deposable_3_conditions_TEST_list = new ArrayList<>(); - - lieu_deposable_3_conditions_TEST_list.add( - new ConditionBoolean(false) - ); - lieu_deposable_3_conditions_ET_list.add( - new ConditionEt(lieu_deposable_3_conditions_TEST_list) - ); - - Condition lieu_deposable_3_condition = new Condition(lieu_deposable_3_conditions_ET_list); - List lieu_depart_3_conditions_ET_list = new ArrayList<>(); - - List lieu_depart_3_conditions_TEST_list = new ArrayList<>(); - - lieu_depart_3_conditions_TEST_list.add( - new ConditionBoolean(false) - ); - lieu_depart_3_conditions_ET_list.add( - new ConditionEt(lieu_depart_3_conditions_TEST_list) - ); - - Condition lieu_depart_3_condition = new Condition(lieu_depart_3_conditions_ET_list); - List lieu_fin_3_conditions_ET_list = new ArrayList<>(); - - List lieu_fin_3_conditions_TEST_list = new ArrayList<>(); - - lieu_fin_3_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - lieu_fin_3_conditions_ET_list.add( - new ConditionEt(lieu_fin_3_conditions_TEST_list) - ); - - Condition lieu_fin_3_condition = new Condition(lieu_fin_3_conditions_ET_list); - List lieu_Echec_3_descriptions = new ArrayList<>(); - - List lieu_Echec_3_description_1_conditions_ET_list = new ArrayList<>(); - - List lieu_Echec_3_description_1_conditions_TEST_list = new ArrayList<>(); - - lieu_Echec_3_description_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - lieu_Echec_3_description_1_conditions_ET_list.add( - new ConditionEt(lieu_Echec_3_description_1_conditions_TEST_list) - ); - - Condition lieu_Echec_3_description_1_condition = new Condition(lieu_Echec_3_description_1_conditions_ET_list); - - lieu_Echec_3_descriptions.add( - new Description( - "lieu echec", - lieu_Echec_3_description_1_condition - ) - ); - - List lieu_Echec_3_personnes = new ArrayList<>(); - List lieu_Echec_3_objets = new ArrayList<>(); - List lieu_Echec_3_connaissances = new ArrayList<>(); + List lieu_END_3_personnes = new ArrayList<>(); + List lieu_END_3_objets = new ArrayList<>(); + List lieu_END_3_connaissances = new ArrayList<>(); // TODO: utiliser un search dans la liste plutot que de déclarer les objets - Lieu lieu_Echec = new Lieu( - "Echec", + Lieu lieu_END = new Lieu( + "END", lieu_deposable_3_condition, lieu_depart_3_condition, lieu_fin_3_condition, - lieu_Echec_3_personnes, - lieu_Echec_3_descriptions, - lieu_Echec_3_objets, - lieu_Echec_3_connaissances + lieu_END_3_personnes, + lieu_END_3_descriptions, + lieu_END_3_objets, + lieu_END_3_connaissances ); - territoire_lieux.add(lieu_Echec); + territoire_lieux.add(lieu_END); // "Chemins" List territoire_chemins = new ArrayList<>(); - List chemin_ouvert_Win_1_conditions_ET_list = new ArrayList<>(); - List chemin_ouvert_Win_1_conditions_TEST_list = new ArrayList<>(); - - chemin_ouvert_Win_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - chemin_ouvert_Win_1_conditions_ET_list.add( - new ConditionEt(chemin_ouvert_Win_1_conditions_TEST_list) - ); - - Condition chemin_ouvert_Win_1_condition = new Condition(chemin_ouvert_Win_1_conditions_ET_list); - List chemin_visible_Win_1_conditions_ET_list = new ArrayList<>(); - - List chemin_visible_Win_1_conditions_TEST_list = new ArrayList<>(); - - chemin_visible_Win_1_conditions_TEST_list.add( - new ConditionConnaissance( - connaissance_Reussite, - false - ) - ); - chemin_visible_Win_1_conditions_ET_list.add( - new ConditionEt(chemin_visible_Win_1_conditions_TEST_list) - ); - - Condition chemin_visible_Win_1_condition = new Condition(chemin_visible_Win_1_conditions_ET_list); - List chemin_obligatoire_Win_1_conditions_ET_list = new ArrayList<>(); - - List chemin_obligatoire_Win_1_conditions_TEST_list = new ArrayList<>(); - - chemin_obligatoire_Win_1_conditions_TEST_list.add( - new ConditionBoolean(false) - ); - chemin_obligatoire_Win_1_conditions_ET_list.add( - new ConditionEt(chemin_obligatoire_Win_1_conditions_TEST_list) - ); - - Condition chemin_obligatoire_Win_1_condition = new Condition(chemin_obligatoire_Win_1_conditions_ET_list); - List chemin_Win_1_descriptions = new ArrayList<>(); - - List chemin_Win_1_description_1_conditions_ET_list = new ArrayList<>(); - - List chemin_Win_1_description_1_conditions_TEST_list = new ArrayList<>(); - - chemin_Win_1_description_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - chemin_Win_1_description_1_conditions_ET_list.add( - new ConditionEt(chemin_Win_1_description_1_conditions_TEST_list) - ); - - Condition chemin_Win_1_description_1_condition = new Condition(chemin_Win_1_description_1_conditions_ET_list); - - chemin_Win_1_descriptions.add( - new Description( - "Le chemin de la victoire !", - chemin_Win_1_description_1_condition - ) - ); - - List chemin_Win_1_connaissances = new ArrayList<>(); - List chemin_Win_1_objets_recus = new ArrayList<>(); - List chemin_Win_1_objets_conso = new ArrayList<>(); + List chemin_Warp_1_connaissances = new ArrayList<>(); + List chemin_Warp_1_objets_recus = new ArrayList<>(); + List chemin_Warp_1_objets_conso = new ArrayList<>(); + chemin_Warp_1_objets_conso.add(objet_warpToken); - Chemin chemins_Win = new Chemin( - "Win", - lieu_Enigme, - lieu_Succes, - chemin_ouvert_Win_1_condition, - chemin_visible_Win_1_condition, - chemin_obligatoire_Win_1_condition, - chemin_Win_1_connaissances, - chemin_Win_1_objets_recus, - chemin_Win_1_objets_conso, - chemin_Win_1_descriptions + Chemin chemins_Warp = new Chemin( + "Warp", + lieu_preWarp, + lieu_postWarp, + chemin_ouvert_Warp_1_condition, + chemin_visible_Warp_1_condition, + chemin_obligatoire_Warp_1_condition, + chemin_Warp_1_connaissances, + chemin_Warp_1_objets_recus, + chemin_Warp_1_objets_conso, + chemin_Warp_1_descriptions ); - territoire_chemins.add(chemins_Win); - List chemin_ouvert_Loose_2_conditions_ET_list = new ArrayList<>(); + territoire_chemins.add(chemins_Warp); - List chemin_ouvert_Loose_2_conditions_TEST_list = new ArrayList<>(); - - chemin_ouvert_Loose_2_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - chemin_ouvert_Loose_2_conditions_ET_list.add( - new ConditionEt(chemin_ouvert_Loose_2_conditions_TEST_list) - ); - - Condition chemin_ouvert_Loose_2_condition = new Condition(chemin_ouvert_Loose_2_conditions_ET_list); - List chemin_visible_Loose_2_conditions_ET_list = new ArrayList<>(); - - List chemin_visible_Loose_2_conditions_TEST_list = new ArrayList<>(); - - chemin_visible_Loose_2_conditions_TEST_list.add( - new ConditionObjet( - objet_tentative, - "==", - 0 - ) - ); - chemin_visible_Loose_2_conditions_ET_list.add( - new ConditionEt(chemin_visible_Loose_2_conditions_TEST_list) - ); - - Condition chemin_visible_Loose_2_condition = new Condition(chemin_visible_Loose_2_conditions_ET_list); - List chemin_obligatoire_Loose_2_conditions_ET_list = new ArrayList<>(); - - List chemin_obligatoire_Loose_2_conditions_TEST_list = new ArrayList<>(); - - chemin_obligatoire_Loose_2_conditions_TEST_list.add( - new ConditionBoolean(false) - ); - chemin_obligatoire_Loose_2_conditions_ET_list.add( - new ConditionEt(chemin_obligatoire_Loose_2_conditions_TEST_list) - ); - - Condition chemin_obligatoire_Loose_2_condition = new Condition(chemin_obligatoire_Loose_2_conditions_ET_list); - List chemin_Loose_2_descriptions = new ArrayList<>(); - - List chemin_Loose_2_description_1_conditions_ET_list = new ArrayList<>(); - - List chemin_Loose_2_description_1_conditions_TEST_list = new ArrayList<>(); - - chemin_Loose_2_description_1_conditions_TEST_list.add( - new ConditionBoolean(true) - ); - chemin_Loose_2_description_1_conditions_ET_list.add( - new ConditionEt(chemin_Loose_2_description_1_conditions_TEST_list) - ); - - Condition chemin_Loose_2_description_1_condition = new Condition(chemin_Loose_2_description_1_conditions_ET_list); - - chemin_Loose_2_descriptions.add( - new Description( - "Le chemin de la loose !", - chemin_Loose_2_description_1_condition - ) - ); - - List chemin_Loose_2_connaissances = new ArrayList<>(); - List chemin_Loose_2_objets_recus = new ArrayList<>(); - List chemin_Loose_2_objets_conso = new ArrayList<>(); + List chemin_EndChemin_2_connaissances = new ArrayList<>(); + List chemin_EndChemin_2_objets_recus = new ArrayList<>(); + List chemin_EndChemin_2_objets_conso = new ArrayList<>(); - Chemin chemins_Loose = new Chemin( - "Loose", - lieu_Enigme, - lieu_Echec, - chemin_ouvert_Loose_2_condition, - chemin_visible_Loose_2_condition, - chemin_obligatoire_Loose_2_condition, - chemin_Loose_2_connaissances, - chemin_Loose_2_objets_recus, - chemin_Loose_2_objets_conso, - chemin_Loose_2_descriptions + Chemin chemins_EndChemin = new Chemin( + "EndChemin", + lieu_postWarp, + lieu_END, + chemin_ouvert_EndChemin_2_condition, + chemin_visible_EndChemin_2_condition, + chemin_obligatoire_EndChemin_2_condition, + chemin_EndChemin_2_connaissances, + chemin_EndChemin_2_objets_recus, + chemin_EndChemin_2_objets_conso, + chemin_EndChemin_2_descriptions ); - territoire_chemins.add(chemins_Loose); + territoire_chemins.add(chemins_EndChemin); Territoire jeu_territoire = new Territoire(territoire_lieux, territoire_chemins); diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/Prototype.java.bak b/runtime-workspace/fr.n7.game.examples/src-gen/Prototype.java.bak new file mode 100644 index 0000000..9fc13bf --- /dev/null +++ b/runtime-workspace/fr.n7.game.examples/src-gen/Prototype.java.bak @@ -0,0 +1,666 @@ +import java.util.List; +import java.util.Map; +import java.util.ArrayList; +import java.util.HashMap; +import java.io.InputStreamReader; +import java.io.BufferedReader; +import java.io.IOException; + +public class Prototype { + public static void main(String[] args) { + + // "Objets" + + List jeu_objets = new ArrayList<>(); + Map jeu_objets2 = new HashMap<>(); + + List objet_warpToken_descriptions = new ArrayList<>(); + + objet_warpToken_descriptions.add( + new Description( + "warpToken description", + new Condition(null))); + + + Objet objet_warpToken = new Objet( + "warpToken", + 1, + objet_visible_warpToken_condition, + objet_warpToken_descriptions); + jeu_objets2.put("test", objet_warpToken); + + List objet_warpTicket_descriptions = new ArrayList<>(); + + List objet_warpTicket_description_1_conditions_ET_list = new ArrayList<>(); + + List objet_warpTicket_description_1_conditions_TEST_list = new ArrayList<>(); + + objet_warpTicket_description_1_conditions_TEST_list.add( + new ConditionBoolean(true)); + objet_warpTicket_description_1_conditions_ET_list.add( + new ConditionEt(objet_warpTicket_description_1_conditions_TEST_list)); + + Condition objet_warpTicket_description_1_condition = new Condition( + objet_warpTicket_description_1_conditions_ET_list); + + objet_warpTicket_descriptions.add( + new Description( + "warpTicket description", + objet_warpTicket_description_1_condition)); + List objet_visible_warpTicket_conditions_ET_list = new ArrayList<>(); + + List objet_visible_warpTicket_conditions_TEST_list = new ArrayList<>(); + + objet_visible_warpTicket_conditions_TEST_list.add( + new ConditionBoolean(true)); + objet_visible_warpTicket_conditions_ET_list.add( + new ConditionEt(objet_visible_warpTicket_conditions_TEST_list)); + + Condition objet_visible_warpTicket_condition = new Condition(objet_visible_warpTicket_conditions_ET_list); + Objet objet_warpTicket = new Objet( + "warpTicket", + 1, + objet_visible_warpTicket_condition, + objet_warpTicket_descriptions); + jeu_objets.add(objet_warpTicket); + List objet_warpReceipt_descriptions = new ArrayList<>(); + + List objet_warpReceipt_description_1_conditions_ET_list = new ArrayList<>(); + + List objet_warpReceipt_description_1_conditions_TEST_list = new ArrayList<>(); + + objet_warpReceipt_description_1_conditions_TEST_list.add( + new ConditionBoolean(true)); + objet_warpReceipt_description_1_conditions_ET_list.add( + new ConditionEt(objet_warpReceipt_description_1_conditions_TEST_list)); + + Condition objet_warpReceipt_description_1_condition = new Condition( + objet_warpReceipt_description_1_conditions_ET_list); + + objet_warpReceipt_descriptions.add( + new Description( + "warpReceipt description", + objet_warpReceipt_description_1_condition)); + List objet_visible_warpReceipt_conditions_ET_list = new ArrayList<>(); + + List objet_visible_warpReceipt_conditions_TEST_list = new ArrayList<>(); + + objet_visible_warpReceipt_conditions_TEST_list.add( + new ConditionBoolean(true)); + objet_visible_warpReceipt_conditions_ET_list.add( + new ConditionEt(objet_visible_warpReceipt_conditions_TEST_list)); + + Condition objet_visible_warpReceipt_condition = new Condition(objet_visible_warpReceipt_conditions_ET_list); + Objet objet_warpReceipt = new Objet( + "warpReceipt", + 1, + objet_visible_warpReceipt_condition, + objet_warpReceipt_descriptions); + jeu_objets.add(objet_warpReceipt); + + // "Connaissances" + + List jeu_connaissances = new ArrayList<>(); + + // "Transformations" + + List jeu_transformations = new ArrayList<>(); + + // "Explorateur" + + List explorateur_inventaire = new ArrayList<>(); + explorateur_inventaire.add(objet_warpTicket); + + List explorateur_connaissances = new ArrayList<>(); + + Jeu.explorateur = new Explorateur( + 5, + explorateur_connaissances, + explorateur_inventaire); + + // "Personnes" + + List jeu_personnes = new ArrayList<>(); + + List personne_visible_cashier_1_conditions_ET_list = new ArrayList<>(); + + List personne_visible_cashier_1_conditions_TEST_list = new ArrayList<>(); + + personne_visible_cashier_1_conditions_TEST_list.add( + new ConditionBoolean(true)); + personne_visible_cashier_1_conditions_ET_list.add( + new ConditionEt(personne_visible_cashier_1_conditions_TEST_list)); + + Condition personne_visible_cashier_1_condition = new Condition(personne_visible_cashier_1_conditions_ET_list); + List personne_obligatoire_cashier_1_conditions_ET_list = new ArrayList<>(); + + List personne_obligatoire_cashier_1_conditions_TEST_list = new ArrayList<>(); + + personne_obligatoire_cashier_1_conditions_TEST_list.add( + new ConditionBoolean(false)); + personne_obligatoire_cashier_1_conditions_ET_list.add( + new ConditionEt(personne_obligatoire_cashier_1_conditions_TEST_list)); + + Condition personne_obligatoire_cashier_1_condition = new Condition( + personne_obligatoire_cashier_1_conditions_ET_list); + List personne_cashier_1_interactions = new ArrayList<>(); + + List personne_cashier_1_interaction_visible_1_conditions_ET_list = new ArrayList<>(); + + List personne_cashier_1_interaction_visible_1_conditions_TEST_list = new ArrayList<>(); + + personne_cashier_1_interaction_visible_1_conditions_TEST_list.add( + new ConditionBoolean(true)); + personne_cashier_1_interaction_visible_1_conditions_ET_list.add( + new ConditionEt(personne_cashier_1_interaction_visible_1_conditions_TEST_list)); + + Condition personne_cashier_1_interaction_visible_1_condition = new Condition( + personne_cashier_1_interaction_visible_1_conditions_ET_list); + List personne_cashier_1_interaction_1_actions = new ArrayList<>(); + + List personne_cashier_1_interaction_1_action_visible_1_conditions_ET_list = new ArrayList<>(); + + List personne_cashier_1_interaction_1_action_visible_1_conditions_TEST_list = new ArrayList<>(); + + personne_cashier_1_interaction_1_action_visible_1_conditions_TEST_list.add( + new ConditionObjet( + objet_warpTicket, + "==", + 1)); + personne_cashier_1_interaction_1_action_visible_1_conditions_ET_list.add( + new ConditionEt(personne_cashier_1_interaction_1_action_visible_1_conditions_TEST_list)); + + Condition personne_cashier_1_interaction_1_action_visible_1_condition = new Condition( + personne_cashier_1_interaction_1_action_visible_1_conditions_ET_list); + List personne_cashier_1_interaction_1_action_fin_1_conditions_ET_list = new ArrayList<>(); + + List personne_cashier_1_interaction_1_action_fin_1_conditions_TEST_list = new ArrayList<>(); + + personne_cashier_1_interaction_1_action_fin_1_conditions_TEST_list.add( + new ConditionBoolean(true)); + personne_cashier_1_interaction_1_action_fin_1_conditions_ET_list.add( + new ConditionEt(personne_cashier_1_interaction_1_action_fin_1_conditions_TEST_list)); + + Condition personne_cashier_1_interaction_1_action_fin_1_condition = new Condition( + personne_cashier_1_interaction_1_action_fin_1_conditions_ET_list); + List personne_cashier_1_interaction_1_action_1_descriptions = new ArrayList<>(); + + List personne_cashier_1_interaction_1_action_1_description_1_conditions_ET_list = new ArrayList<>(); + + List personne_cashier_1_interaction_1_action_1_description_1_conditions_TEST_list = new ArrayList<>(); + + personne_cashier_1_interaction_1_action_1_description_1_conditions_TEST_list.add( + new ConditionBoolean(true)); + personne_cashier_1_interaction_1_action_1_description_1_conditions_ET_list.add( + new ConditionEt(personne_cashier_1_interaction_1_action_1_description_1_conditions_TEST_list)); + + Condition personne_cashier_1_interaction_1_action_1_description_1_condition = new Condition( + personne_cashier_1_interaction_1_action_1_description_1_conditions_ET_list); + + personne_cashier_1_interaction_1_action_1_descriptions.add( + new Description( + "Acheter un ticket", + personne_cashier_1_interaction_1_action_1_description_1_condition)); + + List personne_cashier_1_interaction_1_action_1_connaissances = new ArrayList<>(); + List personne_cashier_1_interaction_1_action_1_objets_conso = new ArrayList<>(); + personne_cashier_1_interaction_1_action_1_objets_conso.add(objet_warpTicket); + List 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 personne_cashier_1_interaction_1_action_visible_2_conditions_ET_list = new ArrayList<>(); + + List personne_cashier_1_interaction_1_action_visible_2_conditions_TEST_list = new ArrayList<>(); + + personne_cashier_1_interaction_1_action_visible_2_conditions_TEST_list.add( + new ConditionBoolean(true)); + personne_cashier_1_interaction_1_action_visible_2_conditions_ET_list.add( + new ConditionEt(personne_cashier_1_interaction_1_action_visible_2_conditions_TEST_list)); + + Condition personne_cashier_1_interaction_1_action_visible_2_condition = new Condition( + personne_cashier_1_interaction_1_action_visible_2_conditions_ET_list); + List personne_cashier_1_interaction_1_action_fin_2_conditions_ET_list = new ArrayList<>(); + + List personne_cashier_1_interaction_1_action_fin_2_conditions_TEST_list = new ArrayList<>(); + + personne_cashier_1_interaction_1_action_fin_2_conditions_TEST_list.add( + new ConditionBoolean(true)); + personne_cashier_1_interaction_1_action_fin_2_conditions_ET_list.add( + new ConditionEt(personne_cashier_1_interaction_1_action_fin_2_conditions_TEST_list)); + + Condition personne_cashier_1_interaction_1_action_fin_2_condition = new Condition( + personne_cashier_1_interaction_1_action_fin_2_conditions_ET_list); + List personne_cashier_1_interaction_1_action_2_descriptions = new ArrayList<>(); + + List personne_cashier_1_interaction_1_action_2_description_1_conditions_ET_list = new ArrayList<>(); + + List personne_cashier_1_interaction_1_action_2_description_1_conditions_TEST_list = new ArrayList<>(); + + personne_cashier_1_interaction_1_action_2_description_1_conditions_TEST_list.add( + new ConditionBoolean(true)); + personne_cashier_1_interaction_1_action_2_description_1_conditions_ET_list.add( + new ConditionEt(personne_cashier_1_interaction_1_action_2_description_1_conditions_TEST_list)); + + Condition personne_cashier_1_interaction_1_action_2_description_1_condition = new Condition( + personne_cashier_1_interaction_1_action_2_description_1_conditions_ET_list); + + personne_cashier_1_interaction_1_action_2_descriptions.add( + new Description( + "Quitter", + personne_cashier_1_interaction_1_action_2_description_1_condition)); + + List personne_cashier_1_interaction_1_action_2_connaissances = new ArrayList<>(); + List personne_cashier_1_interaction_1_action_2_objets_conso = new ArrayList<>(); + List 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 personne_cashier_1_interaction_1_connaissances = new ArrayList<>(); + List personne_cashier_1_interaction_1_objets_conso = new ArrayList<>(); + List 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", + personne_visible_cashier_1_condition, + personne_obligatoire_cashier_1_condition, + personne_cashier_1_interactions); + + jeu_personnes.add(personne_cashier); + + // "Lieux" + + List territoire_lieux = new ArrayList<>(); + List lieu_deposable_1_conditions_ET_list = new ArrayList<>(); + + List lieu_deposable_1_conditions_TEST_list = new ArrayList<>(); + + lieu_deposable_1_conditions_TEST_list.add( + new ConditionBoolean(false)); + lieu_deposable_1_conditions_ET_list.add( + new ConditionEt(lieu_deposable_1_conditions_TEST_list)); + + Condition lieu_deposable_1_condition = new Condition(lieu_deposable_1_conditions_ET_list); + List lieu_depart_1_conditions_ET_list = new ArrayList<>(); + + List lieu_depart_1_conditions_TEST_list = new ArrayList<>(); + + lieu_depart_1_conditions_TEST_list.add( + new ConditionBoolean(true)); + lieu_depart_1_conditions_ET_list.add( + new ConditionEt(lieu_depart_1_conditions_TEST_list)); + + Condition lieu_depart_1_condition = new Condition(lieu_depart_1_conditions_ET_list); + List lieu_fin_1_conditions_ET_list = new ArrayList<>(); + + List lieu_fin_1_conditions_TEST_list = new ArrayList<>(); + + lieu_fin_1_conditions_TEST_list.add( + new ConditionBoolean(false)); + lieu_fin_1_conditions_ET_list.add( + new ConditionEt(lieu_fin_1_conditions_TEST_list)); + + Condition lieu_fin_1_condition = new Condition(lieu_fin_1_conditions_ET_list); + List lieu_preWarp_1_descriptions = new ArrayList<>(); + + List lieu_preWarp_1_description_1_conditions_ET_list = new ArrayList<>(); + + List lieu_preWarp_1_description_1_conditions_TEST_list = new ArrayList<>(); + + lieu_preWarp_1_description_1_conditions_TEST_list.add( + new ConditionBoolean(true)); + lieu_preWarp_1_description_1_conditions_ET_list.add( + new ConditionEt(lieu_preWarp_1_description_1_conditions_TEST_list)); + + Condition lieu_preWarp_1_description_1_condition = new Condition( + lieu_preWarp_1_description_1_conditions_ET_list); + + lieu_preWarp_1_descriptions.add( + new Description( + "preWarp description", + lieu_preWarp_1_description_1_condition)); + + List lieu_preWarp_1_personnes = new ArrayList<>(); + lieu_preWarp_1_personnes.add(personne_cashier); + List lieu_preWarp_1_objets = new ArrayList<>(); + List 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", + lieu_deposable_1_condition, + lieu_depart_1_condition, + lieu_fin_1_condition, + lieu_preWarp_1_personnes, + lieu_preWarp_1_descriptions, + lieu_preWarp_1_objets, + lieu_preWarp_1_connaissances); + + territoire_lieux.add(lieu_preWarp); + List lieu_deposable_2_conditions_ET_list = new ArrayList<>(); + + List lieu_deposable_2_conditions_TEST_list = new ArrayList<>(); + + lieu_deposable_2_conditions_TEST_list.add( + new ConditionBoolean(true)); + lieu_deposable_2_conditions_ET_list.add( + new ConditionEt(lieu_deposable_2_conditions_TEST_list)); + + Condition lieu_deposable_2_condition = new Condition(lieu_deposable_2_conditions_ET_list); + List lieu_depart_2_conditions_ET_list = new ArrayList<>(); + + List lieu_depart_2_conditions_TEST_list = new ArrayList<>(); + + lieu_depart_2_conditions_TEST_list.add( + new ConditionBoolean(false)); + lieu_depart_2_conditions_ET_list.add( + new ConditionEt(lieu_depart_2_conditions_TEST_list)); + + Condition lieu_depart_2_condition = new Condition(lieu_depart_2_conditions_ET_list); + List lieu_fin_2_conditions_ET_list = new ArrayList<>(); + + List lieu_fin_2_conditions_TEST_list = new ArrayList<>(); + + lieu_fin_2_conditions_TEST_list.add( + new ConditionBoolean(false)); + lieu_fin_2_conditions_ET_list.add( + new ConditionEt(lieu_fin_2_conditions_TEST_list)); + + Condition lieu_fin_2_condition = new Condition(lieu_fin_2_conditions_ET_list); + List lieu_postWarp_2_descriptions = new ArrayList<>(); + + List lieu_postWarp_2_description_1_conditions_ET_list = new ArrayList<>(); + + List lieu_postWarp_2_description_1_conditions_TEST_list = new ArrayList<>(); + + lieu_postWarp_2_description_1_conditions_TEST_list.add( + new ConditionBoolean(true)); + lieu_postWarp_2_description_1_conditions_ET_list.add( + new ConditionEt(lieu_postWarp_2_description_1_conditions_TEST_list)); + + Condition lieu_postWarp_2_description_1_condition = new Condition( + lieu_postWarp_2_description_1_conditions_ET_list); + + lieu_postWarp_2_descriptions.add( + new Description( + "postWarp description", + lieu_postWarp_2_description_1_condition)); + + List lieu_postWarp_2_personnes = new ArrayList<>(); + List lieu_postWarp_2_objets = new ArrayList<>(); + List lieu_postWarp_2_connaissances = new ArrayList<>(); + + // TODO: utiliser un search dans la liste plutot que de déclarer les objets + Lieu lieu_postWarp = new Lieu( + "postWarp", + lieu_deposable_2_condition, + lieu_depart_2_condition, + lieu_fin_2_condition, + lieu_postWarp_2_personnes, + lieu_postWarp_2_descriptions, + lieu_postWarp_2_objets, + lieu_postWarp_2_connaissances); + + territoire_lieux.add(lieu_postWarp); + List lieu_deposable_3_conditions_ET_list = new ArrayList<>(); + + List lieu_deposable_3_conditions_TEST_list = new ArrayList<>(); + + lieu_deposable_3_conditions_TEST_list.add( + new ConditionBoolean(false)); + lieu_deposable_3_conditions_ET_list.add( + new ConditionEt(lieu_deposable_3_conditions_TEST_list)); + + Condition lieu_deposable_3_condition = new Condition(lieu_deposable_3_conditions_ET_list); + List lieu_depart_3_conditions_ET_list = new ArrayList<>(); + + List lieu_depart_3_conditions_TEST_list = new ArrayList<>(); + + lieu_depart_3_conditions_TEST_list.add( + new ConditionBoolean(false)); + lieu_depart_3_conditions_ET_list.add( + new ConditionEt(lieu_depart_3_conditions_TEST_list)); + + Condition lieu_depart_3_condition = new Condition(lieu_depart_3_conditions_ET_list); + List lieu_fin_3_conditions_ET_list = new ArrayList<>(); + + List lieu_fin_3_conditions_TEST_list = new ArrayList<>(); + + lieu_fin_3_conditions_TEST_list.add( + new ConditionBoolean(true)); + lieu_fin_3_conditions_ET_list.add( + new ConditionEt(lieu_fin_3_conditions_TEST_list)); + + Condition lieu_fin_3_condition = new Condition(lieu_fin_3_conditions_ET_list); + List lieu_END_3_descriptions = new ArrayList<>(); + + List lieu_END_3_description_1_conditions_ET_list = new ArrayList<>(); + + List lieu_END_3_description_1_conditions_TEST_list = new ArrayList<>(); + + lieu_END_3_description_1_conditions_TEST_list.add( + new ConditionBoolean(true)); + lieu_END_3_description_1_conditions_ET_list.add( + new ConditionEt(lieu_END_3_description_1_conditions_TEST_list)); + + Condition lieu_END_3_description_1_condition = new Condition(lieu_END_3_description_1_conditions_ET_list); + + lieu_END_3_descriptions.add( + new Description( + "END description", + lieu_END_3_description_1_condition)); + + List lieu_END_3_personnes = new ArrayList<>(); + List lieu_END_3_objets = new ArrayList<>(); + List lieu_END_3_connaissances = new ArrayList<>(); + + // TODO: utiliser un search dans la liste plutot que de déclarer les objets + Lieu lieu_END = new Lieu( + "END", + lieu_deposable_3_condition, + lieu_depart_3_condition, + lieu_fin_3_condition, + lieu_END_3_personnes, + lieu_END_3_descriptions, + lieu_END_3_objets, + lieu_END_3_connaissances); + + territoire_lieux.add(lieu_END); + + // "Chemins" + + List territoire_chemins = new ArrayList<>(); + List chemin_ouvert_Warp_1_conditions_ET_list = new ArrayList<>(); + + List chemin_ouvert_Warp_1_conditions_TEST_list = new ArrayList<>(); + + chemin_ouvert_Warp_1_conditions_TEST_list.add( + new ConditionObjet( + objet_warpToken, + ">", + 0)); + chemin_ouvert_Warp_1_conditions_ET_list.add( + new ConditionEt(chemin_ouvert_Warp_1_conditions_TEST_list)); + + Condition chemin_ouvert_Warp_1_condition = new Condition(chemin_ouvert_Warp_1_conditions_ET_list); + List chemin_visible_Warp_1_conditions_ET_list = new ArrayList<>(); + + List chemin_visible_Warp_1_conditions_TEST_list = new ArrayList<>(); + + chemin_visible_Warp_1_conditions_TEST_list.add( + new ConditionBoolean(true)); + chemin_visible_Warp_1_conditions_ET_list.add( + new ConditionEt(chemin_visible_Warp_1_conditions_TEST_list)); + + Condition chemin_visible_Warp_1_condition = new Condition(chemin_visible_Warp_1_conditions_ET_list); + List chemin_obligatoire_Warp_1_conditions_ET_list = new ArrayList<>(); + + List chemin_obligatoire_Warp_1_conditions_TEST_list = new ArrayList<>(); + + chemin_obligatoire_Warp_1_conditions_TEST_list.add( + new ConditionBoolean(false)); + chemin_obligatoire_Warp_1_conditions_ET_list.add( + new ConditionEt(chemin_obligatoire_Warp_1_conditions_TEST_list)); + + Condition chemin_obligatoire_Warp_1_condition = new Condition(chemin_obligatoire_Warp_1_conditions_ET_list); + List chemin_Warp_1_descriptions = new ArrayList<>(); + + List chemin_Warp_1_description_1_conditions_ET_list = new ArrayList<>(); + + List chemin_Warp_1_description_1_conditions_TEST_list = new ArrayList<>(); + + chemin_Warp_1_description_1_conditions_TEST_list.add( + new ConditionObjet( + objet_warpToken, + "==", + 0)); + chemin_Warp_1_description_1_conditions_ET_list.add( + new ConditionEt(chemin_Warp_1_description_1_conditions_TEST_list)); + + Condition chemin_Warp_1_description_1_condition = new Condition(chemin_Warp_1_description_1_conditions_ET_list); + + chemin_Warp_1_descriptions.add( + new Description( + "Warp description (need token)", + chemin_Warp_1_description_1_condition)); + List chemin_Warp_1_description_2_conditions_ET_list = new ArrayList<>(); + + List chemin_Warp_1_description_2_conditions_TEST_list = new ArrayList<>(); + + chemin_Warp_1_description_2_conditions_TEST_list.add( + new ConditionObjet( + objet_warpToken, + "==", + 1)); + chemin_Warp_1_description_2_conditions_ET_list.add( + new ConditionEt(chemin_Warp_1_description_2_conditions_TEST_list)); + + Condition chemin_Warp_1_description_2_condition = new Condition(chemin_Warp_1_description_2_conditions_ET_list); + + chemin_Warp_1_descriptions.add( + new Description( + "Warp description (token acquired)", + chemin_Warp_1_description_2_condition)); + + List chemin_Warp_1_connaissances = new ArrayList<>(); + List chemin_Warp_1_objets_recus = new ArrayList<>(); + List chemin_Warp_1_objets_conso = new ArrayList<>(); + chemin_Warp_1_objets_conso.add(objet_warpToken); + + Chemin chemins_Warp = new Chemin( + "Warp", + lieu_preWarp, + lieu_postWarp, + chemin_ouvert_Warp_1_condition, + chemin_visible_Warp_1_condition, + chemin_obligatoire_Warp_1_condition, + chemin_Warp_1_connaissances, + chemin_Warp_1_objets_recus, + chemin_Warp_1_objets_conso, + chemin_Warp_1_descriptions); + + territoire_chemins.add(chemins_Warp); + List chemin_ouvert_EndChemin_2_conditions_ET_list = new ArrayList<>(); + + List chemin_ouvert_EndChemin_2_conditions_TEST_list = new ArrayList<>(); + + chemin_ouvert_EndChemin_2_conditions_TEST_list.add( + new ConditionBoolean(true)); + chemin_ouvert_EndChemin_2_conditions_ET_list.add( + new ConditionEt(chemin_ouvert_EndChemin_2_conditions_TEST_list)); + + Condition chemin_ouvert_EndChemin_2_condition = new Condition(chemin_ouvert_EndChemin_2_conditions_ET_list); + List chemin_visible_EndChemin_2_conditions_ET_list = new ArrayList<>(); + + List chemin_visible_EndChemin_2_conditions_TEST_list = new ArrayList<>(); + + chemin_visible_EndChemin_2_conditions_TEST_list.add( + new ConditionBoolean(true)); + chemin_visible_EndChemin_2_conditions_ET_list.add( + new ConditionEt(chemin_visible_EndChemin_2_conditions_TEST_list)); + + Condition chemin_visible_EndChemin_2_condition = new Condition(chemin_visible_EndChemin_2_conditions_ET_list); + List chemin_obligatoire_EndChemin_2_conditions_ET_list = new ArrayList<>(); + + List chemin_obligatoire_EndChemin_2_conditions_TEST_list = new ArrayList<>(); + + chemin_obligatoire_EndChemin_2_conditions_TEST_list.add( + new ConditionBoolean(false)); + chemin_obligatoire_EndChemin_2_conditions_ET_list.add( + new ConditionEt(chemin_obligatoire_EndChemin_2_conditions_TEST_list)); + + Condition chemin_obligatoire_EndChemin_2_condition = new Condition( + chemin_obligatoire_EndChemin_2_conditions_ET_list); + List chemin_EndChemin_2_descriptions = new ArrayList<>(); + + List chemin_EndChemin_2_description_1_conditions_ET_list = new ArrayList<>(); + + List chemin_EndChemin_2_description_1_conditions_TEST_list = new ArrayList<>(); + + chemin_EndChemin_2_description_1_conditions_TEST_list.add( + new ConditionBoolean(true)); + chemin_EndChemin_2_description_1_conditions_ET_list.add( + new ConditionEt(chemin_EndChemin_2_description_1_conditions_TEST_list)); + + Condition chemin_EndChemin_2_description_1_condition = new Condition( + chemin_EndChemin_2_description_1_conditions_ET_list); + + chemin_EndChemin_2_descriptions.add( + new Description( + "END description", + chemin_EndChemin_2_description_1_condition)); + + List chemin_EndChemin_2_connaissances = new ArrayList<>(); + List chemin_EndChemin_2_objets_recus = new ArrayList<>(); + List chemin_EndChemin_2_objets_conso = new ArrayList<>(); + + Chemin chemins_EndChemin = new Chemin( + "EndChemin", + lieu_postWarp, + lieu_END, + chemin_ouvert_EndChemin_2_condition, + chemin_visible_EndChemin_2_condition, + chemin_obligatoire_EndChemin_2_condition, + chemin_EndChemin_2_connaissances, + chemin_EndChemin_2_objets_recus, + chemin_EndChemin_2_objets_conso, + chemin_EndChemin_2_descriptions); + + territoire_chemins.add(chemins_EndChemin); + + Territoire jeu_territoire = new Territoire(territoire_lieux, territoire_chemins); + + Jeu ze_GAME = new Jeu( + jeu_territoire, + jeu_objets, + jeu_connaissances, + jeu_personnes, + jeu_transformations); + + ze_GAME.jouer(); + + } +} diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/Tamerelapute.java b/runtime-workspace/fr.n7.game.examples/src-gen/Tamerelapute.java new file mode 100644 index 0000000..f19adf3 --- /dev/null +++ b/runtime-workspace/fr.n7.game.examples/src-gen/Tamerelapute.java @@ -0,0 +1,42 @@ +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import static java.util.Map.entry; + +public class Tamerelapute { + public static void main(String[] args) { + + Condition test = new Condition( + List.of( + List.of( + new ConditionBoolean(false), + new ConditionBoolean(true)), + List.of( + new ConditionBoolean(true)))); + + System.out.println(test.evaluer()); + + Map test2 = Map.ofEntries( + entry( + "warpToken", + new Objet( + "warpToken", + 1, + test, + List.of(new Description("test", "prout", test)))), + entry( + "warpToken2", + new Objet( + "warpToken2", + 2, + test, + List.of(new Description("prout", test))))); + + System.out.println(test2); + + System.out.println(test2.get("warpToken")); + + } +} diff --git a/runtime-workspace/fr.n7.game.examples/src-gen/Transformation.java b/runtime-workspace/fr.n7.game.examples/src-gen/Transformation.java index e4b2aeb..3caceb0 100644 --- a/runtime-workspace/fr.n7.game.examples/src-gen/Transformation.java +++ b/runtime-workspace/fr.n7.game.examples/src-gen/Transformation.java @@ -1,14 +1,17 @@ import java.util.List; public class Transformation { + String nom; Condition possible; List objetsSources; List objetsResultats; public Transformation( + String nom, Condition possible, List objetsSources, List objetsResultats) { + this.nom = nom; this.possible = possible; this.objetsSources = objetsSources; this.objetsResultats = objetsResultats; diff --git a/runtime-workspace/fr.n7.game.examples/test2.game b/runtime-workspace/fr.n7.game.examples/test2.game index 177d774..804b208 100644 --- a/runtime-workspace/fr.n7.game.examples/test2.game +++ b/runtime-workspace/fr.n7.game.examples/test2.game @@ -15,7 +15,6 @@ Explorateur: taille: 1 connaissances: objets: - - warpToken Personnes: @@ -61,7 +60,7 @@ Territoire: - Warp: lieu_in: preWarp lieu_out: postWarp - ouvert: true + ouvert: warpToken > 0 visible: true obligatoire: false connaissances: @@ -70,10 +69,10 @@ Territoire: - warpToken descriptions: - DescriptionToken: - texte: "preWarp description (need token)" + texte: "Warp description (need token)" condition: warpToken == 0 - DescriptionNoToken: - texte: "preWarp description (token acquired)" + texte: "Warp description (token acquired)" condition: warpToken == 1 - EndChemin: diff --git a/runtime-workspace/fr.n7.game.examples/test3.game b/runtime-workspace/fr.n7.game.examples/test3.game new file mode 100644 index 0000000..e0d42a9 --- /dev/null +++ b/runtime-workspace/fr.n7.game.examples/test3.game @@ -0,0 +1,140 @@ +Objets: + - warpToken: + taille: 1 + visible: true && true && true || true && false || false + descriptions: + - Description1: + texte: "warpToken description" + condition: true + + - warpTicket: + taille: 1 + visible: true + descriptions: + - Description1: + texte: "warpTicket description" + condition: true + + - warpReceipt: + taille: 1 + visible: true + descriptions: + - Description1: + texte: "warpReceipt description" + condition: true + +Transformations: + +Connaissances: + +Explorateur: + taille: 5 + connaissances: + objets: + - warpTicket +Personnes: + - cashier: + visible: true + obligatoire: false + interactions: + - Parler: + visible: true + connaissances: + objets_recus: + objets_conso: + actions: + - Acheter: + visible: warpTicket == 1 + fin_interaction: true + connaissances: + objets_recus: + - warpToken + - warpReceipt + objets_conso: + - warpTicket + descriptions: + - Description1: + texte: "Acheter un ticket" + condition: true + - Quitter: + visible: true + fin_interaction: true + connaissances: + objets_recus: + objets_conso: + descriptions: + - Description1: + texte: "Quitter" + condition: true + +Territoire: + Lieux: + - preWarp: + deposable: false + depart: true + fin: false + personnes: + - cashier + descriptions: + - Description1: + texte: "preWarp description" + condition: true + objets: + connaissances: + + - postWarp: + deposable: true + depart: false + fin: false + personnes: + descriptions: + - Description1: + texte: "postWarp description" + condition: true + objets: + connaissances: + + - END: + deposable: false + depart: false + fin: true + personnes: + descriptions: + - Description1: + texte: "END description" + condition: true + objets: + connaissances: + + Chemins: + - Warp: + lieu_in: preWarp + lieu_out: postWarp + ouvert: warpToken > 0 + visible: true + obligatoire: false + connaissances: + objets_recus: + objets_conso: + - warpToken + descriptions: + - DescriptionToken: + texte: "Warp description (need token)" + condition: warpToken == 0 + - DescriptionNoToken: + texte: "Warp description (token acquired)" + condition: warpToken == 1 + + - EndChemin: + lieu_in: postWarp + lieu_out: END + ouvert: true + visible: true + obligatoire: false + connaissances: + objets_recus: + objets_conso: + descriptions: + - DescriptionToken: + texte: "END description" + condition: true diff --git a/workspace/fr.n7.game.toPrototype/bin/fr/n7/game/toPrototype/main/toPrototype.emtl b/workspace/fr.n7.game.toPrototype/bin/fr/n7/game/toPrototype/main/toPrototype.emtl index af4b58a..93d73d8 100644 --- a/workspace/fr.n7.game.toPrototype/bin/fr/n7/game/toPrototype/main/toPrototype.emtl +++ b/workspace/fr.n7.game.toPrototype/bin/fr/n7/game/toPrototype/main/toPrototype.emtl @@ -6,7 +6,7 @@ - + @@ -14,32 +14,33 @@ - + - - + + - - - - - - - - - - - - - - - - - - - + + + + - + + + + + + + + + + + + + + + + + @@ -49,69 +50,39 @@ - - - - + + + + + + + - - - - - - - + - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -122,33 +93,26 @@ - - + + - - + + - - - - - - - - - - - - - - - - - - - + + + + - + + + + + + + + + @@ -158,61 +122,39 @@ - - - - + + + + + + + - - - - - - - + - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -223,10 +165,26 @@ - - + + - + + + + + + + + + + + + + + + + + @@ -236,40 +194,40 @@ - - - - - - - - - - - - - - - - - - + - - - - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + @@ -279,26 +237,39 @@ - - - - - + - - - - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + @@ -308,19 +279,28 @@ - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + @@ -331,35 +311,22 @@ - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - + + + - + - + @@ -367,7 +334,32 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -382,22 +374,76 @@ - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -407,37 +453,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -447,37 +464,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -486,97 +474,29 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - + + + + + + - + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -587,10 +507,26 @@ - - + + - + + + + + + + + + + + + + + + + + @@ -600,21 +536,8 @@ - - - - - - - - - - - - - - + @@ -624,21 +547,8 @@ - - - - - - - - - - - - - - + @@ -648,94 +558,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + @@ -746,41 +601,48 @@ - - + + - - - - - - - - - - - - - - + - - - - - - - + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + @@ -791,41 +653,38 @@ - - - - - - - - - - - - - + - + - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + @@ -836,91 +695,32 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -935,240 +735,127 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - + + + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + - - - - - - - - - - - - - + @@ -1176,196 +863,117 @@ - + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + - + - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - - - - - - - - - - - - - - - - - - + + - - - + + - - - - - - - + + + + + + + - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -1379,7 +987,9 @@ - + + + @@ -1392,29 +1002,16 @@ - - - - - + - - - - - + - - - - - - + - + @@ -1424,10 +1021,10 @@ - + - + @@ -1436,32 +1033,36 @@ - + - + - + - - + + + + + + - + - + - + @@ -1475,15 +1076,15 @@ - + - + - + @@ -1492,10 +1093,10 @@ - + - + @@ -1503,39 +1104,43 @@ - + - - + + + + + + - + - + - + - + - + - + - + - + @@ -1544,36 +1149,69 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + - + - - - + + + + + + + + + + + + + + + + + + + + - - - - - + @@ -1584,632 +1222,442 @@ - - - - - - - - - + - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + - - + + + + + + + + + - - - + + + + + + + + + + + + + + + - + + - - - - + - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - + - - - - - + - + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + - - - - - - - - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + - - - - - - - - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + - + - - + + + + + + + + - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - @@ -2221,13 +1669,6 @@ - - - - - - - @@ -2262,9 +1703,6 @@ - - - @@ -2273,9 +1711,6 @@ - - - @@ -2284,9 +1719,6 @@ - - - @@ -2295,9 +1727,6 @@ - - - @@ -2356,27 +1785,42 @@ + + + + + + + + + + + + + + + @@ -2386,6 +1830,21 @@ + + + + + + + + + + + + + + + @@ -2432,12 +1891,6 @@ - - - - - - @@ -2465,12 +1918,6 @@ - - - - - - @@ -2492,6 +1939,9 @@ + + + @@ -2510,9 +1960,6 @@ - - - @@ -2532,10 +1979,25 @@ - + + + + - + + + + + + + + + + + + + @@ -2553,19 +2015,7 @@ - - - - - - - - - - - - - + @@ -2576,27 +2026,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -2648,12 +2077,6 @@ - - - - - - @@ -2675,12 +2098,6 @@ - - - - - - @@ -2699,15 +2116,6 @@ - - - - - - - - - @@ -2726,45 +2134,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2798,6 +2167,9 @@ + + + @@ -2807,9 +2179,6 @@ - - - @@ -2819,15 +2188,6 @@ - - - - - - - - - @@ -2846,15 +2206,6 @@ - - - - - - - - - @@ -2876,57 +2227,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2951,21 +2251,12 @@ - - - - - - - - - @@ -3016,6 +2307,9 @@ + + + @@ -3025,21 +2319,12 @@ - - - - - - - - - @@ -3052,10 +2337,6 @@ - - - - @@ -3087,7 +2368,6 @@ - @@ -3100,18 +2380,6 @@ - - - - - - - - - - - - @@ -3130,15 +2398,6 @@ - - - - - - - - - @@ -3157,15 +2416,6 @@ - - - - - - - - - @@ -3184,42 +2434,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -3233,7 +2447,6 @@ - @@ -3246,15 +2459,6 @@ - - - - - - - - - @@ -3273,15 +2477,6 @@ - - - - - - - - - @@ -3300,15 +2495,6 @@ - - - - - - - - - @@ -3330,33 +2516,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -3367,4423 +2526,3318 @@
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
- -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
+ +
+
+
+ + +
+
+
+ + +
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
- -
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
- -
-
-
- - -
+ +
-
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
-
+ +
+
+
- -
-
+ +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
+ +
- -
-
+ +
+
- -
-
-
+ +
+
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
-
- - -
-
+ +
+
- -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
- -
-
-
- - -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
- -
-
-
- - -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
- -
-
-
+ +
+
+
- -
-
+ +
+
- -
-
-
+ +
+
+
- -
-
+ +
+
+
+ + +
+
- -
-
-
- - -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
-
- - -
-
-
- - -
-
+ +
+
- -
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
- -
-
-
- - -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
-
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - +
-
-
+
+
- -
-
-
+ +
+
+
- -
-
-
- - -
-
+ +
+
- -
-
+ +
+
- -
-
-
+ +
+
+
- -
-
-
+ +
+
+
- -
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
- -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
- -
-
-
- - -
-
+ +
+
- -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
-
- - -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
-
+ +
+
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
- -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
- -
-
-
- - -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
- -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
- -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
-
- - -
-
+ +
+
- -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
- -
-
-
- - -
-
+ +
+
- -
-
+ +
+
- -
-
-
- - -
-
+ +
+
- -
-
-
+ +
+
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
+ +
- -
-
-
+ +
+
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
-
+ +
+
+
- + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ +
- +
- +
- -
-
-
+ +
+
+
- -
-
-
+ +
+
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
- -
-
-
+ +
+
+
- -
-
-
+ +
+
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
- -
-
-
+ +
+
+
- -
-
-
+ +
+
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
- -
-
-
+ +
+
+
- -
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+ + +
+
- -
-
+ +
+
- -
-
-
- - +
-
-
+
+
- -
-
-
+ +
+
+
- -
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
- -
-
+ +
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
- -
-
+ +
+
- -
-
-
+ +
+
+
- -
-
-
+ +
+
+
- -
-
-
+ +
+
+
- -
-
-
- - -
-
+ +
+
- -
-
+ +
+
- -
-
-
+ +
+
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
+ +
-
+
- -
-
+ +
+
+
+ + +
+
- -
-
+ +
+
- -
-
-
+ +
+
+
- -
+ +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
- -
-
+ +
+
- -
-
-
+ +
+
+
- -
-
+ +
+
+
+ + +
+
+
+ + +
+
- +
+
+
+ + +
+
+
+ + +
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
+
+ + +
+
- -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
+ +
+
- -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
+ +
+
+
diff --git a/workspace/fr.n7.game.toPrototype/bin/fr/n7/game/toPrototype/main/toPrototype.mtl b/workspace/fr.n7.game.toPrototype/bin/fr/n7/game/toPrototype/main/toPrototype.mtl index 7811424..3d3a382 100644 --- a/workspace/fr.n7.game.toPrototype/bin/fr/n7/game/toPrototype/main/toPrototype.mtl +++ b/workspace/fr.n7.game.toPrototype/bin/fr/n7/game/toPrototype/main/toPrototype.mtl @@ -9,320 +9,281 @@ import java.util.ArrayList; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; +import java.util.Map; +import static java.util.Map.entry; public class Prototype { public static void main(String['['/][']'/] args) { [comment Objets /] // "Objets" - -List jeu_objets = new ArrayList<>(); - -[for (o : Objet | jeu.objets)] - [print_descriptions(o.descriptions, 'objet_' + o.name)/] - [print_condition(o.visible, 'objet_visible_' + o.name)/] - Objet objet_[o.name/] = new Objet( - "[o.name/]", - [o.taille/], - objet_visible_[o.name/]_condition, - objet_[o.name/]_descriptions - ); - jeu_objets.add(objet_[o.name/]); -[/for] +Map jeu_objets = Map.ofEntries( + [for (o : Objet | jeu.objets)] + entry( + "[o.name/]", + new Objet( + "[o.name/]", + [o.taille/], + [print_condition(o.visible)/], + [print_descriptions(o.descriptions)/] + ) + )[if (i <> jeu.objets->size())],[/if] + [/for] +); [comment Connaissances /] // "Connaissances" - -List jeu_connaissances = new ArrayList<>(); - -[for (c : Connaissance | jeu.connaissances)] - [print_descriptions(c.descriptions, 'connaissance_' + c.name)/] - [print_condition(c.visible, 'connaissance_visible_' + c.name)/] - Connaissance connaissance_[c.name/] = new Connaissance( - "[c.name/]", - connaissance_visible_[c.name/]_condition, - connaissance_[c.name/]_descriptions - ); - jeu_connaissances.add(connaissance_[c.name/]); -[/for] +Map jeu_connaissances = Map.ofEntries( + [for (c : Connaissance | jeu.connaissances)] + entry( + "[c.name/]", + new Objet( + "[c.name/]", + [print_condition(c.visible)/], + [print_descriptions(c.descriptions)/] + ) + )[if (i <> jeu.connaissances->size())],[/if] + [/for] +); [comment Transformations /] // "Transformations" - -List jeu_transformations = new ArrayList<>(); - -[for (t : Transformation | jeu.transformations)] - [print_condition(t.condition, 'transformation_' + i.toString())/] - - List transformation_[i/]_objets_in = new ArrayList<>(); - [for (c : Objet | t.objetsIn)] - transformation_[i/]_objets_in.add(objet_[c.name/]); - [/for] - List transformation_[i/]_objets_out = new ArrayList<>(); - [for (c : Objet | t.objetsOut)] - transformation_[i/]_objets_out.add(objet_[c.name/]); - [/for] - - jeu_transformations.add( +Map jeu_transformations = Map.ofEntries( + [for (t : Transformation | jeu.transformations)] + entry( + "[t.name/]", new Transformation( - transformation_[i/]_condition, - transformation_[i/]_objets_in, - transformation_[i/]_objets_out + "[t.name/]", + [print_condition(t.condition)/], + List.of( + [for (o : Objet | t.objetsIn)] + jeu_connaissances.get("[o.name/]")[if (i <> t.objetsIn->size())],[/if] + [/for] + ), + List.of( + [for (o : Objet | t.objetsOut)] + jeu_connaissances.get("[o.name/]")[if (i <> t.objetsOut->size())],[/if] + [/for] + ) ) - ); -[/for] + )[if (i <> jeu.transformations->size())],[/if] + [/for] +); [comment Explorateur /] // "Explorateur" - -List explorateur_inventaire = new ArrayList<>(); -[for (o : Objet | jeu.explorateur.objets)] - explorateur_inventaire.add(objet_[o.name/]); -[/for] - -List explorateur_connaissances = new ArrayList<>(); -[for (c : Connaissance | jeu.explorateur.connaissances)] - explorateur_inventaire.add(connaissance_[c.name/]); -[/for] - Jeu.explorateur = new Explorateur( [jeu.explorateur.tailleInventaire/], - explorateur_connaissances, - explorateur_inventaire + List.of( + [for (c : Connaissance | jeu.explorateur.connaissances)] + jeu_connaissances.get("[c.name/]")[if (i <> jeu.explorateur.connaissances->size())],[/if] + [/for] + ), + List.of( + [for (o : Objet | jeu.explorateur.objets)] + jeu_objets.get("[o.name/]")[if (i <> jeu.explorateur.objets->size())],[/if] + [/for] + ) ); [comment Personnes /] // "Personnes" - -List jeu_personnes = new ArrayList<>(); -[for (p : Personne | jeu.personnes)] - - [print_condition(p.visible, 'personne_visible_' + p.name + '_' + i.toString())/] - [print_condition(p.obligatoire, 'personne_obligatoire_' + p.name + '_' + i.toString())/] - [print_interactions(p.interactions, 'personne_' + p.name + '_' + i.toString())/] - - Personne personne_[p.name/] = new Personne( +Map jeu_personnes = Map.ofEntries( + [for (p : Personne | jeu.personnes)] + entry( "[p.name/]", - personne_visible_[p.name/]_[i/]_condition, - personne_obligatoire_[p.name/]_[i/]_condition, - personne_[p.name/]_[i/]_interactions - ); - - jeu_personnes.add(personne_[p.name/]); -[/for] + new Personne( + "[p.name/]", + [print_condition(p.visible)/], + [print_condition(p.obligatoire)/], + [print_interactions(p.interactions)/] + ) + )[if (i <> jeu.personnes->size())],[/if] + [/for] +); [comment Lieux /] // "Lieux" - -List territoire_lieux = new ArrayList<>(); -[for (l : Lieu | jeu.territoire.lieux)] - [print_condition(l.deposable, 'lieu_deposable_' + i.toString())/] - [print_condition(l.depart, 'lieu_depart_' + i.toString())/] - [print_condition(l.fin, 'lieu_fin_' + i.toString())/] - [print_descriptions(l.descriptions, 'lieu_' + l.name + '_' + i.toString())/] - - List lieu_[l.name/]_[i/]_personnes = new ArrayList<>(); - [for (p : Personne | l.personnes)] - lieu_[l.name/]_[i/]_personnes.add(personne_[p.name/]); - [/for] - List lieu_[l.name/]_[i/]_objets = new ArrayList<>(); - [for (o : Objet | l.objets)] - lieu_[l.name/]_[i/]_objets.add(objet_[o.name/]); - [/for] - List lieu_[l.name/]_[i/]_connaissances = new ArrayList<>(); - [for (c : Connaissance | l.connaissances)] - lieu_[l.name/]_[i/]_connaissances.add(connaissance_[c.name/]); - [/for] - - // TODO: utiliser un search dans la liste plutot que de déclarer les objets - Lieu lieu_[l.name/] = new Lieu( +Map territoire_lieux = Map.ofEntries( + [for (l : Lieu | jeu.territoire.lieux)] + entry( "[l.name/]", - lieu_deposable_[i/]_condition, - lieu_depart_[i/]_condition, - lieu_fin_[i/]_condition, - lieu_[l.name/]_[i/]_personnes, - lieu_[l.name/]_[i/]_descriptions, - lieu_[l.name/]_[i/]_objets, - lieu_[l.name/]_[i/]_connaissances - ); - - territoire_lieux.add(lieu_[l.name/]); -[/for] - + new Lieu( + "[l.name/]", + [print_condition(l.deposable)/], + [print_condition(l.depart)/], + [print_condition(l.fin)/], + List.of( + [for (p : Personne | l.personnes)] + jeu_personnes.get("[p.name/]")[if (i <> l.personnes->size())],[/if] + [/for] + ), + [print_descriptions(l.descriptions)/], + List.of( + [for (o : Objet | l.objets)] + jeu_personnes.get("[o.name/]")[if (i <> l.objets->size())],[/if] + [/for] + ), + List.of( + [for (c : Connaissance | l.connaissances)] + jeu_personnes.get("[c.name/]")[if (i <> l.connaissances->size())],[/if] + [/for] + ) + ) + )[if (i <> jeu.territoire.lieux->size())],[/if] + [/for] +); [comment Chemins /] // "Chemins" -List territoire_chemins = new ArrayList<>(); -[for (ch : Chemin | jeu.territoire.chemins)] - [print_condition(ch.ouvert, 'chemin_ouvert_' + ch.name + '_' + i.toString())/] - [print_condition(ch.visible, 'chemin_visible_' + ch.name + '_' + i.toString())/] - [print_condition(ch.obligatoire, 'chemin_obligatoire_' + ch.name + '_' + i.toString())/] - [print_descriptions(ch.descriptions, 'chemin_' + ch.name + '_' + i.toString())/] - - List chemin_[ch.name/]_[i/]_connaissances = new ArrayList<>(); - [for (c : Connaissance | ch.connaissances)] - chemin_[ch.name/]_[i/]_connaissances.add(connaissance_[c.name/]); - [/for] - List chemin_[ch.name/]_[i/]_objets_recus = new ArrayList<>(); - [for (o : Objet | ch.objetsRecus)] - chemin_[ch.name/]_[i/]_objets_recus.add(objet_[o.name/]); - [/for] - List chemin_[ch.name/]_[i/]_objets_conso = new ArrayList<>(); - [for (o : Objet | ch.objetsConso)] - chemin_[ch.name/]_[i/]_objets_conso.add(objet_[o.name/]); +Map territoire_chemins = Map.ofEntries( + [for (c : Chemin | jeu.territoire.chemins)] + entry( + "[c.name/]", + new Chemin( + "[c.name/]", + territoire_lieux.get("[c.lieuIn.name/]"), + territoire_lieux.get("[c.lieuOut.name/]") + [print_condition(c.ouvert)/], + [print_condition(c.visible)/], + [print_condition(c.obligatoire)/], + List.of( + [for (co : Connaissance | c.connaissances)] + jeu_connaissances.get("[co.name/]")[if (i <> c.connaissances->size())],[/if] + [/for] + ), + List.of( + [for (o : Objet | c.objetsRecus)] + jeu_personnes.get("[o.name/]")[if (i <> c.objetsRecus->size())],[/if] + [/for] + ), + List.of( + [for (o : Objet | c.objetsConso)] + jeu_personnes.get("[o.name/]")[if (i <> c.objetsConso->size())],[/if] + [/for] + ), + [print_descriptions(c.descriptions)/] + ) + )[if (i <> jeu.territoire.lieux->size())],[/if] [/for] +); - Chemin chemins_[ch.name/] = new Chemin( - "[ch.name/]", - lieu_[ch.lieuIn.name/], - lieu_[ch.lieuOut.name/], - chemin_ouvert_[ch.name/]_[i/]_condition, - chemin_visible_[ch.name/]_[i/]_condition, - chemin_obligatoire_[ch.name/]_[i/]_condition, - chemin_[ch.name/]_[i/]_connaissances, - chemin_[ch.name/]_[i/]_objets_recus, - chemin_[ch.name/]_[i/]_objets_conso, - chemin_[ch.name/]_[i/]_descriptions - ); +[comment Territoire /] +// Territoire +Territoire jeu_territoire = new Territoire(territoire_lieux, territoire_chemins); - territoire_chemins.add(chemins_[ch.name/]); -[/for] +[comment Jeu/] +// Jeu +Jeu ze_GAME = new Jeu( + jeu_territoire, + jeu_objets, + jeu_connaissances, + jeu_personnes, + jeu_transformations +); - Territoire jeu_territoire = new Territoire(territoire_lieux, territoire_chemins); - - Jeu ze_GAME = new Jeu( - jeu_territoire, - jeu_objets, - jeu_connaissances, - jeu_personnes, - jeu_transformations - ); - - ze_GAME.jouer(); +ze_GAME.jouer(); } } [/file] [/template] -[template public print_condition(c : Condition, name: String) post (trim()) ] -List [name/]_conditions_ET_list = new ArrayList<>(); - -[for (cET : ConditionEt | c.condition)] -List [name/]_conditions_TEST_list = new ArrayList<>(); - - [for (cTEST : ConditionTest | cET.conditionTest)] - [name/]_conditions_TEST_list.add( - [if (cTEST.oclIsKindOf(ConditionBoolean))] - [let cBOOL : ConditionBoolean = cTEST.oclAsType(ConditionBoolean)] - new ConditionBoolean([cBOOL.valeur/]) - [/let] - [elseif (cTEST.oclIsKindOf(ConditionConnaissance))] - [let cCONN : ConditionConnaissance = cTEST.oclAsType(ConditionConnaissance)] - new ConditionConnaissance( - connaissance_[cCONN.connaissance/], - [if (cCONN.negation = '!')]true[else]false[/if] - ) - [/let] - [elseif (cTEST.oclIsKindOf(ConditionObjet))] - [let cOBJET : ConditionObjet = cTEST.oclAsType(ConditionObjet)] - new ConditionObjet( - objet_[cOBJET.objet/], - "[cOBJET.comparateur/]", - [cOBJET.nombre/] - ) - [/let] - [/if] - ); - [/for] - [name/]_conditions_ET_list.add( - new ConditionEt([name/]_conditions_TEST_list) - ); -[/for] - -Condition [name/]_condition = new Condition([name/]_conditions_ET_list); -[/template] - -[template public print_descriptions(ds : OrderedSet(Description), name: String) post (trim()) ] -List [name/]_descriptions = new ArrayList<>(); - -[for (d : Description | ds)] - [print_condition(d.condition, name + '_description_' + i.toString())/] - - [name/]_descriptions.add( - new Description( - "[d.texte/]", - [name/]_description_[i/]_condition - ) - ); -[/for] -[/template] - -[template public print_actions(as : OrderedSet(Action), name: String) post (trim()) ] -List [name/]_actions = new ArrayList<>(); - -[for (a : Action | as)] - [print_condition(a.visible, name + '_action_visible_' + i.toString())/] - [print_condition(a.finInteraction, name + '_action_fin_' + i.toString())/] - [print_descriptions(a.descriptions, name + '_action_' + i.toString())/] - - List [name/]_action_[i/]_connaissances = new ArrayList<>(); - [for (c : Connaissance | a.connaissances)] - [name/]_action_[i/]_connaissances.add(connaissance_[c.name/]); - [/for] - List [name/]_action_[i/]_objets_conso = new ArrayList<>(); - [let test : String = name + '_action_' + i + '_objets_conso'] // TODO: OMG C DÉGUEULASSE -> LE FAIRE PARTOUT - [for (c : Objet | a.objetsConso)] - [test/].add(objet_[c.name/]); +[template public print_condition(c : Condition) post (trim()) ] +new Condition( + List.of( + [for (cET : ConditionEt | c.condition)] + List.of( + [for (cTEST : ConditionTest | cET.conditionTest)] + [if (cTEST.oclIsKindOf(ConditionBoolean))] + [let cBOOL : ConditionBoolean = cTEST.oclAsType(ConditionBoolean)] + new ConditionBoolean([cBOOL.valeur/]) + [/let] + [elseif (cTEST.oclIsKindOf(ConditionConnaissance))] + [let cCONN : ConditionConnaissance = cTEST.oclAsType(ConditionConnaissance)] + new ConditionConnaissance( + connaissance_[cCONN.connaissance.name/], + [if (cCONN.negation = '!')]true[else]false[/if] + ) + [/let] + [elseif (cTEST.oclIsKindOf(ConditionObjet))] + [let cOBJET : ConditionObjet = cTEST.oclAsType(ConditionObjet)] + new ConditionObjet( + objet_[cOBJET.objet.name/], + "[cOBJET.comparateur/]", + [cOBJET.nombre/] + ) + [/let] + [/if][if (i < cET.conditionTest->size())],[/if] + [/for] + )[if (i < c.condition->size())],[/if] [/for] - [/let] - List [name/]_action_[i/]_objets_recus = new ArrayList<>(); - [for (c : Objet | a.objetsRecus)] - [name/]_action_[i/]_objets_recus.add(objet_[c.name/]); - [/for] - - [name/]_actions.add( - new Action( - [name/]_action_visible_[i/]_condition, - [name/]_action_fin_[i/]_condition, - [name/]_action_[i/]_connaissances, - [name/]_action_[i/]_objets_recus, - [name/]_action_[i/]_objets_conso, - [name/]_action_[i/]_descriptions - ) - ); -[/for] + ) +) [/template] -[template public print_interactions(is: OrderedSet(Interaction), name: String)] -List [name/]_interactions = new ArrayList<>(); +[template public print_descriptions(ds : OrderedSet(Description)) post (trim()) ] +List.of( + [for (d : Description | ds)] + new Description( + "[d.name/]" + "[d.texte/]", + [print_condition(d.condition)/] + )[if (i < ds->size())],[/if] + [/for] +) +[/template] -[for (it : Interaction | is)] - [print_condition(it.visible, name + '_interaction_visible_' + i.toString())/] - [print_actions(it.actions, name + '_interaction_' + i.toString())/] +[template public print_actions(as : OrderedSet(Action)) post (trim()) ] +List.of( + [for (a : Action | as)] + new Action( + [print_condition(a.visible)/], + [print_condition(a.finInteraction)/], + List.of( + [for (co : Connaissance | a.connaissances)] + jeu_connaissances.get("[co.name/]")[if (i <> a.connaissances->size())],[/if] + [/for] + ), + List.of( + [for (o : Objet | a.objetsRecus)] + jeu_personnes.get("[o.name/]")[if (i <> a.objetsRecus->size())],[/if] + [/for] + ), + List.of( + [for (o : Objet | a.objetsConso)] + jeu_personnes.get("[o.name/]")[if (i <> a.objetsConso->size())],[/if] + [/for] + ), + )[if (i < as->size())],[/if] + [/for] +) +[/template] - List [name/]_interaction_[i/]_connaissances = new ArrayList<>(); - [for (c : Connaissance | it.connaissances)] - [name/]_interaction_[i/]_connaissances.add(connaissance_[c.name/]); +[template public print_interactions(is: OrderedSet(Interaction))] +List.of( + [for (it : Interaction | is)] + new Interaction( + "[it.name/]" + [print_condition(it.visible)/], + List.of( + [for (co : Connaissance | it.connaissances)] + jeu_connaissances.get("[co.name/]")[if (i <> it.connaissances->size())],[/if] + [/for] + ), + List.of( + [for (o : Objet | it.objetsConso)] + jeu_personnes.get("[o.name/]")[if (i <> it.objetsConso->size())],[/if] + [/for] + ), // TODO: inverser recu et conso + List.of( + [for (o : Objet | it.objetsRecus)] + jeu_personnes.get("[o.name/]")[if (i <> it.objetsRecus->size())],[/if] + [/for] + ), + [print_actions(it.actions)/] + )[if (i < is->size())],[/if] [/for] - List [name/]_interaction_[i/]_objets_conso = new ArrayList<>(); - [for (c : Objet | it.objetsConso)] - [name/]_interaction_[i/]_objets_conso.add(objet_[c.name/]); - [/for] - List [name/]_interaction_[i/]_objets_recus = new ArrayList<>(); - [for (c : Objet | it.objetsRecus)] - [name/]_interaction_[i/]_objets_recus.add(objet_[c.name/]); - [/for] - - [name/]_interactions.add( - new Interaction( - [name/]_interaction_visible_[i/]_condition, - [name/]_interaction_[i/]_connaissances, - [name/]_interaction_[i/]_objets_conso, - [name/]_interaction_[i/]_objets_recus, - [name/]_interaction_[i/]_actions - ) - ); -[/for] +) [/template] \ No newline at end of file diff --git a/workspace/fr.n7.game.toPrototype/src/fr/n7/game/toPrototype/main/toPrototype.mtl b/workspace/fr.n7.game.toPrototype/src/fr/n7/game/toPrototype/main/toPrototype.mtl index 7811424..3d3a382 100644 --- a/workspace/fr.n7.game.toPrototype/src/fr/n7/game/toPrototype/main/toPrototype.mtl +++ b/workspace/fr.n7.game.toPrototype/src/fr/n7/game/toPrototype/main/toPrototype.mtl @@ -9,320 +9,281 @@ import java.util.ArrayList; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; +import java.util.Map; +import static java.util.Map.entry; public class Prototype { public static void main(String['['/][']'/] args) { [comment Objets /] // "Objets" - -List jeu_objets = new ArrayList<>(); - -[for (o : Objet | jeu.objets)] - [print_descriptions(o.descriptions, 'objet_' + o.name)/] - [print_condition(o.visible, 'objet_visible_' + o.name)/] - Objet objet_[o.name/] = new Objet( - "[o.name/]", - [o.taille/], - objet_visible_[o.name/]_condition, - objet_[o.name/]_descriptions - ); - jeu_objets.add(objet_[o.name/]); -[/for] +Map jeu_objets = Map.ofEntries( + [for (o : Objet | jeu.objets)] + entry( + "[o.name/]", + new Objet( + "[o.name/]", + [o.taille/], + [print_condition(o.visible)/], + [print_descriptions(o.descriptions)/] + ) + )[if (i <> jeu.objets->size())],[/if] + [/for] +); [comment Connaissances /] // "Connaissances" - -List jeu_connaissances = new ArrayList<>(); - -[for (c : Connaissance | jeu.connaissances)] - [print_descriptions(c.descriptions, 'connaissance_' + c.name)/] - [print_condition(c.visible, 'connaissance_visible_' + c.name)/] - Connaissance connaissance_[c.name/] = new Connaissance( - "[c.name/]", - connaissance_visible_[c.name/]_condition, - connaissance_[c.name/]_descriptions - ); - jeu_connaissances.add(connaissance_[c.name/]); -[/for] +Map jeu_connaissances = Map.ofEntries( + [for (c : Connaissance | jeu.connaissances)] + entry( + "[c.name/]", + new Objet( + "[c.name/]", + [print_condition(c.visible)/], + [print_descriptions(c.descriptions)/] + ) + )[if (i <> jeu.connaissances->size())],[/if] + [/for] +); [comment Transformations /] // "Transformations" - -List jeu_transformations = new ArrayList<>(); - -[for (t : Transformation | jeu.transformations)] - [print_condition(t.condition, 'transformation_' + i.toString())/] - - List transformation_[i/]_objets_in = new ArrayList<>(); - [for (c : Objet | t.objetsIn)] - transformation_[i/]_objets_in.add(objet_[c.name/]); - [/for] - List transformation_[i/]_objets_out = new ArrayList<>(); - [for (c : Objet | t.objetsOut)] - transformation_[i/]_objets_out.add(objet_[c.name/]); - [/for] - - jeu_transformations.add( +Map jeu_transformations = Map.ofEntries( + [for (t : Transformation | jeu.transformations)] + entry( + "[t.name/]", new Transformation( - transformation_[i/]_condition, - transformation_[i/]_objets_in, - transformation_[i/]_objets_out + "[t.name/]", + [print_condition(t.condition)/], + List.of( + [for (o : Objet | t.objetsIn)] + jeu_connaissances.get("[o.name/]")[if (i <> t.objetsIn->size())],[/if] + [/for] + ), + List.of( + [for (o : Objet | t.objetsOut)] + jeu_connaissances.get("[o.name/]")[if (i <> t.objetsOut->size())],[/if] + [/for] + ) ) - ); -[/for] + )[if (i <> jeu.transformations->size())],[/if] + [/for] +); [comment Explorateur /] // "Explorateur" - -List explorateur_inventaire = new ArrayList<>(); -[for (o : Objet | jeu.explorateur.objets)] - explorateur_inventaire.add(objet_[o.name/]); -[/for] - -List explorateur_connaissances = new ArrayList<>(); -[for (c : Connaissance | jeu.explorateur.connaissances)] - explorateur_inventaire.add(connaissance_[c.name/]); -[/for] - Jeu.explorateur = new Explorateur( [jeu.explorateur.tailleInventaire/], - explorateur_connaissances, - explorateur_inventaire + List.of( + [for (c : Connaissance | jeu.explorateur.connaissances)] + jeu_connaissances.get("[c.name/]")[if (i <> jeu.explorateur.connaissances->size())],[/if] + [/for] + ), + List.of( + [for (o : Objet | jeu.explorateur.objets)] + jeu_objets.get("[o.name/]")[if (i <> jeu.explorateur.objets->size())],[/if] + [/for] + ) ); [comment Personnes /] // "Personnes" - -List jeu_personnes = new ArrayList<>(); -[for (p : Personne | jeu.personnes)] - - [print_condition(p.visible, 'personne_visible_' + p.name + '_' + i.toString())/] - [print_condition(p.obligatoire, 'personne_obligatoire_' + p.name + '_' + i.toString())/] - [print_interactions(p.interactions, 'personne_' + p.name + '_' + i.toString())/] - - Personne personne_[p.name/] = new Personne( +Map jeu_personnes = Map.ofEntries( + [for (p : Personne | jeu.personnes)] + entry( "[p.name/]", - personne_visible_[p.name/]_[i/]_condition, - personne_obligatoire_[p.name/]_[i/]_condition, - personne_[p.name/]_[i/]_interactions - ); - - jeu_personnes.add(personne_[p.name/]); -[/for] + new Personne( + "[p.name/]", + [print_condition(p.visible)/], + [print_condition(p.obligatoire)/], + [print_interactions(p.interactions)/] + ) + )[if (i <> jeu.personnes->size())],[/if] + [/for] +); [comment Lieux /] // "Lieux" - -List territoire_lieux = new ArrayList<>(); -[for (l : Lieu | jeu.territoire.lieux)] - [print_condition(l.deposable, 'lieu_deposable_' + i.toString())/] - [print_condition(l.depart, 'lieu_depart_' + i.toString())/] - [print_condition(l.fin, 'lieu_fin_' + i.toString())/] - [print_descriptions(l.descriptions, 'lieu_' + l.name + '_' + i.toString())/] - - List lieu_[l.name/]_[i/]_personnes = new ArrayList<>(); - [for (p : Personne | l.personnes)] - lieu_[l.name/]_[i/]_personnes.add(personne_[p.name/]); - [/for] - List lieu_[l.name/]_[i/]_objets = new ArrayList<>(); - [for (o : Objet | l.objets)] - lieu_[l.name/]_[i/]_objets.add(objet_[o.name/]); - [/for] - List lieu_[l.name/]_[i/]_connaissances = new ArrayList<>(); - [for (c : Connaissance | l.connaissances)] - lieu_[l.name/]_[i/]_connaissances.add(connaissance_[c.name/]); - [/for] - - // TODO: utiliser un search dans la liste plutot que de déclarer les objets - Lieu lieu_[l.name/] = new Lieu( +Map territoire_lieux = Map.ofEntries( + [for (l : Lieu | jeu.territoire.lieux)] + entry( "[l.name/]", - lieu_deposable_[i/]_condition, - lieu_depart_[i/]_condition, - lieu_fin_[i/]_condition, - lieu_[l.name/]_[i/]_personnes, - lieu_[l.name/]_[i/]_descriptions, - lieu_[l.name/]_[i/]_objets, - lieu_[l.name/]_[i/]_connaissances - ); - - territoire_lieux.add(lieu_[l.name/]); -[/for] - + new Lieu( + "[l.name/]", + [print_condition(l.deposable)/], + [print_condition(l.depart)/], + [print_condition(l.fin)/], + List.of( + [for (p : Personne | l.personnes)] + jeu_personnes.get("[p.name/]")[if (i <> l.personnes->size())],[/if] + [/for] + ), + [print_descriptions(l.descriptions)/], + List.of( + [for (o : Objet | l.objets)] + jeu_personnes.get("[o.name/]")[if (i <> l.objets->size())],[/if] + [/for] + ), + List.of( + [for (c : Connaissance | l.connaissances)] + jeu_personnes.get("[c.name/]")[if (i <> l.connaissances->size())],[/if] + [/for] + ) + ) + )[if (i <> jeu.territoire.lieux->size())],[/if] + [/for] +); [comment Chemins /] // "Chemins" -List territoire_chemins = new ArrayList<>(); -[for (ch : Chemin | jeu.territoire.chemins)] - [print_condition(ch.ouvert, 'chemin_ouvert_' + ch.name + '_' + i.toString())/] - [print_condition(ch.visible, 'chemin_visible_' + ch.name + '_' + i.toString())/] - [print_condition(ch.obligatoire, 'chemin_obligatoire_' + ch.name + '_' + i.toString())/] - [print_descriptions(ch.descriptions, 'chemin_' + ch.name + '_' + i.toString())/] - - List chemin_[ch.name/]_[i/]_connaissances = new ArrayList<>(); - [for (c : Connaissance | ch.connaissances)] - chemin_[ch.name/]_[i/]_connaissances.add(connaissance_[c.name/]); - [/for] - List chemin_[ch.name/]_[i/]_objets_recus = new ArrayList<>(); - [for (o : Objet | ch.objetsRecus)] - chemin_[ch.name/]_[i/]_objets_recus.add(objet_[o.name/]); - [/for] - List chemin_[ch.name/]_[i/]_objets_conso = new ArrayList<>(); - [for (o : Objet | ch.objetsConso)] - chemin_[ch.name/]_[i/]_objets_conso.add(objet_[o.name/]); +Map territoire_chemins = Map.ofEntries( + [for (c : Chemin | jeu.territoire.chemins)] + entry( + "[c.name/]", + new Chemin( + "[c.name/]", + territoire_lieux.get("[c.lieuIn.name/]"), + territoire_lieux.get("[c.lieuOut.name/]") + [print_condition(c.ouvert)/], + [print_condition(c.visible)/], + [print_condition(c.obligatoire)/], + List.of( + [for (co : Connaissance | c.connaissances)] + jeu_connaissances.get("[co.name/]")[if (i <> c.connaissances->size())],[/if] + [/for] + ), + List.of( + [for (o : Objet | c.objetsRecus)] + jeu_personnes.get("[o.name/]")[if (i <> c.objetsRecus->size())],[/if] + [/for] + ), + List.of( + [for (o : Objet | c.objetsConso)] + jeu_personnes.get("[o.name/]")[if (i <> c.objetsConso->size())],[/if] + [/for] + ), + [print_descriptions(c.descriptions)/] + ) + )[if (i <> jeu.territoire.lieux->size())],[/if] [/for] +); - Chemin chemins_[ch.name/] = new Chemin( - "[ch.name/]", - lieu_[ch.lieuIn.name/], - lieu_[ch.lieuOut.name/], - chemin_ouvert_[ch.name/]_[i/]_condition, - chemin_visible_[ch.name/]_[i/]_condition, - chemin_obligatoire_[ch.name/]_[i/]_condition, - chemin_[ch.name/]_[i/]_connaissances, - chemin_[ch.name/]_[i/]_objets_recus, - chemin_[ch.name/]_[i/]_objets_conso, - chemin_[ch.name/]_[i/]_descriptions - ); +[comment Territoire /] +// Territoire +Territoire jeu_territoire = new Territoire(territoire_lieux, territoire_chemins); - territoire_chemins.add(chemins_[ch.name/]); -[/for] +[comment Jeu/] +// Jeu +Jeu ze_GAME = new Jeu( + jeu_territoire, + jeu_objets, + jeu_connaissances, + jeu_personnes, + jeu_transformations +); - Territoire jeu_territoire = new Territoire(territoire_lieux, territoire_chemins); - - Jeu ze_GAME = new Jeu( - jeu_territoire, - jeu_objets, - jeu_connaissances, - jeu_personnes, - jeu_transformations - ); - - ze_GAME.jouer(); +ze_GAME.jouer(); } } [/file] [/template] -[template public print_condition(c : Condition, name: String) post (trim()) ] -List [name/]_conditions_ET_list = new ArrayList<>(); - -[for (cET : ConditionEt | c.condition)] -List [name/]_conditions_TEST_list = new ArrayList<>(); - - [for (cTEST : ConditionTest | cET.conditionTest)] - [name/]_conditions_TEST_list.add( - [if (cTEST.oclIsKindOf(ConditionBoolean))] - [let cBOOL : ConditionBoolean = cTEST.oclAsType(ConditionBoolean)] - new ConditionBoolean([cBOOL.valeur/]) - [/let] - [elseif (cTEST.oclIsKindOf(ConditionConnaissance))] - [let cCONN : ConditionConnaissance = cTEST.oclAsType(ConditionConnaissance)] - new ConditionConnaissance( - connaissance_[cCONN.connaissance/], - [if (cCONN.negation = '!')]true[else]false[/if] - ) - [/let] - [elseif (cTEST.oclIsKindOf(ConditionObjet))] - [let cOBJET : ConditionObjet = cTEST.oclAsType(ConditionObjet)] - new ConditionObjet( - objet_[cOBJET.objet/], - "[cOBJET.comparateur/]", - [cOBJET.nombre/] - ) - [/let] - [/if] - ); - [/for] - [name/]_conditions_ET_list.add( - new ConditionEt([name/]_conditions_TEST_list) - ); -[/for] - -Condition [name/]_condition = new Condition([name/]_conditions_ET_list); -[/template] - -[template public print_descriptions(ds : OrderedSet(Description), name: String) post (trim()) ] -List [name/]_descriptions = new ArrayList<>(); - -[for (d : Description | ds)] - [print_condition(d.condition, name + '_description_' + i.toString())/] - - [name/]_descriptions.add( - new Description( - "[d.texte/]", - [name/]_description_[i/]_condition - ) - ); -[/for] -[/template] - -[template public print_actions(as : OrderedSet(Action), name: String) post (trim()) ] -List [name/]_actions = new ArrayList<>(); - -[for (a : Action | as)] - [print_condition(a.visible, name + '_action_visible_' + i.toString())/] - [print_condition(a.finInteraction, name + '_action_fin_' + i.toString())/] - [print_descriptions(a.descriptions, name + '_action_' + i.toString())/] - - List [name/]_action_[i/]_connaissances = new ArrayList<>(); - [for (c : Connaissance | a.connaissances)] - [name/]_action_[i/]_connaissances.add(connaissance_[c.name/]); - [/for] - List [name/]_action_[i/]_objets_conso = new ArrayList<>(); - [let test : String = name + '_action_' + i + '_objets_conso'] // TODO: OMG C DÉGUEULASSE -> LE FAIRE PARTOUT - [for (c : Objet | a.objetsConso)] - [test/].add(objet_[c.name/]); +[template public print_condition(c : Condition) post (trim()) ] +new Condition( + List.of( + [for (cET : ConditionEt | c.condition)] + List.of( + [for (cTEST : ConditionTest | cET.conditionTest)] + [if (cTEST.oclIsKindOf(ConditionBoolean))] + [let cBOOL : ConditionBoolean = cTEST.oclAsType(ConditionBoolean)] + new ConditionBoolean([cBOOL.valeur/]) + [/let] + [elseif (cTEST.oclIsKindOf(ConditionConnaissance))] + [let cCONN : ConditionConnaissance = cTEST.oclAsType(ConditionConnaissance)] + new ConditionConnaissance( + connaissance_[cCONN.connaissance.name/], + [if (cCONN.negation = '!')]true[else]false[/if] + ) + [/let] + [elseif (cTEST.oclIsKindOf(ConditionObjet))] + [let cOBJET : ConditionObjet = cTEST.oclAsType(ConditionObjet)] + new ConditionObjet( + objet_[cOBJET.objet.name/], + "[cOBJET.comparateur/]", + [cOBJET.nombre/] + ) + [/let] + [/if][if (i < cET.conditionTest->size())],[/if] + [/for] + )[if (i < c.condition->size())],[/if] [/for] - [/let] - List [name/]_action_[i/]_objets_recus = new ArrayList<>(); - [for (c : Objet | a.objetsRecus)] - [name/]_action_[i/]_objets_recus.add(objet_[c.name/]); - [/for] - - [name/]_actions.add( - new Action( - [name/]_action_visible_[i/]_condition, - [name/]_action_fin_[i/]_condition, - [name/]_action_[i/]_connaissances, - [name/]_action_[i/]_objets_recus, - [name/]_action_[i/]_objets_conso, - [name/]_action_[i/]_descriptions - ) - ); -[/for] + ) +) [/template] -[template public print_interactions(is: OrderedSet(Interaction), name: String)] -List [name/]_interactions = new ArrayList<>(); +[template public print_descriptions(ds : OrderedSet(Description)) post (trim()) ] +List.of( + [for (d : Description | ds)] + new Description( + "[d.name/]" + "[d.texte/]", + [print_condition(d.condition)/] + )[if (i < ds->size())],[/if] + [/for] +) +[/template] -[for (it : Interaction | is)] - [print_condition(it.visible, name + '_interaction_visible_' + i.toString())/] - [print_actions(it.actions, name + '_interaction_' + i.toString())/] +[template public print_actions(as : OrderedSet(Action)) post (trim()) ] +List.of( + [for (a : Action | as)] + new Action( + [print_condition(a.visible)/], + [print_condition(a.finInteraction)/], + List.of( + [for (co : Connaissance | a.connaissances)] + jeu_connaissances.get("[co.name/]")[if (i <> a.connaissances->size())],[/if] + [/for] + ), + List.of( + [for (o : Objet | a.objetsRecus)] + jeu_personnes.get("[o.name/]")[if (i <> a.objetsRecus->size())],[/if] + [/for] + ), + List.of( + [for (o : Objet | a.objetsConso)] + jeu_personnes.get("[o.name/]")[if (i <> a.objetsConso->size())],[/if] + [/for] + ), + )[if (i < as->size())],[/if] + [/for] +) +[/template] - List [name/]_interaction_[i/]_connaissances = new ArrayList<>(); - [for (c : Connaissance | it.connaissances)] - [name/]_interaction_[i/]_connaissances.add(connaissance_[c.name/]); +[template public print_interactions(is: OrderedSet(Interaction))] +List.of( + [for (it : Interaction | is)] + new Interaction( + "[it.name/]" + [print_condition(it.visible)/], + List.of( + [for (co : Connaissance | it.connaissances)] + jeu_connaissances.get("[co.name/]")[if (i <> it.connaissances->size())],[/if] + [/for] + ), + List.of( + [for (o : Objet | it.objetsConso)] + jeu_personnes.get("[o.name/]")[if (i <> it.objetsConso->size())],[/if] + [/for] + ), // TODO: inverser recu et conso + List.of( + [for (o : Objet | it.objetsRecus)] + jeu_personnes.get("[o.name/]")[if (i <> it.objetsRecus->size())],[/if] + [/for] + ), + [print_actions(it.actions)/] + )[if (i < is->size())],[/if] [/for] - List [name/]_interaction_[i/]_objets_conso = new ArrayList<>(); - [for (c : Objet | it.objetsConso)] - [name/]_interaction_[i/]_objets_conso.add(objet_[c.name/]); - [/for] - List [name/]_interaction_[i/]_objets_recus = new ArrayList<>(); - [for (c : Objet | it.objetsRecus)] - [name/]_interaction_[i/]_objets_recus.add(objet_[c.name/]); - [/for] - - [name/]_interactions.add( - new Interaction( - [name/]_interaction_visible_[i/]_condition, - [name/]_interaction_[i/]_connaissances, - [name/]_interaction_[i/]_objets_conso, - [name/]_interaction_[i/]_objets_recus, - [name/]_interaction_[i/]_actions - ) - ); -[/for] +) [/template] \ No newline at end of file diff --git a/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGame.g b/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGame.g index effa784..d827adb 100644 --- a/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGame.g +++ b/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGame.g @@ -8208,9 +8208,13 @@ rule__ConditionConnaissance__ConnaissanceAssignment_1 } : ( - { before(grammarAccess.getConditionConnaissanceAccess().getConnaissanceIDTerminalRuleCall_1_0()); } - RULE_ID - { after(grammarAccess.getConditionConnaissanceAccess().getConnaissanceIDTerminalRuleCall_1_0()); } + { before(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceCrossReference_1_0()); } + ( + { before(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceIDTerminalRuleCall_1_0_1()); } + RULE_ID + { after(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceIDTerminalRuleCall_1_0_1()); } + ) + { after(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceCrossReference_1_0()); } ) ; finally { @@ -8223,9 +8227,13 @@ rule__ConditionObjet__ObjetAssignment_0 } : ( - { before(grammarAccess.getConditionObjetAccess().getObjetIDTerminalRuleCall_0_0()); } - RULE_ID - { after(grammarAccess.getConditionObjetAccess().getObjetIDTerminalRuleCall_0_0()); } + { before(grammarAccess.getConditionObjetAccess().getObjetObjetCrossReference_0_0()); } + ( + { before(grammarAccess.getConditionObjetAccess().getObjetObjetIDTerminalRuleCall_0_0_1()); } + RULE_ID + { after(grammarAccess.getConditionObjetAccess().getObjetObjetIDTerminalRuleCall_0_0_1()); } + ) + { after(grammarAccess.getConditionObjetAccess().getObjetObjetCrossReference_0_0()); } ) ; finally { diff --git a/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameLexer.java b/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameLexer.java index 69c2e83..74af28c 100644 --- a/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameLexer.java +++ b/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameLexer.java @@ -808,10 +808,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_COMPARATEUR; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8265:18: ( ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) ) - // InternalGame.g:8265:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) + // InternalGame.g:8273:18: ( ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) ) + // InternalGame.g:8273:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) { - // InternalGame.g:8265:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) + // InternalGame.g:8273:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) int alt1=6; switch ( input.LA(1) ) { case '<': @@ -855,21 +855,21 @@ public class InternalGameLexer extends Lexer { switch (alt1) { case 1 : - // InternalGame.g:8265:21: '<' + // InternalGame.g:8273:21: '<' { match('<'); } break; case 2 : - // InternalGame.g:8265:25: '>' + // InternalGame.g:8273:25: '>' { match('>'); } break; case 3 : - // InternalGame.g:8265:29: '==' + // InternalGame.g:8273:29: '==' { match("=="); @@ -877,7 +877,7 @@ public class InternalGameLexer extends Lexer { } break; case 4 : - // InternalGame.g:8265:34: '<=' + // InternalGame.g:8273:34: '<=' { match("<="); @@ -885,7 +885,7 @@ public class InternalGameLexer extends Lexer { } break; case 5 : - // InternalGame.g:8265:39: '>=' + // InternalGame.g:8273:39: '>=' { match(">="); @@ -893,7 +893,7 @@ public class InternalGameLexer extends Lexer { } break; case 6 : - // InternalGame.g:8265:44: '!=' + // InternalGame.g:8273:44: '!=' { match("!="); @@ -919,10 +919,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_BOOLEAN; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8267:14: ( ( 'true' | 'false' ) ) - // InternalGame.g:8267:16: ( 'true' | 'false' ) + // InternalGame.g:8275:14: ( ( 'true' | 'false' ) ) + // InternalGame.g:8275:16: ( 'true' | 'false' ) { - // InternalGame.g:8267:16: ( 'true' | 'false' ) + // InternalGame.g:8275:16: ( 'true' | 'false' ) int alt2=2; int LA2_0 = input.LA(1); @@ -940,7 +940,7 @@ public class InternalGameLexer extends Lexer { } switch (alt2) { case 1 : - // InternalGame.g:8267:17: 'true' + // InternalGame.g:8275:17: 'true' { match("true"); @@ -948,7 +948,7 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:8267:24: 'false' + // InternalGame.g:8275:24: 'false' { match("false"); @@ -974,10 +974,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_ID; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8269:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) - // InternalGame.g:8269:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + // InternalGame.g:8277:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) + // InternalGame.g:8277:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* { - // InternalGame.g:8269:11: ( '^' )? + // InternalGame.g:8277:11: ( '^' )? int alt3=2; int LA3_0 = input.LA(1); @@ -986,7 +986,7 @@ public class InternalGameLexer extends Lexer { } switch (alt3) { case 1 : - // InternalGame.g:8269:11: '^' + // InternalGame.g:8277:11: '^' { match('^'); @@ -1004,7 +1004,7 @@ public class InternalGameLexer extends Lexer { recover(mse); throw mse;} - // InternalGame.g:8269:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + // InternalGame.g:8277:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* loop4: do { int alt4=2; @@ -1053,10 +1053,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_INT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8271:10: ( ( '0' .. '9' )+ ) - // InternalGame.g:8271:12: ( '0' .. '9' )+ + // InternalGame.g:8279:10: ( ( '0' .. '9' )+ ) + // InternalGame.g:8279:12: ( '0' .. '9' )+ { - // InternalGame.g:8271:12: ( '0' .. '9' )+ + // InternalGame.g:8279:12: ( '0' .. '9' )+ int cnt5=0; loop5: do { @@ -1070,7 +1070,7 @@ public class InternalGameLexer extends Lexer { switch (alt5) { case 1 : - // InternalGame.g:8271:13: '0' .. '9' + // InternalGame.g:8279:13: '0' .. '9' { matchRange('0','9'); @@ -1102,10 +1102,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_STRING; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8273:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) - // InternalGame.g:8273:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + // InternalGame.g:8281:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) + // InternalGame.g:8281:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) { - // InternalGame.g:8273:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + // InternalGame.g:8281:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) int alt8=2; int LA8_0 = input.LA(1); @@ -1123,10 +1123,10 @@ public class InternalGameLexer extends Lexer { } switch (alt8) { case 1 : - // InternalGame.g:8273:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' + // InternalGame.g:8281:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' { match('\"'); - // InternalGame.g:8273:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* + // InternalGame.g:8281:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* loop6: do { int alt6=3; @@ -1142,7 +1142,7 @@ public class InternalGameLexer extends Lexer { switch (alt6) { case 1 : - // InternalGame.g:8273:21: '\\\\' . + // InternalGame.g:8281:21: '\\\\' . { match('\\'); matchAny(); @@ -1150,7 +1150,7 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:8273:28: ~ ( ( '\\\\' | '\"' ) ) + // InternalGame.g:8281:28: ~ ( ( '\\\\' | '\"' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1175,10 +1175,10 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:8273:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' + // InternalGame.g:8281:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' { match('\''); - // InternalGame.g:8273:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* + // InternalGame.g:8281:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* loop7: do { int alt7=3; @@ -1194,7 +1194,7 @@ public class InternalGameLexer extends Lexer { switch (alt7) { case 1 : - // InternalGame.g:8273:54: '\\\\' . + // InternalGame.g:8281:54: '\\\\' . { match('\\'); matchAny(); @@ -1202,7 +1202,7 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:8273:61: ~ ( ( '\\\\' | '\\'' ) ) + // InternalGame.g:8281:61: ~ ( ( '\\\\' | '\\'' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1245,12 +1245,12 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_ML_COMMENT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8275:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) - // InternalGame.g:8275:19: '/*' ( options {greedy=false; } : . )* '*/' + // InternalGame.g:8283:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) + // InternalGame.g:8283:19: '/*' ( options {greedy=false; } : . )* '*/' { match("/*"); - // InternalGame.g:8275:24: ( options {greedy=false; } : . )* + // InternalGame.g:8283:24: ( options {greedy=false; } : . )* loop9: do { int alt9=2; @@ -1275,7 +1275,7 @@ public class InternalGameLexer extends Lexer { switch (alt9) { case 1 : - // InternalGame.g:8275:52: . + // InternalGame.g:8283:52: . { matchAny(); @@ -1305,12 +1305,12 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_SL_COMMENT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8277:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) - // InternalGame.g:8277:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? + // InternalGame.g:8285:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) + // InternalGame.g:8285:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? { match("//"); - // InternalGame.g:8277:24: (~ ( ( '\\n' | '\\r' ) ) )* + // InternalGame.g:8285:24: (~ ( ( '\\n' | '\\r' ) ) )* loop10: do { int alt10=2; @@ -1323,7 +1323,7 @@ public class InternalGameLexer extends Lexer { switch (alt10) { case 1 : - // InternalGame.g:8277:24: ~ ( ( '\\n' | '\\r' ) ) + // InternalGame.g:8285:24: ~ ( ( '\\n' | '\\r' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1343,7 +1343,7 @@ public class InternalGameLexer extends Lexer { } } while (true); - // InternalGame.g:8277:40: ( ( '\\r' )? '\\n' )? + // InternalGame.g:8285:40: ( ( '\\r' )? '\\n' )? int alt12=2; int LA12_0 = input.LA(1); @@ -1352,9 +1352,9 @@ public class InternalGameLexer extends Lexer { } switch (alt12) { case 1 : - // InternalGame.g:8277:41: ( '\\r' )? '\\n' + // InternalGame.g:8285:41: ( '\\r' )? '\\n' { - // InternalGame.g:8277:41: ( '\\r' )? + // InternalGame.g:8285:41: ( '\\r' )? int alt11=2; int LA11_0 = input.LA(1); @@ -1363,7 +1363,7 @@ public class InternalGameLexer extends Lexer { } switch (alt11) { case 1 : - // InternalGame.g:8277:41: '\\r' + // InternalGame.g:8285:41: '\\r' { match('\r'); @@ -1395,10 +1395,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_WS; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8279:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) - // InternalGame.g:8279:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // InternalGame.g:8287:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) + // InternalGame.g:8287:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ { - // InternalGame.g:8279:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // InternalGame.g:8287:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ int cnt13=0; loop13: do { @@ -1452,8 +1452,8 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_ANY_OTHER; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8281:16: ( . ) - // InternalGame.g:8281:18: . + // InternalGame.g:8289:16: ( . ) + // InternalGame.g:8289:18: . { matchAny(); diff --git a/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameParser.java b/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameParser.java index a9798cf..0e47b91 100644 --- a/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameParser.java +++ b/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameParser.java @@ -1515,12 +1515,12 @@ public class InternalGameParser extends AbstractInternalContentAssistParser { { int LA1_3 = input.LA(2); - if ( (LA1_3==RULE_COMPARATEUR) ) { - alt1=3; - } - else if ( (LA1_3==EOF||LA1_3==15||LA1_3==17||(LA1_3>=19 && LA1_3<=20)||(LA1_3>=22 && LA1_3<=23)||LA1_3==25||(LA1_3>=27 && LA1_3<=28)||(LA1_3>=32 && LA1_3<=34)||LA1_3==38||LA1_3==41||LA1_3==43||(LA1_3>=45 && LA1_3<=46)) ) { + if ( (LA1_3==EOF||LA1_3==15||LA1_3==17||(LA1_3>=19 && LA1_3<=20)||(LA1_3>=22 && LA1_3<=23)||LA1_3==25||(LA1_3>=27 && LA1_3<=28)||(LA1_3>=32 && LA1_3<=34)||LA1_3==38||LA1_3==41||LA1_3==43||(LA1_3>=45 && LA1_3<=46)) ) { alt1=2; } + else if ( (LA1_3==RULE_COMPARATEUR) ) { + alt1=3; + } else { NoViableAltException nvae = new NoViableAltException("", 1, 3, input); @@ -24160,21 +24160,29 @@ public class InternalGameParser extends AbstractInternalContentAssistParser { // $ANTLR start "rule__ConditionConnaissance__ConnaissanceAssignment_1" - // InternalGame.g:8205:1: rule__ConditionConnaissance__ConnaissanceAssignment_1 : ( RULE_ID ) ; + // InternalGame.g:8205:1: rule__ConditionConnaissance__ConnaissanceAssignment_1 : ( ( RULE_ID ) ) ; public final void rule__ConditionConnaissance__ConnaissanceAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalGame.g:8209:1: ( ( RULE_ID ) ) - // InternalGame.g:8210:2: ( RULE_ID ) + // InternalGame.g:8209:1: ( ( ( RULE_ID ) ) ) + // InternalGame.g:8210:2: ( ( RULE_ID ) ) { - // InternalGame.g:8210:2: ( RULE_ID ) - // InternalGame.g:8211:3: RULE_ID + // InternalGame.g:8210:2: ( ( RULE_ID ) ) + // InternalGame.g:8211:3: ( RULE_ID ) { - before(grammarAccess.getConditionConnaissanceAccess().getConnaissanceIDTerminalRuleCall_1_0()); + before(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceCrossReference_1_0()); + // InternalGame.g:8212:3: ( RULE_ID ) + // InternalGame.g:8213:4: RULE_ID + { + before(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceIDTerminalRuleCall_1_0_1()); match(input,RULE_ID,FOLLOW_2); - after(grammarAccess.getConditionConnaissanceAccess().getConnaissanceIDTerminalRuleCall_1_0()); + after(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceIDTerminalRuleCall_1_0_1()); + + } + + after(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceCrossReference_1_0()); } @@ -24197,21 +24205,29 @@ public class InternalGameParser extends AbstractInternalContentAssistParser { // $ANTLR start "rule__ConditionObjet__ObjetAssignment_0" - // InternalGame.g:8220:1: rule__ConditionObjet__ObjetAssignment_0 : ( RULE_ID ) ; + // InternalGame.g:8224:1: rule__ConditionObjet__ObjetAssignment_0 : ( ( RULE_ID ) ) ; public final void rule__ConditionObjet__ObjetAssignment_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalGame.g:8224:1: ( ( RULE_ID ) ) - // InternalGame.g:8225:2: ( RULE_ID ) + // InternalGame.g:8228:1: ( ( ( RULE_ID ) ) ) + // InternalGame.g:8229:2: ( ( RULE_ID ) ) { - // InternalGame.g:8225:2: ( RULE_ID ) - // InternalGame.g:8226:3: RULE_ID + // InternalGame.g:8229:2: ( ( RULE_ID ) ) + // InternalGame.g:8230:3: ( RULE_ID ) { - before(grammarAccess.getConditionObjetAccess().getObjetIDTerminalRuleCall_0_0()); + before(grammarAccess.getConditionObjetAccess().getObjetObjetCrossReference_0_0()); + // InternalGame.g:8231:3: ( RULE_ID ) + // InternalGame.g:8232:4: RULE_ID + { + before(grammarAccess.getConditionObjetAccess().getObjetObjetIDTerminalRuleCall_0_0_1()); match(input,RULE_ID,FOLLOW_2); - after(grammarAccess.getConditionObjetAccess().getObjetIDTerminalRuleCall_0_0()); + after(grammarAccess.getConditionObjetAccess().getObjetObjetIDTerminalRuleCall_0_0_1()); + + } + + after(grammarAccess.getConditionObjetAccess().getObjetObjetCrossReference_0_0()); } @@ -24234,17 +24250,17 @@ public class InternalGameParser extends AbstractInternalContentAssistParser { // $ANTLR start "rule__ConditionObjet__ComparateurAssignment_1" - // InternalGame.g:8235:1: rule__ConditionObjet__ComparateurAssignment_1 : ( RULE_COMPARATEUR ) ; + // InternalGame.g:8243:1: rule__ConditionObjet__ComparateurAssignment_1 : ( RULE_COMPARATEUR ) ; public final void rule__ConditionObjet__ComparateurAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalGame.g:8239:1: ( ( RULE_COMPARATEUR ) ) - // InternalGame.g:8240:2: ( RULE_COMPARATEUR ) + // InternalGame.g:8247:1: ( ( RULE_COMPARATEUR ) ) + // InternalGame.g:8248:2: ( RULE_COMPARATEUR ) { - // InternalGame.g:8240:2: ( RULE_COMPARATEUR ) - // InternalGame.g:8241:3: RULE_COMPARATEUR + // InternalGame.g:8248:2: ( RULE_COMPARATEUR ) + // InternalGame.g:8249:3: RULE_COMPARATEUR { before(grammarAccess.getConditionObjetAccess().getComparateurCOMPARATEURTerminalRuleCall_1_0()); match(input,RULE_COMPARATEUR,FOLLOW_2); @@ -24271,17 +24287,17 @@ public class InternalGameParser extends AbstractInternalContentAssistParser { // $ANTLR start "rule__ConditionObjet__NombreAssignment_2" - // InternalGame.g:8250:1: rule__ConditionObjet__NombreAssignment_2 : ( RULE_INT ) ; + // InternalGame.g:8258:1: rule__ConditionObjet__NombreAssignment_2 : ( RULE_INT ) ; public final void rule__ConditionObjet__NombreAssignment_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalGame.g:8254:1: ( ( RULE_INT ) ) - // InternalGame.g:8255:2: ( RULE_INT ) + // InternalGame.g:8262:1: ( ( RULE_INT ) ) + // InternalGame.g:8263:2: ( RULE_INT ) { - // InternalGame.g:8255:2: ( RULE_INT ) - // InternalGame.g:8256:3: RULE_INT + // InternalGame.g:8263:2: ( RULE_INT ) + // InternalGame.g:8264:3: RULE_INT { before(grammarAccess.getConditionObjetAccess().getNombreINTTerminalRuleCall_2_0()); match(input,RULE_INT,FOLLOW_2); diff --git a/workspace/fr.n7.game.xtext.tests/xtend-gen/fr/n7/game/xtext/tests/.GameParsingTest.xtendbin b/workspace/fr.n7.game.xtext.tests/xtend-gen/fr/n7/game/xtext/tests/.GameParsingTest.xtendbin index 0b533d7f17c50c7815178abbf1ad2e66912c3133..8d58c8a36527a991c81042fc0434cc7d68176c43 100644 GIT binary patch delta 64 zcmdlhwO5Kaz?+#xgn@&DgCVcOXd~}?R%Rf*`9G^43z!kWrOO0jOm5&Y2h+QF?7{RO G9!CH}0TW69 delta 64 zcmdlhwO5Kaz?+#xgn@&DgTbxUU?cB)R%Rf*`9G^43z!kWrOO0jOm5&Y2h+QF?7{RO G9!CHr&=NcV diff --git a/workspace/fr.n7.game.xtext.ui/src-gen/fr/n7/game/xtext/ui/contentassist/AbstractGameProposalProvider.java b/workspace/fr.n7.game.xtext.ui/src-gen/fr/n7/game/xtext/ui/contentassist/AbstractGameProposalProvider.java index 15ca7ee..98489be 100644 --- a/workspace/fr.n7.game.xtext.ui/src-gen/fr/n7/game/xtext/ui/contentassist/AbstractGameProposalProvider.java +++ b/workspace/fr.n7.game.xtext.ui/src-gen/fr/n7/game/xtext/ui/contentassist/AbstractGameProposalProvider.java @@ -211,10 +211,10 @@ public abstract class AbstractGameProposalProvider extends TerminalsProposalProv // subclasses may override } public void completeConditionConnaissance_Connaissance(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { - completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor); } public void completeConditionObjet_Objet(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { - completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor); } public void completeConditionObjet_Comparateur(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); diff --git a/workspace/fr.n7.game.xtext/model/generated/Game.ecore b/workspace/fr.n7.game.xtext/model/generated/Game.ecore index cbf2d49..663a371 100644 --- a/workspace/fr.n7.game.xtext/model/generated/Game.ecore +++ b/workspace/fr.n7.game.xtext/model/generated/Game.ecore @@ -145,10 +145,10 @@ - + - + diff --git a/workspace/fr.n7.game.xtext/model/generated/Game.genmodel b/workspace/fr.n7.game.xtext/model/generated/Game.genmodel index eb6c7a5..e8dbb59 100644 --- a/workspace/fr.n7.game.xtext/model/generated/Game.genmodel +++ b/workspace/fr.n7.game.xtext/model/generated/Game.genmodel @@ -102,10 +102,10 @@ - + - + diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/Game.xtextbin b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/Game.xtextbin index 439e779966b5539db78bc29c9f61202474f72920..d09e890cccc792bb151dda13bb391f63ddd22027 100644 GIT binary patch literal 6890 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 B*rfmf literal 6854 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' attribute. + * Returns the value of the 'Connaissance' reference. * * - * @return the value of the 'Connaissance' attribute. - * @see #setConnaissance(String) + * @return the value of the 'Connaissance' reference. + * @see #setConnaissance(Connaissance) * @see fr.n7.game.xtext.game.GamePackage#getConditionConnaissance_Connaissance() * @model * @generated */ - String getConnaissance(); + Connaissance getConnaissance(); /** - * Sets the value of the '{@link fr.n7.game.xtext.game.ConditionConnaissance#getConnaissance Connaissance}' attribute. + * Sets the value of the '{@link fr.n7.game.xtext.game.ConditionConnaissance#getConnaissance Connaissance}' reference. * * - * @param value the new value of the 'Connaissance' attribute. + * @param value the new value of the 'Connaissance' reference. * @see #getConnaissance() * @generated */ - void setConnaissance(String value); + void setConnaissance(Connaissance value); } // ConditionConnaissance diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/ConditionObjet.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/ConditionObjet.java index c91bc03..6981cff 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/ConditionObjet.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/ConditionObjet.java @@ -25,26 +25,26 @@ package fr.n7.game.xtext.game; public interface ConditionObjet extends ConditionTest { /** - * Returns the value of the 'Objet' attribute. + * Returns the value of the 'Objet' reference. * * - * @return the value of the 'Objet' attribute. - * @see #setObjet(String) + * @return the value of the 'Objet' reference. + * @see #setObjet(Objet) * @see fr.n7.game.xtext.game.GamePackage#getConditionObjet_Objet() * @model * @generated */ - String getObjet(); + Objet getObjet(); /** - * Sets the value of the '{@link fr.n7.game.xtext.game.ConditionObjet#getObjet Objet}' attribute. + * Sets the value of the '{@link fr.n7.game.xtext.game.ConditionObjet#getObjet Objet}' reference. * * - * @param value the new value of the 'Objet' attribute. + * @param value the new value of the 'Objet' reference. * @see #getObjet() * @generated */ - void setObjet(String value); + void setObjet(Objet value); /** * Returns the value of the 'Comparateur' attribute. diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/GamePackage.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/GamePackage.java index c3143e5..843aa88 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/GamePackage.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/GamePackage.java @@ -948,7 +948,7 @@ public interface GamePackage extends EPackage int CONDITION_CONNAISSANCE__NEGATION = CONDITION_TEST_FEATURE_COUNT + 0; /** - * The feature id for the 'Connaissance' attribute. + * The feature id for the 'Connaissance' reference. * * * @generated @@ -976,7 +976,7 @@ public interface GamePackage extends EPackage int CONDITION_OBJET = 17; /** - * The feature id for the 'Objet' attribute. + * The feature id for the 'Objet' reference. * * * @generated @@ -1887,15 +1887,15 @@ public interface GamePackage extends EPackage EAttribute getConditionConnaissance_Negation(); /** - * Returns the meta object for the attribute '{@link fr.n7.game.xtext.game.ConditionConnaissance#getConnaissance Connaissance}'. + * Returns the meta object for the reference '{@link fr.n7.game.xtext.game.ConditionConnaissance#getConnaissance Connaissance}'. * * - * @return the meta object for the attribute 'Connaissance'. + * @return the meta object for the reference 'Connaissance'. * @see fr.n7.game.xtext.game.ConditionConnaissance#getConnaissance() * @see #getConditionConnaissance() * @generated */ - EAttribute getConditionConnaissance_Connaissance(); + EReference getConditionConnaissance_Connaissance(); /** * Returns the meta object for class '{@link fr.n7.game.xtext.game.ConditionObjet Condition Objet}'. @@ -1908,15 +1908,15 @@ public interface GamePackage extends EPackage EClass getConditionObjet(); /** - * Returns the meta object for the attribute '{@link fr.n7.game.xtext.game.ConditionObjet#getObjet Objet}'. + * Returns the meta object for the reference '{@link fr.n7.game.xtext.game.ConditionObjet#getObjet Objet}'. * * - * @return the meta object for the attribute 'Objet'. + * @return the meta object for the reference 'Objet'. * @see fr.n7.game.xtext.game.ConditionObjet#getObjet() * @see #getConditionObjet() * @generated */ - EAttribute getConditionObjet_Objet(); + EReference getConditionObjet_Objet(); /** * Returns the meta object for the attribute '{@link fr.n7.game.xtext.game.ConditionObjet#getComparateur Comparateur}'. @@ -2646,12 +2646,12 @@ public interface GamePackage extends EPackage EAttribute CONDITION_CONNAISSANCE__NEGATION = eINSTANCE.getConditionConnaissance_Negation(); /** - * The meta object literal for the 'Connaissance' attribute feature. + * The meta object literal for the 'Connaissance' reference feature. * * * @generated */ - EAttribute CONDITION_CONNAISSANCE__CONNAISSANCE = eINSTANCE.getConditionConnaissance_Connaissance(); + EReference CONDITION_CONNAISSANCE__CONNAISSANCE = eINSTANCE.getConditionConnaissance_Connaissance(); /** * The meta object literal for the '{@link fr.n7.game.xtext.game.impl.ConditionObjetImpl Condition Objet}' class. @@ -2664,12 +2664,12 @@ public interface GamePackage extends EPackage EClass CONDITION_OBJET = eINSTANCE.getConditionObjet(); /** - * The meta object literal for the 'Objet' attribute feature. + * The meta object literal for the 'Objet' reference feature. * * * @generated */ - EAttribute CONDITION_OBJET__OBJET = eINSTANCE.getConditionObjet_Objet(); + EReference CONDITION_OBJET__OBJET = eINSTANCE.getConditionObjet_Objet(); /** * The meta object literal for the 'Comparateur' attribute feature. diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionConnaissanceImpl.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionConnaissanceImpl.java index 7ebaa6b..fea3b76 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionConnaissanceImpl.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionConnaissanceImpl.java @@ -4,11 +4,13 @@ package fr.n7.game.xtext.game.impl; import fr.n7.game.xtext.game.ConditionConnaissance; +import fr.n7.game.xtext.game.Connaissance; import fr.n7.game.xtext.game.GamePackage; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; @@ -49,24 +51,14 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond protected String negation = NEGATION_EDEFAULT; /** - * The default value of the '{@link #getConnaissance() Connaissance}' attribute. + * The cached value of the '{@link #getConnaissance() Connaissance}' reference. * * * @see #getConnaissance() * @generated * @ordered */ - protected static final String CONNAISSANCE_EDEFAULT = null; - - /** - * The cached value of the '{@link #getConnaissance() Connaissance}' attribute. - * - * - * @see #getConnaissance() - * @generated - * @ordered - */ - protected String connaissance = CONNAISSANCE_EDEFAULT; + protected Connaissance connaissance; /** * @@ -120,7 +112,27 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond * @generated */ @Override - public String getConnaissance() + public Connaissance getConnaissance() + { + if (connaissance != null && connaissance.eIsProxy()) + { + InternalEObject oldConnaissance = (InternalEObject)connaissance; + connaissance = (Connaissance)eResolveProxy(oldConnaissance); + if (connaissance != oldConnaissance) + { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, GamePackage.CONDITION_CONNAISSANCE__CONNAISSANCE, oldConnaissance, connaissance)); + } + } + return connaissance; + } + + /** + * + * + * @generated + */ + public Connaissance basicGetConnaissance() { return connaissance; } @@ -131,9 +143,9 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond * @generated */ @Override - public void setConnaissance(String newConnaissance) + public void setConnaissance(Connaissance newConnaissance) { - String oldConnaissance = connaissance; + Connaissance oldConnaissance = connaissance; connaissance = newConnaissance; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, GamePackage.CONDITION_CONNAISSANCE__CONNAISSANCE, oldConnaissance, connaissance)); @@ -152,7 +164,8 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond case GamePackage.CONDITION_CONNAISSANCE__NEGATION: return getNegation(); case GamePackage.CONDITION_CONNAISSANCE__CONNAISSANCE: - return getConnaissance(); + if (resolve) return getConnaissance(); + return basicGetConnaissance(); } return super.eGet(featureID, resolve, coreType); } @@ -171,7 +184,7 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond setNegation((String)newValue); return; case GamePackage.CONDITION_CONNAISSANCE__CONNAISSANCE: - setConnaissance((String)newValue); + setConnaissance((Connaissance)newValue); return; } super.eSet(featureID, newValue); @@ -191,7 +204,7 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond setNegation(NEGATION_EDEFAULT); return; case GamePackage.CONDITION_CONNAISSANCE__CONNAISSANCE: - setConnaissance(CONNAISSANCE_EDEFAULT); + setConnaissance((Connaissance)null); return; } super.eUnset(featureID); @@ -210,7 +223,7 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond case GamePackage.CONDITION_CONNAISSANCE__NEGATION: return NEGATION_EDEFAULT == null ? negation != null : !NEGATION_EDEFAULT.equals(negation); case GamePackage.CONDITION_CONNAISSANCE__CONNAISSANCE: - return CONNAISSANCE_EDEFAULT == null ? connaissance != null : !CONNAISSANCE_EDEFAULT.equals(connaissance); + return connaissance != null; } return super.eIsSet(featureID); } @@ -228,8 +241,6 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond StringBuilder result = new StringBuilder(super.toString()); result.append(" (negation: "); result.append(negation); - result.append(", connaissance: "); - result.append(connaissance); result.append(')'); return result.toString(); } diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionObjetImpl.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionObjetImpl.java index 4f3e540..b581480 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionObjetImpl.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionObjetImpl.java @@ -5,10 +5,12 @@ package fr.n7.game.xtext.game.impl; import fr.n7.game.xtext.game.ConditionObjet; import fr.n7.game.xtext.game.GamePackage; +import fr.n7.game.xtext.game.Objet; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; @@ -30,24 +32,14 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl; public class ConditionObjetImpl extends ConditionTestImpl implements ConditionObjet { /** - * The default value of the '{@link #getObjet() Objet}' attribute. + * The cached value of the '{@link #getObjet() Objet}' reference. * * * @see #getObjet() * @generated * @ordered */ - protected static final String OBJET_EDEFAULT = null; - - /** - * The cached value of the '{@link #getObjet() Objet}' attribute. - * - * - * @see #getObjet() - * @generated - * @ordered - */ - protected String objet = OBJET_EDEFAULT; + protected Objet objet; /** * The default value of the '{@link #getComparateur() Comparateur}' attribute. @@ -116,7 +108,27 @@ public class ConditionObjetImpl extends ConditionTestImpl implements ConditionOb * @generated */ @Override - public String getObjet() + public Objet getObjet() + { + if (objet != null && objet.eIsProxy()) + { + InternalEObject oldObjet = (InternalEObject)objet; + objet = (Objet)eResolveProxy(oldObjet); + if (objet != oldObjet) + { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, GamePackage.CONDITION_OBJET__OBJET, oldObjet, objet)); + } + } + return objet; + } + + /** + * + * + * @generated + */ + public Objet basicGetObjet() { return objet; } @@ -127,9 +139,9 @@ public class ConditionObjetImpl extends ConditionTestImpl implements ConditionOb * @generated */ @Override - public void setObjet(String newObjet) + public void setObjet(Objet newObjet) { - String oldObjet = objet; + Objet oldObjet = objet; objet = newObjet; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, GamePackage.CONDITION_OBJET__OBJET, oldObjet, objet)); @@ -196,7 +208,8 @@ public class ConditionObjetImpl extends ConditionTestImpl implements ConditionOb switch (featureID) { case GamePackage.CONDITION_OBJET__OBJET: - return getObjet(); + if (resolve) return getObjet(); + return basicGetObjet(); case GamePackage.CONDITION_OBJET__COMPARATEUR: return getComparateur(); case GamePackage.CONDITION_OBJET__NOMBRE: @@ -216,7 +229,7 @@ public class ConditionObjetImpl extends ConditionTestImpl implements ConditionOb switch (featureID) { case GamePackage.CONDITION_OBJET__OBJET: - setObjet((String)newValue); + setObjet((Objet)newValue); return; case GamePackage.CONDITION_OBJET__COMPARATEUR: setComparateur((String)newValue); @@ -239,7 +252,7 @@ public class ConditionObjetImpl extends ConditionTestImpl implements ConditionOb switch (featureID) { case GamePackage.CONDITION_OBJET__OBJET: - setObjet(OBJET_EDEFAULT); + setObjet((Objet)null); return; case GamePackage.CONDITION_OBJET__COMPARATEUR: setComparateur(COMPARATEUR_EDEFAULT); @@ -262,7 +275,7 @@ public class ConditionObjetImpl extends ConditionTestImpl implements ConditionOb switch (featureID) { case GamePackage.CONDITION_OBJET__OBJET: - return OBJET_EDEFAULT == null ? objet != null : !OBJET_EDEFAULT.equals(objet); + return objet != null; case GamePackage.CONDITION_OBJET__COMPARATEUR: return COMPARATEUR_EDEFAULT == null ? comparateur != null : !COMPARATEUR_EDEFAULT.equals(comparateur); case GamePackage.CONDITION_OBJET__NOMBRE: @@ -282,9 +295,7 @@ public class ConditionObjetImpl extends ConditionTestImpl implements ConditionOb if (eIsProxy()) return super.toString(); StringBuilder result = new StringBuilder(super.toString()); - result.append(" (objet: "); - result.append(objet); - result.append(", comparateur: "); + result.append(" (comparateur: "); result.append(comparateur); result.append(", nombre: "); result.append(nombre); diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/GamePackageImpl.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/GamePackageImpl.java index cc5ba4b..2999fc1 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/GamePackageImpl.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/GamePackageImpl.java @@ -1125,9 +1125,9 @@ public class GamePackageImpl extends EPackageImpl implements GamePackage * @generated */ @Override - public EAttribute getConditionConnaissance_Connaissance() + public EReference getConditionConnaissance_Connaissance() { - return (EAttribute)conditionConnaissanceEClass.getEStructuralFeatures().get(1); + return (EReference)conditionConnaissanceEClass.getEStructuralFeatures().get(1); } /** @@ -1147,9 +1147,9 @@ public class GamePackageImpl extends EPackageImpl implements GamePackage * @generated */ @Override - public EAttribute getConditionObjet_Objet() + public EReference getConditionObjet_Objet() { - return (EAttribute)conditionObjetEClass.getEStructuralFeatures().get(0); + return (EReference)conditionObjetEClass.getEStructuralFeatures().get(0); } /** @@ -1302,10 +1302,10 @@ public class GamePackageImpl extends EPackageImpl implements GamePackage conditionConnaissanceEClass = createEClass(CONDITION_CONNAISSANCE); createEAttribute(conditionConnaissanceEClass, CONDITION_CONNAISSANCE__NEGATION); - createEAttribute(conditionConnaissanceEClass, CONDITION_CONNAISSANCE__CONNAISSANCE); + createEReference(conditionConnaissanceEClass, CONDITION_CONNAISSANCE__CONNAISSANCE); conditionObjetEClass = createEClass(CONDITION_OBJET); - createEAttribute(conditionObjetEClass, CONDITION_OBJET__OBJET); + createEReference(conditionObjetEClass, CONDITION_OBJET__OBJET); createEAttribute(conditionObjetEClass, CONDITION_OBJET__COMPARATEUR); createEAttribute(conditionObjetEClass, CONDITION_OBJET__NOMBRE); } @@ -1441,10 +1441,10 @@ public class GamePackageImpl extends EPackageImpl implements GamePackage initEClass(conditionConnaissanceEClass, ConditionConnaissance.class, "ConditionConnaissance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEAttribute(getConditionConnaissance_Negation(), ecorePackage.getEString(), "negation", null, 0, 1, ConditionConnaissance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEAttribute(getConditionConnaissance_Connaissance(), ecorePackage.getEString(), "connaissance", null, 0, 1, ConditionConnaissance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getConditionConnaissance_Connaissance(), this.getConnaissance(), null, "connaissance", null, 0, 1, ConditionConnaissance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(conditionObjetEClass, ConditionObjet.class, "ConditionObjet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEAttribute(getConditionObjet_Objet(), ecorePackage.getEString(), "objet", null, 0, 1, ConditionObjet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getConditionObjet_Objet(), this.getObjet(), null, "objet", null, 0, 1, ConditionObjet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEAttribute(getConditionObjet_Comparateur(), ecorePackage.getEString(), "comparateur", null, 0, 1, ConditionObjet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEAttribute(getConditionObjet_Nombre(), ecorePackage.getEInt(), "nombre", null, 0, 1, ConditionObjet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGame.g b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGame.g index 3bc2abc..bbae9f2 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGame.g +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGame.g @@ -2171,19 +2171,14 @@ ruleConditionConnaissance returns [EObject current=null] )? ( ( - lv_connaissance_1_0=RULE_ID - { - newLeafNode(lv_connaissance_1_0, grammarAccess.getConditionConnaissanceAccess().getConnaissanceIDTerminalRuleCall_1_0()); - } { if ($current==null) { $current = createModelElement(grammarAccess.getConditionConnaissanceRule()); } - setWithLastConsumed( - $current, - "connaissance", - lv_connaissance_1_0, - "org.eclipse.xtext.common.Terminals.ID"); + } + otherlv_1=RULE_ID + { + newLeafNode(otherlv_1, grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceCrossReference_1_0()); } ) ) @@ -2208,19 +2203,14 @@ ruleConditionObjet returns [EObject current=null] ( ( ( - lv_objet_0_0=RULE_ID - { - newLeafNode(lv_objet_0_0, grammarAccess.getConditionObjetAccess().getObjetIDTerminalRuleCall_0_0()); - } { if ($current==null) { $current = createModelElement(grammarAccess.getConditionObjetRule()); } - setWithLastConsumed( - $current, - "objet", - lv_objet_0_0, - "org.eclipse.xtext.common.Terminals.ID"); + } + otherlv_0=RULE_ID + { + newLeafNode(otherlv_0, grammarAccess.getConditionObjetAccess().getObjetObjetCrossReference_0_0()); } ) ) diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameLexer.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameLexer.java index 57b12f7..4179722 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameLexer.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameLexer.java @@ -808,10 +808,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_COMPARATEUR; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2266:18: ( ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) ) - // InternalGame.g:2266:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) + // InternalGame.g:2256:18: ( ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) ) + // InternalGame.g:2256:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) { - // InternalGame.g:2266:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) + // InternalGame.g:2256:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) int alt1=6; switch ( input.LA(1) ) { case '<': @@ -855,21 +855,21 @@ public class InternalGameLexer extends Lexer { switch (alt1) { case 1 : - // InternalGame.g:2266:21: '<' + // InternalGame.g:2256:21: '<' { match('<'); } break; case 2 : - // InternalGame.g:2266:25: '>' + // InternalGame.g:2256:25: '>' { match('>'); } break; case 3 : - // InternalGame.g:2266:29: '==' + // InternalGame.g:2256:29: '==' { match("=="); @@ -877,7 +877,7 @@ public class InternalGameLexer extends Lexer { } break; case 4 : - // InternalGame.g:2266:34: '<=' + // InternalGame.g:2256:34: '<=' { match("<="); @@ -885,7 +885,7 @@ public class InternalGameLexer extends Lexer { } break; case 5 : - // InternalGame.g:2266:39: '>=' + // InternalGame.g:2256:39: '>=' { match(">="); @@ -893,7 +893,7 @@ public class InternalGameLexer extends Lexer { } break; case 6 : - // InternalGame.g:2266:44: '!=' + // InternalGame.g:2256:44: '!=' { match("!="); @@ -919,10 +919,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_BOOLEAN; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2268:14: ( ( 'true' | 'false' ) ) - // InternalGame.g:2268:16: ( 'true' | 'false' ) + // InternalGame.g:2258:14: ( ( 'true' | 'false' ) ) + // InternalGame.g:2258:16: ( 'true' | 'false' ) { - // InternalGame.g:2268:16: ( 'true' | 'false' ) + // InternalGame.g:2258:16: ( 'true' | 'false' ) int alt2=2; int LA2_0 = input.LA(1); @@ -940,7 +940,7 @@ public class InternalGameLexer extends Lexer { } switch (alt2) { case 1 : - // InternalGame.g:2268:17: 'true' + // InternalGame.g:2258:17: 'true' { match("true"); @@ -948,7 +948,7 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:2268:24: 'false' + // InternalGame.g:2258:24: 'false' { match("false"); @@ -974,10 +974,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_ID; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2270:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) - // InternalGame.g:2270:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + // InternalGame.g:2260:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) + // InternalGame.g:2260:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* { - // InternalGame.g:2270:11: ( '^' )? + // InternalGame.g:2260:11: ( '^' )? int alt3=2; int LA3_0 = input.LA(1); @@ -986,7 +986,7 @@ public class InternalGameLexer extends Lexer { } switch (alt3) { case 1 : - // InternalGame.g:2270:11: '^' + // InternalGame.g:2260:11: '^' { match('^'); @@ -1004,7 +1004,7 @@ public class InternalGameLexer extends Lexer { recover(mse); throw mse;} - // InternalGame.g:2270:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + // InternalGame.g:2260:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* loop4: do { int alt4=2; @@ -1053,10 +1053,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_INT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2272:10: ( ( '0' .. '9' )+ ) - // InternalGame.g:2272:12: ( '0' .. '9' )+ + // InternalGame.g:2262:10: ( ( '0' .. '9' )+ ) + // InternalGame.g:2262:12: ( '0' .. '9' )+ { - // InternalGame.g:2272:12: ( '0' .. '9' )+ + // InternalGame.g:2262:12: ( '0' .. '9' )+ int cnt5=0; loop5: do { @@ -1070,7 +1070,7 @@ public class InternalGameLexer extends Lexer { switch (alt5) { case 1 : - // InternalGame.g:2272:13: '0' .. '9' + // InternalGame.g:2262:13: '0' .. '9' { matchRange('0','9'); @@ -1102,10 +1102,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_STRING; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2274:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) - // InternalGame.g:2274:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + // InternalGame.g:2264:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) + // InternalGame.g:2264:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) { - // InternalGame.g:2274:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + // InternalGame.g:2264:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) int alt8=2; int LA8_0 = input.LA(1); @@ -1123,10 +1123,10 @@ public class InternalGameLexer extends Lexer { } switch (alt8) { case 1 : - // InternalGame.g:2274:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' + // InternalGame.g:2264:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' { match('\"'); - // InternalGame.g:2274:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* + // InternalGame.g:2264:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* loop6: do { int alt6=3; @@ -1142,7 +1142,7 @@ public class InternalGameLexer extends Lexer { switch (alt6) { case 1 : - // InternalGame.g:2274:21: '\\\\' . + // InternalGame.g:2264:21: '\\\\' . { match('\\'); matchAny(); @@ -1150,7 +1150,7 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:2274:28: ~ ( ( '\\\\' | '\"' ) ) + // InternalGame.g:2264:28: ~ ( ( '\\\\' | '\"' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1175,10 +1175,10 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:2274:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' + // InternalGame.g:2264:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' { match('\''); - // InternalGame.g:2274:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* + // InternalGame.g:2264:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* loop7: do { int alt7=3; @@ -1194,7 +1194,7 @@ public class InternalGameLexer extends Lexer { switch (alt7) { case 1 : - // InternalGame.g:2274:54: '\\\\' . + // InternalGame.g:2264:54: '\\\\' . { match('\\'); matchAny(); @@ -1202,7 +1202,7 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:2274:61: ~ ( ( '\\\\' | '\\'' ) ) + // InternalGame.g:2264:61: ~ ( ( '\\\\' | '\\'' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1245,12 +1245,12 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_ML_COMMENT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2276:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) - // InternalGame.g:2276:19: '/*' ( options {greedy=false; } : . )* '*/' + // InternalGame.g:2266:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) + // InternalGame.g:2266:19: '/*' ( options {greedy=false; } : . )* '*/' { match("/*"); - // InternalGame.g:2276:24: ( options {greedy=false; } : . )* + // InternalGame.g:2266:24: ( options {greedy=false; } : . )* loop9: do { int alt9=2; @@ -1275,7 +1275,7 @@ public class InternalGameLexer extends Lexer { switch (alt9) { case 1 : - // InternalGame.g:2276:52: . + // InternalGame.g:2266:52: . { matchAny(); @@ -1305,12 +1305,12 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_SL_COMMENT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2278:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) - // InternalGame.g:2278:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? + // InternalGame.g:2268:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) + // InternalGame.g:2268:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? { match("//"); - // InternalGame.g:2278:24: (~ ( ( '\\n' | '\\r' ) ) )* + // InternalGame.g:2268:24: (~ ( ( '\\n' | '\\r' ) ) )* loop10: do { int alt10=2; @@ -1323,7 +1323,7 @@ public class InternalGameLexer extends Lexer { switch (alt10) { case 1 : - // InternalGame.g:2278:24: ~ ( ( '\\n' | '\\r' ) ) + // InternalGame.g:2268:24: ~ ( ( '\\n' | '\\r' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1343,7 +1343,7 @@ public class InternalGameLexer extends Lexer { } } while (true); - // InternalGame.g:2278:40: ( ( '\\r' )? '\\n' )? + // InternalGame.g:2268:40: ( ( '\\r' )? '\\n' )? int alt12=2; int LA12_0 = input.LA(1); @@ -1352,9 +1352,9 @@ public class InternalGameLexer extends Lexer { } switch (alt12) { case 1 : - // InternalGame.g:2278:41: ( '\\r' )? '\\n' + // InternalGame.g:2268:41: ( '\\r' )? '\\n' { - // InternalGame.g:2278:41: ( '\\r' )? + // InternalGame.g:2268:41: ( '\\r' )? int alt11=2; int LA11_0 = input.LA(1); @@ -1363,7 +1363,7 @@ public class InternalGameLexer extends Lexer { } switch (alt11) { case 1 : - // InternalGame.g:2278:41: '\\r' + // InternalGame.g:2268:41: '\\r' { match('\r'); @@ -1395,10 +1395,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_WS; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2280:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) - // InternalGame.g:2280:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // InternalGame.g:2270:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) + // InternalGame.g:2270:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ { - // InternalGame.g:2280:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // InternalGame.g:2270:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ int cnt13=0; loop13: do { @@ -1452,8 +1452,8 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_ANY_OTHER; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2282:16: ( . ) - // InternalGame.g:2282:18: . + // InternalGame.g:2272:16: ( . ) + // InternalGame.g:2272:18: . { matchAny(); diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameParser.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameParser.java index 4ddf2d9..e1633f4 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameParser.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameParser.java @@ -4872,22 +4872,22 @@ public class InternalGameParser extends AbstractInternalAntlrParser { // $ANTLR start "ruleConditionConnaissance" - // InternalGame.g:2150:1: ruleConditionConnaissance returns [EObject current=null] : ( ( (lv_negation_0_0= '!' ) )? ( (lv_connaissance_1_0= RULE_ID ) ) ) ; + // InternalGame.g:2150:1: ruleConditionConnaissance returns [EObject current=null] : ( ( (lv_negation_0_0= '!' ) )? ( (otherlv_1= RULE_ID ) ) ) ; public final EObject ruleConditionConnaissance() throws RecognitionException { EObject current = null; Token lv_negation_0_0=null; - Token lv_connaissance_1_0=null; + Token otherlv_1=null; enterRule(); try { - // InternalGame.g:2156:2: ( ( ( (lv_negation_0_0= '!' ) )? ( (lv_connaissance_1_0= RULE_ID ) ) ) ) - // InternalGame.g:2157:2: ( ( (lv_negation_0_0= '!' ) )? ( (lv_connaissance_1_0= RULE_ID ) ) ) + // InternalGame.g:2156:2: ( ( ( (lv_negation_0_0= '!' ) )? ( (otherlv_1= RULE_ID ) ) ) ) + // InternalGame.g:2157:2: ( ( (lv_negation_0_0= '!' ) )? ( (otherlv_1= RULE_ID ) ) ) { - // InternalGame.g:2157:2: ( ( (lv_negation_0_0= '!' ) )? ( (lv_connaissance_1_0= RULE_ID ) ) ) - // InternalGame.g:2158:3: ( (lv_negation_0_0= '!' ) )? ( (lv_connaissance_1_0= RULE_ID ) ) + // InternalGame.g:2157:2: ( ( (lv_negation_0_0= '!' ) )? ( (otherlv_1= RULE_ID ) ) ) + // InternalGame.g:2158:3: ( (lv_negation_0_0= '!' ) )? ( (otherlv_1= RULE_ID ) ) { // InternalGame.g:2158:3: ( (lv_negation_0_0= '!' ) )? int alt33=2; @@ -4922,25 +4922,20 @@ public class InternalGameParser extends AbstractInternalAntlrParser { } - // InternalGame.g:2172:3: ( (lv_connaissance_1_0= RULE_ID ) ) - // InternalGame.g:2173:4: (lv_connaissance_1_0= RULE_ID ) + // InternalGame.g:2172:3: ( (otherlv_1= RULE_ID ) ) + // InternalGame.g:2173:4: (otherlv_1= RULE_ID ) { - // InternalGame.g:2173:4: (lv_connaissance_1_0= RULE_ID ) - // InternalGame.g:2174:5: lv_connaissance_1_0= RULE_ID + // InternalGame.g:2173:4: (otherlv_1= RULE_ID ) + // InternalGame.g:2174:5: otherlv_1= RULE_ID { - lv_connaissance_1_0=(Token)match(input,RULE_ID,FOLLOW_2); - - newLeafNode(lv_connaissance_1_0, grammarAccess.getConditionConnaissanceAccess().getConnaissanceIDTerminalRuleCall_1_0()); - if (current==null) { current = createModelElement(grammarAccess.getConditionConnaissanceRule()); } - setWithLastConsumed( - current, - "connaissance", - lv_connaissance_1_0, - "org.eclipse.xtext.common.Terminals.ID"); + + otherlv_1=(Token)match(input,RULE_ID,FOLLOW_2); + + newLeafNode(otherlv_1, grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceCrossReference_1_0()); } @@ -4971,7 +4966,7 @@ public class InternalGameParser extends AbstractInternalAntlrParser { // $ANTLR start "entryRuleConditionObjet" - // InternalGame.g:2194:1: entryRuleConditionObjet returns [EObject current=null] : iv_ruleConditionObjet= ruleConditionObjet EOF ; + // InternalGame.g:2189:1: entryRuleConditionObjet returns [EObject current=null] : iv_ruleConditionObjet= ruleConditionObjet EOF ; public final EObject entryRuleConditionObjet() throws RecognitionException { EObject current = null; @@ -4979,8 +4974,8 @@ public class InternalGameParser extends AbstractInternalAntlrParser { try { - // InternalGame.g:2194:55: (iv_ruleConditionObjet= ruleConditionObjet EOF ) - // InternalGame.g:2195:2: iv_ruleConditionObjet= ruleConditionObjet EOF + // InternalGame.g:2189:55: (iv_ruleConditionObjet= ruleConditionObjet EOF ) + // InternalGame.g:2190:2: iv_ruleConditionObjet= ruleConditionObjet EOF { newCompositeNode(grammarAccess.getConditionObjetRule()); pushFollow(FOLLOW_1); @@ -5007,11 +5002,11 @@ public class InternalGameParser extends AbstractInternalAntlrParser { // $ANTLR start "ruleConditionObjet" - // InternalGame.g:2201:1: ruleConditionObjet returns [EObject current=null] : ( ( (lv_objet_0_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) ; + // InternalGame.g:2196:1: ruleConditionObjet returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) ; public final EObject ruleConditionObjet() throws RecognitionException { EObject current = null; - Token lv_objet_0_0=null; + Token otherlv_0=null; Token lv_comparateur_1_0=null; Token lv_nombre_2_0=null; @@ -5019,31 +5014,26 @@ public class InternalGameParser extends AbstractInternalAntlrParser { enterRule(); try { - // InternalGame.g:2207:2: ( ( ( (lv_objet_0_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) ) - // InternalGame.g:2208:2: ( ( (lv_objet_0_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) + // InternalGame.g:2202:2: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) ) + // InternalGame.g:2203:2: ( ( (otherlv_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) { - // InternalGame.g:2208:2: ( ( (lv_objet_0_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) - // InternalGame.g:2209:3: ( (lv_objet_0_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) + // InternalGame.g:2203:2: ( ( (otherlv_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) + // InternalGame.g:2204:3: ( (otherlv_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) { - // InternalGame.g:2209:3: ( (lv_objet_0_0= RULE_ID ) ) - // InternalGame.g:2210:4: (lv_objet_0_0= RULE_ID ) + // InternalGame.g:2204:3: ( (otherlv_0= RULE_ID ) ) + // InternalGame.g:2205:4: (otherlv_0= RULE_ID ) { - // InternalGame.g:2210:4: (lv_objet_0_0= RULE_ID ) - // InternalGame.g:2211:5: lv_objet_0_0= RULE_ID + // InternalGame.g:2205:4: (otherlv_0= RULE_ID ) + // InternalGame.g:2206:5: otherlv_0= RULE_ID { - lv_objet_0_0=(Token)match(input,RULE_ID,FOLLOW_43); - - newLeafNode(lv_objet_0_0, grammarAccess.getConditionObjetAccess().getObjetIDTerminalRuleCall_0_0()); - if (current==null) { current = createModelElement(grammarAccess.getConditionObjetRule()); } - setWithLastConsumed( - current, - "objet", - lv_objet_0_0, - "org.eclipse.xtext.common.Terminals.ID"); + + otherlv_0=(Token)match(input,RULE_ID,FOLLOW_43); + + newLeafNode(otherlv_0, grammarAccess.getConditionObjetAccess().getObjetObjetCrossReference_0_0()); } @@ -5051,11 +5041,11 @@ public class InternalGameParser extends AbstractInternalAntlrParser { } - // InternalGame.g:2227:3: ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) - // InternalGame.g:2228:4: (lv_comparateur_1_0= RULE_COMPARATEUR ) + // InternalGame.g:2217:3: ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) + // InternalGame.g:2218:4: (lv_comparateur_1_0= RULE_COMPARATEUR ) { - // InternalGame.g:2228:4: (lv_comparateur_1_0= RULE_COMPARATEUR ) - // InternalGame.g:2229:5: lv_comparateur_1_0= RULE_COMPARATEUR + // InternalGame.g:2218:4: (lv_comparateur_1_0= RULE_COMPARATEUR ) + // InternalGame.g:2219:5: lv_comparateur_1_0= RULE_COMPARATEUR { lv_comparateur_1_0=(Token)match(input,RULE_COMPARATEUR,FOLLOW_12); @@ -5077,11 +5067,11 @@ public class InternalGameParser extends AbstractInternalAntlrParser { } - // InternalGame.g:2245:3: ( (lv_nombre_2_0= RULE_INT ) ) - // InternalGame.g:2246:4: (lv_nombre_2_0= RULE_INT ) + // InternalGame.g:2235:3: ( (lv_nombre_2_0= RULE_INT ) ) + // InternalGame.g:2236:4: (lv_nombre_2_0= RULE_INT ) { - // InternalGame.g:2246:4: (lv_nombre_2_0= RULE_INT ) - // InternalGame.g:2247:5: lv_nombre_2_0= RULE_INT + // InternalGame.g:2236:4: (lv_nombre_2_0= RULE_INT ) + // InternalGame.g:2237:5: lv_nombre_2_0= RULE_INT { lv_nombre_2_0=(Token)match(input,RULE_INT,FOLLOW_2); diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/serializer/GameSemanticSequencer.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/serializer/GameSemanticSequencer.java index 24386e6..e3e4de6 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/serializer/GameSemanticSequencer.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/serializer/GameSemanticSequencer.java @@ -171,7 +171,7 @@ public class GameSemanticSequencer extends AbstractDelegatingSemanticSequencer { * ConditionConnaissance returns ConditionConnaissance * * Constraint: - * (negation='!'? connaissance=ID) + * (negation='!'? connaissance=[Connaissance|ID]) */ protected void sequence_ConditionConnaissance(ISerializationContext context, ConditionConnaissance semanticObject) { genericSequencer.createSequence(context, semanticObject); @@ -196,7 +196,7 @@ public class GameSemanticSequencer extends AbstractDelegatingSemanticSequencer { * ConditionObjet returns ConditionObjet * * Constraint: - * (objet=ID comparateur=COMPARATEUR nombre=INT) + * (objet=[Objet|ID] comparateur=COMPARATEUR nombre=INT) */ protected void sequence_ConditionObjet(ISerializationContext context, ConditionObjet semanticObject) { if (errorAcceptor != null) { @@ -208,7 +208,7 @@ public class GameSemanticSequencer extends AbstractDelegatingSemanticSequencer { errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, GamePackage.Literals.CONDITION_OBJET__NOMBRE)); } SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); - feeder.accept(grammarAccess.getConditionObjetAccess().getObjetIDTerminalRuleCall_0_0(), semanticObject.getObjet()); + feeder.accept(grammarAccess.getConditionObjetAccess().getObjetObjetIDTerminalRuleCall_0_0_1(), semanticObject.eGet(GamePackage.Literals.CONDITION_OBJET__OBJET, false)); feeder.accept(grammarAccess.getConditionObjetAccess().getComparateurCOMPARATEURTerminalRuleCall_1_0(), semanticObject.getComparateur()); feeder.accept(grammarAccess.getConditionObjetAccess().getNombreINTTerminalRuleCall_2_0(), semanticObject.getNombre()); feeder.finish(); diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/services/GameGrammarAccess.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/services/GameGrammarAccess.java index 5e77df6..7c82662 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/services/GameGrammarAccess.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/services/GameGrammarAccess.java @@ -1564,13 +1564,14 @@ public class GameGrammarAccess extends AbstractElementFinder.AbstractGrammarElem private final Assignment cNegationAssignment_0 = (Assignment)cGroup.eContents().get(0); private final Keyword cNegationExclamationMarkKeyword_0_0 = (Keyword)cNegationAssignment_0.eContents().get(0); private final Assignment cConnaissanceAssignment_1 = (Assignment)cGroup.eContents().get(1); - private final RuleCall cConnaissanceIDTerminalRuleCall_1_0 = (RuleCall)cConnaissanceAssignment_1.eContents().get(0); + private final CrossReference cConnaissanceConnaissanceCrossReference_1_0 = (CrossReference)cConnaissanceAssignment_1.eContents().get(0); + private final RuleCall cConnaissanceConnaissanceIDTerminalRuleCall_1_0_1 = (RuleCall)cConnaissanceConnaissanceCrossReference_1_0.eContents().get(1); //ConditionConnaissance: - // negation='!'? connaissance=ID; + // negation='!'? connaissance=[Connaissance]; @Override public ParserRule getRule() { return rule; } - //negation='!'? connaissance=ID + //negation='!'? connaissance=[Connaissance] public Group getGroup() { return cGroup; } //negation='!'? @@ -1579,34 +1580,41 @@ public class GameGrammarAccess extends AbstractElementFinder.AbstractGrammarElem //'!' public Keyword getNegationExclamationMarkKeyword_0_0() { return cNegationExclamationMarkKeyword_0_0; } - //connaissance=ID + //connaissance=[Connaissance] public Assignment getConnaissanceAssignment_1() { return cConnaissanceAssignment_1; } + //[Connaissance] + public CrossReference getConnaissanceConnaissanceCrossReference_1_0() { return cConnaissanceConnaissanceCrossReference_1_0; } + //ID - public RuleCall getConnaissanceIDTerminalRuleCall_1_0() { return cConnaissanceIDTerminalRuleCall_1_0; } + public RuleCall getConnaissanceConnaissanceIDTerminalRuleCall_1_0_1() { return cConnaissanceConnaissanceIDTerminalRuleCall_1_0_1; } } public class ConditionObjetElements extends AbstractParserRuleElementFinder { private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "fr.n7.game.xtext.Game.ConditionObjet"); private final Group cGroup = (Group)rule.eContents().get(1); private final Assignment cObjetAssignment_0 = (Assignment)cGroup.eContents().get(0); - private final RuleCall cObjetIDTerminalRuleCall_0_0 = (RuleCall)cObjetAssignment_0.eContents().get(0); + private final CrossReference cObjetObjetCrossReference_0_0 = (CrossReference)cObjetAssignment_0.eContents().get(0); + private final RuleCall cObjetObjetIDTerminalRuleCall_0_0_1 = (RuleCall)cObjetObjetCrossReference_0_0.eContents().get(1); private final Assignment cComparateurAssignment_1 = (Assignment)cGroup.eContents().get(1); private final RuleCall cComparateurCOMPARATEURTerminalRuleCall_1_0 = (RuleCall)cComparateurAssignment_1.eContents().get(0); private final Assignment cNombreAssignment_2 = (Assignment)cGroup.eContents().get(2); private final RuleCall cNombreINTTerminalRuleCall_2_0 = (RuleCall)cNombreAssignment_2.eContents().get(0); //ConditionObjet: - // objet=ID comparateur=COMPARATEUR nombre=INT; + // objet=[Objet] comparateur=COMPARATEUR nombre=INT; @Override public ParserRule getRule() { return rule; } - //objet=ID comparateur=COMPARATEUR nombre=INT + //objet=[Objet] comparateur=COMPARATEUR nombre=INT public Group getGroup() { return cGroup; } - //objet=ID + //objet=[Objet] public Assignment getObjetAssignment_0() { return cObjetAssignment_0; } + //[Objet] + public CrossReference getObjetObjetCrossReference_0_0() { return cObjetObjetCrossReference_0_0; } + //ID - public RuleCall getObjetIDTerminalRuleCall_0_0() { return cObjetIDTerminalRuleCall_0_0; } + public RuleCall getObjetObjetIDTerminalRuleCall_0_0_1() { return cObjetObjetIDTerminalRuleCall_0_0_1; } //comparateur=COMPARATEUR public Assignment getComparateurAssignment_1() { return cComparateurAssignment_1; } @@ -1911,7 +1919,7 @@ public class GameGrammarAccess extends AbstractElementFinder.AbstractGrammarElem } //ConditionConnaissance: - // negation='!'? connaissance=ID; + // negation='!'? connaissance=[Connaissance]; public ConditionConnaissanceElements getConditionConnaissanceAccess() { return pConditionConnaissance; } @@ -1921,7 +1929,7 @@ public class GameGrammarAccess extends AbstractElementFinder.AbstractGrammarElem } //ConditionObjet: - // objet=ID comparateur=COMPARATEUR nombre=INT; + // objet=[Objet] comparateur=COMPARATEUR nombre=INT; public ConditionObjetElements getConditionObjetAccess() { return pConditionObjet; } diff --git a/workspace/fr.n7.game.xtext/src/fr/n7/game/xtext/Game.xtext b/workspace/fr.n7.game.xtext/src/fr/n7/game/xtext/Game.xtext index 80a548e..ecd6239 100644 --- a/workspace/fr.n7.game.xtext/src/fr/n7/game/xtext/Game.xtext +++ b/workspace/fr.n7.game.xtext/src/fr/n7/game/xtext/Game.xtext @@ -115,11 +115,11 @@ ConditionBoolean: ; ConditionConnaissance: - (negation='!')? connaissance=ID + (negation='!')? connaissance=[Connaissance] ; ConditionObjet: - objet=ID comparateur=COMPARATEUR nombre=INT + objet=[Objet] comparateur=COMPARATEUR nombre=INT ; terminal COMPARATEUR: diff --git a/workspace/fr.n7.game.xtext/xtend-gen/fr/n7/game/xtext/generator/.GameGenerator.xtendbin b/workspace/fr.n7.game.xtext/xtend-gen/fr/n7/game/xtext/generator/.GameGenerator.xtendbin index 8baf878ea014d457de1668460584a181b4b712a1..ea0cc798449dedc1325518f3bf58cab9476de007 100644 GIT binary patch delta 64 zcmaDO_(qU7z?+#xgn@&DgCV!WXd~}#W@aG0`80Dq6PV%4cApW%n5@rX4yH3X?7{SE G4o3h`&l3Is delta 64 zcmaDO_(qU7z?+#xgn@&DgTb}cU?cBtW@aG0`80Dq6PV%4cApW%n5@rX4yH3X?7{SE G4o3hpo)Pc>