1 package nl.tudelft.goal.ut2004.translators;
2
3
4 import cz.cuni.amis.pogamut.base3d.worldview.object.Location;
5 import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId;
6 import eis.iilang.Function;
7 import eis.iilang.Parameter;
8 import nl.tudelft.goal.EIS2Java.exception.TranslationException;
9 import nl.tudelft.goal.EIS2Java.translation.Parameter2Java;
10 import nl.tudelft.goal.EIS2Java.translation.Translator;
11 import nl.tudelft.goal.ut2004.selector.ALocation;
12 import nl.tudelft.goal.ut2004.selector.ClosestEnemy;
13 import nl.tudelft.goal.ut2004.selector.ClosestFriendly;
14 import nl.tudelft.goal.ut2004.selector.ClosestFriendlyWithLinkGun;
15 import nl.tudelft.goal.ut2004.selector.ContextSelector;
16 import nl.tudelft.goal.ut2004.selector.EnemyFlagCarrier;
17 import nl.tudelft.goal.ut2004.selector.FriendlyFlagCarrier;
18 import nl.tudelft.goal.ut2004.selector.APlayer;
19
20 public class SelectorTranslator implements Parameter2Java<ContextSelector> {
21
22 @Override
23 public ContextSelector translate(Parameter parameter) throws TranslationException {
24
25 if(parameter instanceof Function){
26 Location location = Translator.getInstance().translate2Java(parameter, Location.class);
27 return new ALocation(location);
28 }
29
30 String selectorString = Translator.getInstance().translate2Java(parameter, String.class);
31
32 if (selectorString.equals("closestEnemy")) {
33 return new ClosestEnemy();
34 } else if (selectorString.equals("closestFriendly")) {
35 return new ClosestFriendly();
36 } else if (selectorString.equals("closestFriendlyWithLinkGun")){
37 return new ClosestFriendlyWithLinkGun();
38 } else if (selectorString.equals("enemyFlagCarrier")) {
39 return new EnemyFlagCarrier();
40 } else if (selectorString.equals("friendlyFlagCarrier")) {
41 return new FriendlyFlagCarrier();
42 }
43
44 UnrealId id = Translator.getInstance().translate2Java(parameter, UnrealId.class);
45
46 return new APlayer(id);
47 }
48
49 @Override
50 public Class<ContextSelector> translatesTo() {
51 return ContextSelector.class;
52 }
53
54 }