3 import java.io.BufferedReader; |
3 import java.io.BufferedReader; |
4 import java.io.FileNotFoundException; |
4 import java.io.FileNotFoundException; |
5 import java.io.FileReader; |
5 import java.io.FileReader; |
6 import java.io.IOException; |
6 import java.io.IOException; |
7 import java.io.OutputStream; |
7 import java.io.OutputStream; |
|
8 import java.util.ArrayList; |
8 |
9 |
9 import org.xmlpull.v1.XmlPullParser; |
10 import org.xmlpull.v1.XmlPullParser; |
10 import org.xmlpull.v1.XmlPullParserException; |
11 import org.xmlpull.v1.XmlPullParserException; |
11 import org.xmlpull.v1.XmlPullParserFactory; |
12 import org.xmlpull.v1.XmlPullParserFactory; |
12 import org.xmlpull.v1.XmlSerializer; |
13 import org.xmlpull.v1.XmlSerializer; |
16 import android.util.Xml; |
17 import android.util.Xml; |
17 |
18 |
18 public class Team implements Parcelable{ |
19 public class Team implements Parcelable{ |
19 |
20 |
20 public static final String DIRECTORY_TEAMS = "teams"; |
21 public static final String DIRECTORY_TEAMS = "teams"; |
|
22 // private static final Integer[] TEAM_COLORS = { |
|
23 // 0xffd12b42, /* red */ |
|
24 // 0xff4980c1, /* blue */ |
|
25 // 0xff6ab530, /* green */ |
|
26 // 0xffbc64c4, /* purple */ |
|
27 // 0xffe76d14, /* orange */ |
|
28 // 0xff3fb6e6, /* cyan */ |
|
29 // 0xffe3e90c, /* yellow */ |
|
30 // 0xff61d4ac, /* mint */ |
|
31 // 0xfff1c3e1, /* pink */ |
|
32 // /* add new colors here */ |
|
33 // }; |
|
34 |
|
35 private static final Integer[] TEAM_COLORS = { |
|
36 0xff0000, /* red */ |
|
37 0x00ff00, /* blue */ |
|
38 0x0000ff, /* green */ |
|
39 }; |
|
40 |
|
41 private static final int STATE_START = 0; |
|
42 private static final int STATE_ROOT = 1; |
|
43 private static final int STATE_HOG_ROOT = 2; |
21 |
44 |
22 public String name, grave, flag, voice, fort, hash; |
45 public String name, grave, flag, voice, fort, hash; |
23 |
46 |
24 public static int maxNumberOfHogs = 0; |
47 public static int maxNumberOfHogs = 0; |
25 public static int maxNumberOfTeams = 0; |
48 public static int maxNumberOfTeams = 0; |
52 return ret; |
78 return ret; |
53 }else{ |
79 }else{ |
54 return false; |
80 return false; |
55 } |
81 } |
56 } |
82 } |
57 |
83 |
58 |
84 public void setRandomColor(int[] illegalcolors){ |
59 public void sendToEngine(OutputStream os, int hogCount, int health, int color) throws IOException{ |
85 Integer[] colorsToPickFrom = TEAM_COLORS; |
60 os.write(String.format("eaddteam %s %d %s", hash, color, name).getBytes()); |
86 if(illegalcolors != null){ |
61 os.write(String.format("egrave %s", grave).getBytes()); |
87 ArrayList<Integer> colors = new ArrayList<Integer>(); |
62 os.write(String.format("efort %s", fort).getBytes()); |
88 for(int color : TEAM_COLORS){ |
63 os.write(String.format("evoicepack %s", voice).getBytes()); |
89 boolean validColor = true; |
64 os.write(String.format("eflag %s", flag).getBytes()); |
90 for(int illegal : illegalcolors){ |
65 |
91 if(color == illegal) validColor = false; |
|
92 } |
|
93 if(validColor) colors.add(color); |
|
94 } |
|
95 if(colors.size() != 0) colorsToPickFrom = colors.toArray(new Integer[1]); |
|
96 } |
|
97 int index = (int)Math.round(Math.random()*(colorsToPickFrom.length-1)); |
|
98 color = colorsToPickFrom[index]; |
|
99 } |
|
100 |
|
101 |
|
102 public void sendToEngine(EngineProtocolNetwork epn, int hogCount, int health) throws IOException{ |
|
103 epn.sendToEngine(String.format("eaddteam %s %d %s", hash, color, name)); |
|
104 epn.sendToEngine(String.format("egrave %s", grave)); |
|
105 epn.sendToEngine(String.format("efort %s", fort)); |
|
106 epn.sendToEngine(String.format("evoicepack %s", voice)); |
|
107 epn.sendToEngine(String.format("eflag %s", flag)); |
|
108 |
66 for(int i = 0; i < hogCount; i++){ |
109 for(int i = 0; i < hogCount; i++){ |
67 os.write(String.format("eaddhh %d %d %s", levels[i], health, hogNames[i]).getBytes()); |
110 epn.sendToEngine(String.format("eaddhh %d %d %s", levels[i], health, hogNames[i])); |
68 os.write(String.format("ehat %s", hats[i]).getBytes()); |
111 epn.sendToEngine(String.format("ehat %s", hats[i])); |
69 } |
112 } |
70 os.flush(); |
113 } |
71 } |
114 |
72 |
115 /* |
73 public static final int STATE_START = 0; |
116 * XML METHODS |
74 public static final int STATE_ROOT = 1; |
117 */ |
75 public static final int STATE_HOG_ROOT = 2; |
|
76 public static final int STATE_HOG_HAT = 3; |
|
77 public static final int STATE_HOG_NAME = 4; |
|
78 public static final int STATE_HOG_LEVEL = 5; |
|
79 |
118 |
80 /** |
119 /** |
81 * Read the xml file path and convert it to a Team object |
120 * Read the xml file path and convert it to a Team object |
82 * @param path absolute path to the xml file |
121 * @param path absolute path to the xml file |
83 * @return |
122 * @return |
179 XmlSerializer serializer = Xml.newSerializer(); |
218 XmlSerializer serializer = Xml.newSerializer(); |
180 try{ |
219 try{ |
181 serializer.setOutput(os, "UTF-8"); |
220 serializer.setOutput(os, "UTF-8"); |
182 serializer.startDocument("UTF-8", true); |
221 serializer.startDocument("UTF-8", true); |
183 serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); |
222 serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); |
184 |
223 |
185 serializer.startTag(null, "team"); |
224 serializer.startTag(null, "team"); |
|
225 serializer.startTag(null, "name"); |
|
226 serializer.text(name); |
|
227 serializer.endTag(null, "name"); |
|
228 serializer.startTag(null, "flag"); |
|
229 serializer.text(flag); |
|
230 serializer.endTag(null, "flag"); |
|
231 serializer.startTag(null, "fort"); |
|
232 serializer.text(fort); |
|
233 serializer.endTag(null, "fort"); |
|
234 serializer.startTag(null, "grave"); |
|
235 serializer.text(grave); |
|
236 serializer.endTag(null, "grave"); |
|
237 serializer.startTag(null, "voice"); |
|
238 serializer.text(voice); |
|
239 serializer.endTag(null, "voice"); |
|
240 serializer.startTag(null, "hash"); |
|
241 serializer.text(hash); |
|
242 serializer.endTag(null, "hash"); |
|
243 |
|
244 for(int i = 0; i < maxNumberOfHogs; i++){ |
|
245 serializer.startTag(null, "hog"); |
186 serializer.startTag(null, "name"); |
246 serializer.startTag(null, "name"); |
187 serializer.text(name); |
247 serializer.text(hogNames[i]); |
188 serializer.endTag(null, "name"); |
248 serializer.endTag(null, "name"); |
189 serializer.startTag(null, "flag"); |
249 serializer.startTag(null, "hat"); |
190 serializer.text(flag); |
250 serializer.text(hats[i]); |
191 serializer.endTag(null, "flag"); |
251 serializer.endTag(null, "hat"); |
192 serializer.startTag(null, "fort"); |
252 serializer.startTag(null, "level"); |
193 serializer.text(fort); |
253 serializer.text(String.valueOf(levels[i])); |
194 serializer.endTag(null, "fort"); |
254 serializer.endTag(null, "level"); |
195 serializer.startTag(null, "grave"); |
255 |
196 serializer.text(grave); |
256 serializer.endTag(null, "hog"); |
197 serializer.endTag(null, "grave"); |
257 } |
198 serializer.startTag(null, "voice"); |
|
199 serializer.text(voice); |
|
200 serializer.endTag(null, "voice"); |
|
201 serializer.startTag(null, "hash"); |
|
202 serializer.text(hash); |
|
203 serializer.endTag(null, "hash"); |
|
204 |
|
205 for(int i = 0; i < maxNumberOfHogs; i++){ |
|
206 serializer.startTag(null, "hog"); |
|
207 serializer.startTag(null, "name"); |
|
208 serializer.text(hogNames[i]); |
|
209 serializer.endTag(null, "name"); |
|
210 serializer.startTag(null, "hat"); |
|
211 serializer.text(hats[i]); |
|
212 serializer.endTag(null, "hat"); |
|
213 serializer.startTag(null, "level"); |
|
214 serializer.text(String.valueOf(levels[i])); |
|
215 serializer.endTag(null, "level"); |
|
216 |
|
217 serializer.endTag(null, "hog"); |
|
218 } |
|
219 serializer.endTag(null, "team"); |
258 serializer.endTag(null, "team"); |
220 serializer.endDocument(); |
259 serializer.endDocument(); |
221 serializer.flush(); |
260 serializer.flush(); |
222 |
261 |
223 } catch (IOException e) { |
262 } catch (IOException e) { |
224 e.printStackTrace(); |
263 e.printStackTrace(); |
225 }finally{ |
264 }finally{ |
226 try { |
265 try { |
227 os.close(); |
266 os.close(); |
228 } catch (IOException e) {} |
267 } catch (IOException e) {} |
229 } |
268 } |
230 } |
269 } |
|
270 /* |
|
271 * END XML METHODS |
|
272 */ |
|
273 |
|
274 |
|
275 |
|
276 /* |
|
277 * PARCABLE METHODS |
|
278 */ |
231 |
279 |
232 public int describeContents() { |
280 public int describeContents() { |
233 return 0; |
281 return 0; |
234 } |
282 } |
235 |
283 |
241 dest.writeString(fort); |
289 dest.writeString(fort); |
242 dest.writeString(hash); |
290 dest.writeString(hash); |
243 dest.writeStringArray(hats); |
291 dest.writeStringArray(hats); |
244 dest.writeStringArray(hogNames); |
292 dest.writeStringArray(hogNames); |
245 dest.writeIntArray(levels); |
293 dest.writeIntArray(levels); |
246 } |
294 dest.writeInt(color); |
247 |
295 dest.writeInt(hogCount); |
248 |
296 } |
|
297 |
|
298 |
249 public void readFromParcel(Parcel src){ |
299 public void readFromParcel(Parcel src){ |
250 name = src.readString(); |
300 name = src.readString(); |
251 grave = src.readString(); |
301 grave = src.readString(); |
252 flag = src.readString(); |
302 flag = src.readString(); |
253 voice = src.readString(); |
303 voice = src.readString(); |
254 fort = src.readString(); |
304 fort = src.readString(); |
255 hash = src.readString(); |
305 hash = src.readString(); |
256 src.readStringArray(hats); |
306 src.readStringArray(hats); |
257 src.readStringArray(hogNames); |
307 src.readStringArray(hogNames); |
258 src.readIntArray(levels); |
308 src.readIntArray(levels); |
|
309 color = src.readInt(); |
|
310 hogCount = src.readInt(); |
259 } |
311 } |
260 |
312 |
261 public static final Parcelable.Creator<Team> CREATOR = new Parcelable.Creator<Team>() { |
313 public static final Parcelable.Creator<Team> CREATOR = new Parcelable.Creator<Team>() { |
262 public Team createFromParcel(Parcel source) { |
314 public Team createFromParcel(Parcel source) { |
263 return new Team(source); |
315 return new Team(source); |
264 } |
316 } |
265 public Team[] newArray(int size) { |
317 public Team[] newArray(int size) { |
266 return new Team[size]; |
318 return new Team[size]; |
267 } |
319 } |
268 |
320 |
269 }; |
321 }; |
270 |
322 |
|
323 /* |
|
324 * END PARCABLE METHODS |
|
325 */ |
|
326 |
271 } |
327 } |