1 import java.awt.*;
2 import java.applet.*;
3 import javax.swing.*;
4 import java.awt.image.*;
5 import java.awt.geom.*;
6 import java.net.*;
7 import java.io.*;
8
15 public class PlayerSaver
16 {
17
20 Player p;
21
24 protected boolean fin;
25
28 StringBuffer s;
29
30
36 public PlayerSaver(Player p)
37 {
38 this.p = p;
39 s = new StringBuffer();
40 startWriting();
41 }
42
47 public String toString()
48 {
49 return s.toString();
50 }
51
54 private void startWriting()
55 {
56 s.append("<?Player>\n");
57 s.append("\t<name>" + p.getName() + "</name>\n");
58 s.append("\t<money>" + p.getMoney() + "</money>\n");
59 s.append(handleMonsterVector());
60 s.append(handleItemVector());
61 s.append(handleBadgeVector());
62 s.append("</player>");
63 }
64
69 private String handleMonsterVector()
70 {
71 Monster m;
72 StringBuffer sb = new StringBuffer("\t<monsterVector type=home>\n");
73 for(int i = 0; i < p.hmon.size(); i++)
74 {
75 m = (Monster)p.hmon.get(i);
76 sb.append(handleMonster(m));
77 }
78 sb.append("\t</monsterVector>\n");
79 sb.append("\t<monsterVector type=hand>\n");
80 for(int i = 0; i < p.mon.size(); i++)
81 {
82 m = (Monster)p.mon.get(i);
83 sb.append(handleMonster(m));
84 }
85 sb.append("\t</monsterVector>\n");
86 return sb.toString();
87 }
88
94 private String handleMonster(Monster m)
95 {
96 StringBuffer sb = new StringBuffer();
97 sb.append("\t\t<monster>\n");
98 String attacks[] = m.getAttacks();
99 switch(m.getKind())
100 {
101 case Monster.ELECTRIC:
102 {
103 sb.append("\t\t\t<kind>Electric</kind>\n");
104 sb.append("\t\t\t<name>" + m.getName() + "</name>\n");
105 sb.append("\t\t\t<hp>" + m.getHP() + "</hp>\n");
106 sb.append("\t\t\t<defp>" + m.getDefense() + "</defp>\n");
107 sb.append("\t\t\t<attp>" + m.getAttack() + "</attp>\n");
108 sb.append("\t\t\t<exp>" + m.getExperience() + "</exp>\n");
109 sb.append("\t\t\t<level>" + m.getLevel() + "</level>\n");
110 for(int i = 0; i < attacks.length && attacks[i] != null; i++)
111 {
112 if(attacks[i].equalsIgnoreCase(ElectricMon.A1))
113 {
114 sb.append("\t\t\t<attack>A1</attack>\n");
115 }
116 else if(attacks[i].equalsIgnoreCase(ElectricMon.A2))
117 {
118 sb.append("\t\t\t<attack>A2</attack>\n");
119 }
120 else if(attacks[i].equalsIgnoreCase(ElectricMon.A3))
121 {
122 sb.append("\t\t\t<attack>A3</attack>\n");
123 }
124 else if(attacks[i].equalsIgnoreCase(ElectricMon.A4))
125 {
126 sb.append("\t\t\t<attack>A4</attack>\n");
127 }
128 else if(attacks[i].equalsIgnoreCase(ElectricMon.A5))
129 {
130 sb.append("\t\t\t<attack>A5</attack>\n");
131 }
132 else if(attacks[i].equalsIgnoreCase(ElectricMon.A6))
133 {
134 sb.append("\t\t\t<attack>A6</attack>\n");
135 }
136 }
137 break;
138 }
139 case Monster.EARTH:
140 {
141 sb.append("\t\t\t<kind>Earth</kind>\n");
142 sb.append("\t\t\t<name>" + m.getName() + "</name>\n");
143 sb.append("\t\t\t<hp>" + m.getHP() + "</hp>\n");
144 sb.append("\t\t\t<defp>" + m.getDefense() + "</defp>\n");
145 sb.append("\t\t\t<attp>" + m.getAttack() + "</attp>\n");
146 sb.append("\t\t\t<exp>" + m.getExperience() + "</exp>\n");
147 sb.append("\t\t\t<level>" + m.getLevel() + "</level>\n");
148 for(int i = 0; i < attacks.length && attacks[i] != null; i++)
149 {
150 if(attacks[i].equalsIgnoreCase(EarthMon.A1))
151 {
152 sb.append("\t\t\t<attack>A1</attack>\n");
153 }
154 else if(attacks[i].equalsIgnoreCase(EarthMon.A2))
155 {
156 sb.append("\t\t\t<attack>A2</attack>\n");
157 }
158 else if(attacks[i].equalsIgnoreCase(EarthMon.A3))
159 {
160 sb.append("\t\t\t<attack>A3</attack>\n");
161 }
162 else if(attacks[i].equalsIgnoreCase(EarthMon.A4))
163 {
164 sb.append("\t\t\t<attack>A4</attack>\n");
165 }
166 else if(attacks[i].equalsIgnoreCase(EarthMon.A5))
167 {
168 sb.append("\t\t\t<attack>A5</attack>\n");
169 }
170 else if(attacks[i].equalsIgnoreCase(EarthMon.A6))
171 {
172 sb.append("\t\t\t<attack>A6</attack>\n");
173 }
174 }
175 break;
176 }
177 case Monster.FIRE:
178 {
179 sb.append("\t\t\t<kind>Fire</kind>\n");
180 sb.append("\t\t\t<name>" + m.getName() + "</name>\n");
181 sb.append("\t\t\t<hp>" + m.getHP() + "</hp>\n");
182 sb.append("\t\t\t<defp>" + m.getDefense() + "</defp>\n");
183 sb.append("\t\t\t<attp>" + m.getAttack() + "</attp>\n");
184 sb.append("\t\t\t<exp>" + m.getExperience() + "</exp>\n");
185 sb.append("\t\t\t<level>" + m.getLevel() + "</level>\n");
186 for(int i = 0; i < attacks.length && attacks[i] != null; i++)
187 {
188 if(attacks[i].equalsIgnoreCase(FireMon.A1))
189 {
190 sb.append("\t\t\t<attack>A1</attack>\n");
191 }
192 else if(attacks[i].equalsIgnoreCase(FireMon.A2))
193 {
194 sb.append("\t\t\t<attack>A2</attack>\n");
195 }
196 else if(attacks[i].equalsIgnoreCase(FireMon.A3))
197 {
198 sb.append("\t\t\t<attack>A3</attack>\n");
199 }
200 else if(attacks[i].equalsIgnoreCase(FireMon.A4))
201 {
202 sb.append("\t\t\t<attack>A4</attack>\n");
203 }
204 else if(attacks[i].equalsIgnoreCase(FireMon.A5))
205 {
206 sb.append("\t\t\t<attack>A5</attack>\n");
207 }
208 else if(attacks[i].equalsIgnoreCase(FireMon.A6))
209 {
210 sb.append("\t\t\t<attack>A6</attack>\n");
211 }
212 }
213 break;
214 }
215 case Monster.WATER:
216 {
217 sb.append("\t\t\t<kind>Water</kind>\n");
218 sb.append("\t\t\t<name>" + m.getName() + "</name>\n");
219 sb.append("\t\t\t<hp>" + m.getHP() + "</hp>\n");
220 sb.append("\t\t\t<defp>" + m.getDefense() + "</defp>\n");
221 sb.append("\t\t\t<attp>" + m.getAttack() + "</attp>\n");
222 sb.append("\t\t\t<exp>" + m.getExperience() + "</exp>\n");
223 sb.append("\t\t\t<level>" + m.getLevel() + "</level>\n");
224 for(int i = 0; i < attacks.length && attacks[i] != null; i++)
225 {
226 if(attacks[i].equalsIgnoreCase(WaterMon.A1))
227 {
228 sb.append("\t\t\t<attack>A1</attack>\n");
229 }
230 else if(attacks[i].equalsIgnoreCase(WaterMon.A2))
231 {
232 sb.append("\t\t\t<attack>A2</attack>\n");
233 }
234 else if(attacks[i].equalsIgnoreCase(WaterMon.A3))
235 {
236 sb.append("\t\t\t<attack>A3</attack>\n");
237 }
238 else if(attacks[i].equalsIgnoreCase(WaterMon.A4))
239 {
240 sb.append("\t\t\t<attack>A4</attack>\n");
241 }
242 else if(attacks[i].equalsIgnoreCase(WaterMon.A5))
243 {
244 sb.append("\t\t\t<attack>A5</attack>\n");
245 }
246 else if(attacks[i].equalsIgnoreCase(WaterMon.A6))
247 {
248 sb.append("\t\t\t<attack>A6</attack>\n");
249 }
250 }
251 break;
252 }
253 case Monster.GAS:
254 {
255 sb.append("\t\t\t<kind>Gas</kind>\n");
256 sb.append("\t\t\t<name>" + m.getName() + "</name>\n");
257 sb.append("\t\t\t<hp>" + m.getHP() + "</hp>\n");
258 sb.append("\t\t\t<defp>" + m.getDefense() + "</defp>\n");
259 sb.append("\t\t\t<attp>" + m.getAttack() + "</attp>\n");
260 sb.append("\t\t\t<exp>" + m.getExperience() + "</exp>\n");
261 sb.append("\t\t\t<level>" + m.getLevel() + "</level>\n");
262 for(int i = 0; i < attacks.length && attacks[i] != null; i++)
263 {
264 if(attacks[i].equalsIgnoreCase(GasMon.A1))
265 {
266 sb.append("\t\t\t<attack>A1</attack>\n");
267 }
268 else if(attacks[i].equalsIgnoreCase(GasMon.A2))
269 {
270 sb.append("\t\t\t<attack>A2</attack>\n");
271 }
272 else if(attacks[i].equalsIgnoreCase(GasMon.A3))
273 {
274 sb.append("\t\t\t<attack>A3</attack>\n");
275 }
276 else if(attacks[i].equalsIgnoreCase(GasMon.A4))
277 {
278 sb.append("\t\t\t<attack>A4</attack>\n");
279 }
280 else if(attacks[i].equalsIgnoreCase(GasMon.A5))
281 {
282 sb.append("\t\t\t<attack>A5</attack>\n");
283 }
284 else if(attacks[i].equalsIgnoreCase(GasMon.A6))
285 {
286 sb.append("\t\t\t<attack>A6</attack>\n");
287 }
288 }
289 break;
290 }
291 }
292 sb.append("\t\t</monster>\n");
293 return sb.toString();
294 }
295
296
301 private String handleItemVector()
302 {
303 Item it;
304 StringBuffer sb = new StringBuffer("\t<itemVector>\n");
305 for(int i = 0; i < p.items.size(); i++)
306 {
307 it = (Item)p.items.get(i);
308 sb.append(handleItem(it));
309 }
310 sb.append("</itemVector>\n");
311 return sb.toString();
312 }
313
319 private String handleItem(Item it)
320 {
321 StringBuffer sb = new StringBuffer("\t\t<item>\n");
322 String kind = null;
323 switch(it.getBrand())
324 {
325 case Item.POTION:
326 {
327 switch(((PotionItem)it).getSubBrand())
328 {
329 case PotionItem.HPUPFULL:
330 {
331 kind = "HPUPFULL";
332 break;
333 }
334 case PotionItem.HPUPHALF:
335 {
336 kind = "HPUPHALF";
337 break;
338 }
339 case PotionItem.HPUPTHIRD:
340 {
341 kind = "HPUPTHIRD";
342 break;
343 }
344 case PotionItem.ATTUP:
345 {
346 kind = "ATTUP";
347 break;
348 }
349 case PotionItem.DEFUP:
350 {
351 kind = "DEFUP";
352 break;
353 }
354 }
355 sb.append("\t\t\t<potion>" + kind + "</potion>\n");
356 break;
357 }
358 case Item.MONSTERBALL:
359 {
360 switch(((MonsterBallItem)it).getSubBrand())
361 {
362 case MonsterBallItem.NORMAL:
363 {
364 kind = "Normal";
365 break;
366 }
367 case MonsterBallItem.MASTER:
368 {
369 kind = "MASTER";
370 break;
371 }
372 }
373 sb.append("\t\t\t<monsterBall>" + kind + "</monsterBall>\n");
374 break;
375 }
376 }
377 sb.append("\t\t\t<quantity>" + it.getItemCount() + "</quantity>\n");
378 sb.append("\t\t</item>\n");
379 return sb.toString();
380 }
381
386 private String handleBadgeVector()
387 {
388 StringBuffer sb = new StringBuffer("\t<badgeVector>\n");
389 for(int i = 0; i < p.badges.size(); i++)
390 {
391 sb.append("\t\t<badge>" + (String)p.badges.get(i) + "</badge>\n");
392 }
393 sb.append("\t</badgeVector>\n");
394 return sb.toString();
395 }
396
397
400 public static void main(String args[])
401 {
402 try
403 {
404 BufferedReader in = new BufferedReader(new FileReader("maps/Default.pml"));
405 PlayerLoader pload = new PlayerLoader(in);
406 Player pl = pload.getPlayer();
407 PlayerSaver ps = new PlayerSaver(pl);
408 StringBuffer s = new StringBuffer(ps.toString());
409 System.out.println(s.toString());
410 }
411 catch(Exception ee) { ee.printStackTrace(); }
412 }
413 }