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 }