soc.message
Class SOCMoveRobber

java.lang.Object
  extended by soc.message.SOCMessage
      extended by soc.message.SOCMoveRobber
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, SOCMessageForGame

public class SOCMoveRobber
extends SOCMessage
implements SOCMessageForGame

This message (from client to server) means that a client player wants to move the robber or pirate ship, or (from server to all players) a player has moved the robber or pirate ship.

From the server, the message will be followed by other messages about gaining/losing resources. So for this message, the client should only call SOCBoard.setRobberHex(int, boolean) and not SOCGame.moveRobber(int, int).

Once the robber is placed on the board, it cannot be taken off the board. The pirate can be taken off by sending coordinate = 0.

This message uses positive coordinates when moving the robber, and negative when moving the pirate. Moving the pirate to hex 0x0104 is done with a SOCMoveRobber(-0x0104) message, which would cause the client to call board.setPirateHex(0x0104, boolean).

Author:
Robert S Thomas
See Also:
SOCMovePiece, Serialized Form

Field Summary
private  int coordinates
          the hex coordinates of the piece (positive for robber, negative for pirate)
private  java.lang.String game
          the name of the game
private  int playerNumber
          the number of the player moving the robber
private static long serialVersionUID
           
 
Fields inherited from class soc.message.SOCMessage
ACCEPTOFFER, ADMINPING, ADMINRESET, AUTHREQUEST, BANKTRADE, BCASTTEXTMSG, BOARDLAYOUT, BOARDLAYOUT2, BOARDSPECIALEDGE, BUILDREQUEST, BUYCARDREQUEST, CANCELBUILDREQUEST, CHANGEFACE, CHANNELS, CHOOSEPLAYER, CHOOSEPLAYERREQUEST, CLEAROFFER, CLEARTRADEMSG, CREATEACCOUNT, DEBUGFREEPLACE, DELETECHANNEL, DELETEGAME, DEVCARDACTION, DEVCARDCOUNT, DICERESULT, DICERESULTRESOURCES, DISCARD, DISCARDREQUEST, DISCOVERYPICK, ENDTURN, FIRSTPLAYER, GAME_NONE, GAMEMEMBERS, GAMEOPTIONGETDEFAULTS, GAMEOPTIONGETINFOS, GAMEOPTIONINFO, GAMES, GAMESERVERTEXT, GAMESTATE, GAMESTATS, GAMESWITHOPTIONS, GAMETEXTMSG, IMAROBOT, INVENTORYITEMACTION, JOIN, JOINAUTH, JOINGAME, JOINGAMEAUTH, LARGESTARMY, LASTSETTLEMENT, LEAVE, LEAVEALL, LEAVEGAME, LEGALEDGES, LOCALIZEDSTRINGS, LONGESTROAD, MAKEOFFER, MEMBERS, messageType, MONOPOLYPICK, MOVEPIECE, MOVEPIECEREQUEST, MOVEROBBER, NEWCHANNEL, NEWGAME, NEWGAMEWITHOPTIONS, NEWGAMEWITHOPTIONSREQUEST, NULLMESSAGE, PICKRESOURCES, PICKRESOURCESREQUEST, PIECEVALUE, PLAYDEVCARDREQUEST, PLAYERELEMENT, PLAYERELEMENTS, PLAYERSTATS, POTENTIALSETTLEMENTS, PUTPIECE, REJECTCONNECTION, REJECTOFFER, REMOVEPIECE, RESETBOARDAUTH, RESETBOARDREJECT, RESETBOARDREQUEST, RESETBOARDVOTE, RESETBOARDVOTEREQUEST, RESOURCECOUNT, REVEALFOGHEX, ROBOTDISMISS, ROBOTJOINGAMEREQUEST, ROLLDICE, ROLLDICEPROMPT, ROLLDICEREQUEST, SCENARIOINFO, sep, sep_char, sep2, sep2_char, SERVERPING, SETPLAYEDDEVCARD, SETSEATLOCK, SETSPECIALITEM, SETTURN, SETUPDONE, SIMPLEACTION, SIMPLEREQUEST, SITDOWN, STARTGAME, STATUSMESSAGE, SVPTEXTMSG, TEXTMSG, TIMINGPING, TURN, UPDATEROBOTPARAMS, VERSION
 
Constructor Summary
SOCMoveRobber(java.lang.String na, int pn, int co)
          create a MoveRobber message
 
Method Summary
 int getCoordinates()
          Get the robber or pirate's new location.
 java.lang.String getGame()
          Name of game this message is for.
 int getPlayerNumber()
           
static SOCMoveRobber parseDataStr(java.lang.String s)
          parse the command string into a MoveRobber message
 java.lang.String toCmd()
          Command string: MOVEROBBER sep game sep2 playerNumber sep2 coordinates
static java.lang.String toCmd(java.lang.String na, int pn, int co)
          Command string: MOVEROBBER sep game sep2 playerNumber sep2 coordinates
 java.lang.String toString()
          Simple human-readable representation, used for debug purposes.
 
Methods inherited from class soc.message.SOCMessage
arrayIntoStringBuf, enumIntoStringBuf, getClassNameShort, getMaximumVersion, getMinimumVersion, getType, isSingleLineAndSafe, isSingleLineAndSafe, toMsg
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface soc.message.SOCMessageForGame
getType
 

Field Detail

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values

game

private java.lang.String game
the name of the game


playerNumber

private int playerNumber
the number of the player moving the robber


coordinates

private int coordinates
the hex coordinates of the piece (positive for robber, negative for pirate)

Constructor Detail

SOCMoveRobber

public SOCMoveRobber(java.lang.String na,
                     int pn,
                     int co)
create a MoveRobber message

Parameters:
na - name of the game
pn - player number
co - hex coordinates: positive for robber, negative for pirate
Method Detail

getGame

public java.lang.String getGame()
Description copied from interface: SOCMessageForGame
Name of game this message is for. Must not be null if message is in per-game structures or code.

At the server, the message treater dispatches incoming SOCMessageForGames based on their getGame():

Specified by:
getGame in interface SOCMessageForGame
Returns:
the name of the game
See Also:
SOCMessage.GAME_NONE

getPlayerNumber

public int getPlayerNumber()
Returns:
the player number

getCoordinates

public int getCoordinates()
Get the robber or pirate's new location.

Returns:
the hex coordinates: positive for robber, negative or 0 for pirate

toCmd

public java.lang.String toCmd()
Command string: MOVEROBBER sep game sep2 playerNumber sep2 coordinates

Specified by:
toCmd in class SOCMessage
Returns:
the command string

toCmd

public static java.lang.String toCmd(java.lang.String na,
                                     int pn,
                                     int co)
Command string: MOVEROBBER sep game sep2 playerNumber sep2 coordinates

Parameters:
na - the name of the game
pn - player number
co - coordinates
Returns:
the command string

parseDataStr

public static SOCMoveRobber parseDataStr(java.lang.String s)
parse the command string into a MoveRobber message

Parameters:
s - the String to parse
Returns:
a SOCMoveRobber message, or null of the data is garbled

toString

public java.lang.String toString()
Description copied from class: SOCMessage
Simple human-readable representation, used for debug purposes.

Specified by:
toString in class SOCMessage
Returns:
a human readable form of the message