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