Source code: org/zazof/jtegServer/TropasMH.java
1 package org.zazof.jtegServer;
2
3 import java.util.*;
4 import org.apache.log4j.Category;
5
6 /**
7 * This MessageHandler process "tropas" messages.
8 */
9 public class TropasMH extends MessageHandler{
10
11 public TropasMH(){
12 }
13
14 protected void processMessage(Message m){
15 // get the content of the message
16 StringTokenizer content = m.getContentStringTokenizer(",");
17 Country src = m.getWorld().getCountry(Integer.parseInt(content.nextToken()));
18 Country dest = m.getWorld().getCountry(Integer.parseInt(content.nextToken()));
19 int armies = Integer.parseInt(content.nextToken());
20 log.debug("source country: " + src.getName() + ", dest country: " + dest.getName() + ", armies: " + armies);
21
22 // check if the content is valid
23 // check if the sending player is also the owner of both countries
24 if (m.getPlayer() != src.getOwner() || m.getPlayer() != dest.getOwner()){
25 // invalid
26 log.info("illegal tropas message: owner problem (" + m.getContent() + ")");
27 m.getPlayer().sendMessage("error=tropas");
28 return;
29 }
30 // check the number of armies
31 if (!(src.getArmies() > armies)){
32 // invalid
33 log.info("illegal tropas message: armies problem (" + m.getContent() + ")");
34 m.getPlayer().sendMessage("error=tropas");
35 return;
36 }
37
38 // update the model
39 src.removeArmies(armies);
40 dest.addArmies(armies);
41
42 // send a message to all the clients
43 StringBuffer sb = new StringBuffer("pais=");
44 sb.append(src.getCountryID()).append(",");
45 sb.append(m.getPlayer().getID()).append(",");
46 sb.append(src.getArmies()).append(";pais=");
47 sb.append(dest.getCountryID()).append(",");
48 sb.append(m.getPlayer().getID()).append(",");
49 sb.append(dest.getArmies());
50 m.getGameController().getPlayerContainer().sendMessage(sb.toString());
51 }
52
53 static Category log = Category.getInstance("gameplay.TropasMH");
54 }