View Javadoc

1   /**
2    * Emohawk Bot, an implementation of the environment interface standard that 
3    * facilitates the connection between GOAL and Emohawk. 
4    * 
5    * Copyright (C) 2012 Emohawk Bot authors.
6    * 
7    * This program is free software: you can redistribute it and/or modify it under
8    * the terms of the GNU General Public License as published by the Free Software
9    * Foundation, either version 3 of the License, or (at your option) any later
10   * version.
11   * 
12   * This program is distributed in the hope that it will be useful, but WITHOUT
13   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14   * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
15   * details.
16   * 
17   * You should have received a copy of the GNU General Public License along with
18   * this program. If not, see <http://www.gnu.org/licenses/>.
19   */
20  
21  package nl.tudelft.goal.ut2004.environment;
22  
23  import java.util.HashMap;
24  
25  import cz.cuni.amis.pogamut.ut2004.bot.impl.UT2004BotController;
26  
27  import nl.tudelft.goal.EIS2Java.handlers.ActionHandler;
28  import nl.tudelft.goal.EIS2Java.handlers.AllPerceptPerceptHandler;
29  import nl.tudelft.goal.EIS2Java.handlers.DefaultActionHandler;
30  import nl.tudelft.goal.EIS2Java.handlers.PerceptHandler;
31  import nl.tudelft.goal.EIS2Java.translation.Translator;
32  import nl.tudelft.goal.unreal.environment.AbstractUnrealEnvironment;
33  import nl.tudelft.goal.unreal.translators.LocationTranslator;
34  import nl.tudelft.goal.unreal.translators.NavPointTranslator;
35  import nl.tudelft.goal.unreal.translators.RotationTranslator;
36  import nl.tudelft.goal.unreal.translators.TeamTranslator;
37  import nl.tudelft.goal.unreal.translators.UnrealIdTranslator;
38  import nl.tudelft.goal.unreal.translators.VelocityTranslator;
39  import nl.tudelft.goal.ut2004.agent.UT2004BotBehavior;
40  import nl.tudelft.goal.ut2004.translators.ItemTypeTranslator;
41  import nl.tudelft.goal.ut2004.translators.ComboTranslator;
42  import nl.tudelft.goal.ut2004.translators.FireModeTranslator;
43  import nl.tudelft.goal.ut2004.translators.FlagStateTranslator;
44  import nl.tudelft.goal.ut2004.translators.GameTypeTranslator;
45  import nl.tudelft.goal.ut2004.translators.CategoryTranslator;
46  import nl.tudelft.goal.ut2004.translators.NavigationStateTranslator;
47  import nl.tudelft.goal.ut2004.translators.NoneTranslator;
48  import nl.tudelft.goal.ut2004.translators.PerceptTranslator;
49  import nl.tudelft.goal.ut2004.translators.SelectorListTranslator;
50  import nl.tudelft.goal.ut2004.translators.SelectorTranslator;
51  import nl.tudelft.goal.ut2004.translators.UnrealIdOrLocationTranslator;
52  import nl.tudelft.goal.ut2004.translators.WeaponPrefListTranslator;
53  import nl.tudelft.goal.ut2004.translators.WeaponPrefTranslator;
54  import eis.exceptions.EntityException;
55  import eis.exceptions.ManagementException;
56  import eis.iilang.Identifier;
57  import eis.iilang.Parameter;
58  import eis.iilang.ParameterList;
59  
60  public class UT2004Environment extends AbstractUnrealEnvironment {
61  
62  	/**
63  	 * Generated serialVersionUID.
64  	 */
65  	private static final long serialVersionUID = 8240549393243585632L;
66  
67  	@Override
68  	protected void registerTranslators() {
69  
70  		Translator translator = Translator.getInstance();
71  
72  		/*
73  		 * Translators provided by the BaseUnrealEnvironment.
74  		 * 
75  		 * Please list these in lexical order.
76  		 */
77  
78  		LocationTranslator locationTranslator = new LocationTranslator();
79  		translator.registerJava2ParameterTranslator(locationTranslator);
80  		translator.registerParameter2JavaTranslator(locationTranslator);
81  
82  		/*
83  		 * To translate from Parameter2Java we are given an UnrealId. However we
84  		 * can not access the agents memory during translation. To work around
85  		 * this we store everything we have send to any agent. Hence the same
86  		 * object has to be used for both directions.
87  		 */
88  		NavPointTranslator navPointTranslator = new NavPointTranslator();
89  		translator.registerJava2ParameterTranslator(navPointTranslator);
90  		translator.registerParameter2JavaTranslator(navPointTranslator);
91  
92  		RotationTranslator rotationTranslator = new RotationTranslator();
93  		translator.registerJava2ParameterTranslator(rotationTranslator);
94  		translator.registerParameter2JavaTranslator(rotationTranslator);
95  
96  		TeamTranslator teamTranslator = new TeamTranslator();
97  		translator.registerJava2ParameterTranslator(teamTranslator);
98  		translator.registerParameter2JavaTranslator(teamTranslator);
99  
100 		UnrealIdTranslator unrealIdTranslator = new UnrealIdTranslator();
101 		translator.registerJava2ParameterTranslator(unrealIdTranslator);
102 		translator.registerParameter2JavaTranslator(unrealIdTranslator);
103 
104 		VelocityTranslator velocityTranslator = new VelocityTranslator();
105 		translator.registerJava2ParameterTranslator(velocityTranslator);
106 		translator.registerParameter2JavaTranslator(velocityTranslator);
107 		/*
108 		 * Translators provided by the UT2004 environment.
109 		 * 
110 		 * Please list these in lexical order.
111 		 */
112 
113 		CategoryTranslator itemTypeTranslator = new CategoryTranslator();
114 		translator.registerJava2ParameterTranslator(itemTypeTranslator);
115 
116 		ComboTranslator comboTranslator = new ComboTranslator();
117 		translator.registerParameter2JavaTranslator(comboTranslator);
118 
119 		FireModeTranslator fireModeTranslator = new FireModeTranslator();
120 		translator.registerJava2ParameterTranslator(fireModeTranslator);
121 		translator.registerParameter2JavaTranslator(fireModeTranslator);
122 
123 		FlagStateTranslator flagStateTranslator = new FlagStateTranslator();
124 		translator.registerJava2ParameterTranslator(flagStateTranslator);
125 
126 		GameTypeTranslator gameTypeTranslator = new GameTypeTranslator();
127 		translator.registerJava2ParameterTranslator(gameTypeTranslator);
128 
129 		ItemTypeTranslator categoryTranslator = new ItemTypeTranslator();
130 		translator.registerJava2ParameterTranslator(categoryTranslator);
131 		translator.registerParameter2JavaTranslator(categoryTranslator);
132 
133 		NavigationStateTranslator navigationStateTranslator = new NavigationStateTranslator();
134 		translator.registerJava2ParameterTranslator(navigationStateTranslator);
135 		
136 		NoneTranslator noneTranslator = new NoneTranslator();
137 		translator.registerJava2ParameterTranslator(noneTranslator);
138 
139 		PerceptTranslator perceptTranslator = new PerceptTranslator();
140 		translator.registerJava2ParameterTranslator(perceptTranslator);
141 
142 		SelectorListTranslator selectorListTranslator = new SelectorListTranslator();
143 		translator.registerParameter2JavaTranslator(selectorListTranslator);
144 
145 		SelectorTranslator selectorTranslator = new SelectorTranslator();
146 		translator.registerParameter2JavaTranslator(selectorTranslator);
147 
148 		UnrealIdOrLocationTranslator unrealIdOrLocationTranslator = new UnrealIdOrLocationTranslator();
149 		translator.registerParameter2JavaTranslator(unrealIdOrLocationTranslator);
150 
151 		WeaponPrefListTranslator weaponPrefListTranslator = new WeaponPrefListTranslator();
152 		translator.registerParameter2JavaTranslator(weaponPrefListTranslator);
153 
154 		WeaponPrefTranslator weaponPrefTranslator = new WeaponPrefTranslator();
155 		translator.registerParameter2JavaTranslator(weaponPrefTranslator);
156 	}
157 
158 	public static void main(String[] args) throws ManagementException {
159 		HashMap<String, Parameter> map = new HashMap<String, Parameter>();
160 		map.put("botNames", new ParameterList(new Identifier("Test")));
161 		new UT2004Environment().init(map);
162 
163 	}
164 
165 	@Override
166 	protected Class<UT2004BotBehavior> getControlerClass() {
167 		return UT2004BotBehavior.class;
168 	}
169 
170 	@Override
171 	protected PerceptHandler createPerceptHandler(UT2004BotController controller) throws EntityException {
172 		return new AllPerceptPerceptHandler(controller);
173 	}
174 
175 	@Override
176 	protected ActionHandler createActionHandler(UT2004BotController controller) throws EntityException {
177 		return new DefaultActionHandler(controller);
178 	}
179 
180 }