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

Quick Search    Search Deep

Source code: org/zazof/jteg/StartMessage.java


1   /**
2    *
3    *  An observer gets this messages "start=..." when it logs in
4    *
5    *  Message that processes "start=" events.
6    *  This message is valid for following protocols:
7    *    version 3: OK
8    *    version 4: ?
9    *    version 5: ?
10   *
11   *  Content = "start=player_name,color,player_id,x2,x3,x4,x5,x6(/player_name,y0,y1,y2,y3,y4,y5,y6)+"
12   *
13   * @author Jef De Geeter
14   * @author Yves Vandewoude
15   */
16  
17  
18  package org.zazof.jteg;
19  
20  import java.util.StringTokenizer;
21  import java.util.Vector;
22  
23  public class StartMessage extends Message{
24  
25    public StartMessage(Message nextMessage){
26      setNextMessage(nextMessage);
27    }
28  
29  
30    public Message decodeMessage(String messageDescription)
31      throws UnknownMessageException
32    {
33      String firstToken = (new StringTokenizer(messageDescription,"=")).nextToken();    
34      if (!(firstToken.equals("start")))
35      {
36        // Not for me...
37        if (this.hasNextMessage())
38          {
39            return getNextMessage().decodeMessage(messageDescription);
40          }
41        throw new UnknownMessageException(messageDescription);
42      }
43      else
44      {
45        if (DEBUG) System.out.println("Created StartMessage:" + messageDescription);
46        StringTokenizer st = new StringTokenizer(messageDescription, "=/");
47        st.nextToken(); //start
48        while(st.hasMoreTokens()){
49          $help.add(new PlayerHelp(st.nextToken()));
50          $counter++;
51        }  
52        return this;
53      }
54    }
55  
56  
57    public String constructMessageString(String[] messageParts)
58      throws UnknownMessageException
59    {
60      if (!(messageParts[0]).equals("startgame"))
61      {
62        // Not for me...
63        if (this.hasNextMessage())
64          {
65            return getNextMessage().constructMessageString(messageParts);
66          }
67        throw new UnknownMessageException("No String could be constructed for a message with this parameter: " + messageParts[0]);
68      }
69      else
70      {
71        return ("start");
72      }
73    }
74  
75  
76    /**
77     * @return "start"
78     */
79    public String getMessageName(){
80      return "start";
81    }
82  
83    /**
84     * returns true if there is more player information in this message
85     */
86    public boolean hasMoreInformation(){
87      return ($index < $counter);
88    }
89  
90    /**
91     * resets the information pointer, so you could start back at the beginning
92       */
93    public void resetInformation(){
94      $index = 0;
95    }
96  
97    /**
98     * if you want to access the next information object
99     */
100   public void nextInformation(){
101     $index++;
102   }
103 
104   /**
105     * @return name of the player of the current information item
106    */
107   public String getPlayerName(){
108     return ((PlayerHelp)$help.elementAt($index)).getPlayerName();
109   }  
110 
111   /**
112    * @return color of the player of the current information item
113    */
114   public int getPlayerColor(){
115     return ((PlayerHelp)$help.elementAt($index)).getPlayerColor();
116   }
117 
118   /**
119    * @return id of the player of the current information item
120    */
121   public int getPlayerID(){
122     return ((PlayerHelp)$help.elementAt($index)).getPlayerID();
123   }
124 
125   // vector help contains several (counter) PlayerHelp objects.
126   private Vector $help = new Vector(6); 
127   // counter counts the number of PlayerHelp objects held by the vector help.
128   private int $counter = 0;
129   // index is used to access the current PlayerHelp object
130   private int $index = 0;
131   private static final boolean DEBUG = false;
132 }
133