Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

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  }