rcssjava
Class WorldState

java.lang.Object
  extended by rcssjava.WorldState
All Implemented Interfaces:
java.io.Serializable

public class WorldState
extends java.lang.Object
implements java.io.Serializable

Contains all information relevant to the instantaneous state of a game including the positions and velocities of the players and the ball. The world state can be from the perspective of the left or right sides, in which case all coordinates are in team-centric coordinates. If no side is specified, the concepts of "our team" and "opponent team" don't make sense; all coordinates are from the global (same as left team's) perspective. Using team-centric functions without setting a team has undefined and possibly very bad consequences.

See Also:
Serialized Form

Constructor Summary
WorldState(ServerParams SP)
          Constructs a world state with the specified server parameters.
WorldState(ServerParams SP, int side)
          Constructs a world state from the given perspective
 
Method Summary
 WorldState copy(WorldState ws)
          Deep copy another world state into this
 VecPosition getBallPosition()
          Get position of the ball
 VecPosition getBallVelocity()
          Get velocity of the ball
 int getGoalDifference()
          Get difference between our score and opponent's score
 int getHeteroPlayerType(int id)
          Get heterogenous player type of the given player
 int getLeftScore()
          Get score of left team
 java.lang.String getLeftTeamName()
          Get left team's name
 int getOpponentID(int unum)
          Get player ID of opponent with given uniform number
 int getOppScore()
          Get score of opponent team
 int getOppSide()
          Get opponent's side
 java.lang.String getOppTeamName()
          Get opponent team's name
 int getOurScore()
          Get score of our team
 int getOurSide()
          Get perspective
 java.lang.String getOurTeamName()
          Get our team's name
 double getPlayerBodyAngle(int id)
          Get body angle of the given player
 double getPlayerNeckAngle(int id)
          Get neck angle of the given player
 VecPosition getPlayerPosition(int id)
          Get position of given player
 VecPosition getPlayerVelocity(int id)
          Get velocity of the given player
 int getPlayMode()
          Get play mode
 java.lang.String getPlayModeString()
          Get play mode as String
 VecPosition getPosition(int id)
          Get position of given object
 int getRightScore()
          Get score of right team
 java.lang.String getRightTeamName()
          Get right team's name
 int getScore(int side)
          Get score of given team
 int getSideFromTeamName(java.lang.String teamName)
          Get side from team name
 int getTeammateID(int unum)
          Get player ID of teammate with given uniform number
 java.lang.String getTeamName(int side)
          Get our team name for given side
 java.lang.String getTeamNameFromPlayer(int id)
          Get team name of given player
 int getTime()
          Get current cycle
 int getTimeSinceSeenBall()
          Get number of cycles that have passed since the ball information was updated
 int getTimeSinceSeenPlayer(int id)
          Get number of cycles that have passed since the information for the given player was updated
 VecPosition getVelocity(int id)
          Get velocity of the given object
 boolean isBallKickableBy(int id)
          Is the ball close enough to the given player to be kicked?
 boolean isOnSidelines(int id)
          Is player "dead" or waiting on sidelines?
 boolean isOpponent(int id)
          Is player our opponent?
 boolean isTeammate(int id)
          Is player our teammate?
 void setLeftScore(int score)
          Set score of left team
 void setLeftTeamName(java.lang.String teamName)
          Set name of left team
 void setOppScore(int score)
          Set score of opponent team
 void setOppTeamName(java.lang.String teamName)
          Set opponent team's name
 void setOurScore(int score)
          Set score of our team
 void setOurTeamName(java.lang.String teamName)
          Set our team's name
 void setPlayMode(int playMode)
          Set play mode
 void setRightScore(int score)
          Set score of right team
 void setRightTeamName(java.lang.String teamName)
          Set name of left team
 void setScore(int side, int score)
          Set score of given team
 void setSide(int side)
          Set perspective
 void setSideFromTeamName(java.lang.String teamName)
          Set perspective to the side corresponding to the given team name
 void setTeamName(int side, java.lang.String teamName)
          Set team name for a given side
 void updateBall(VecPosition pos, VecPosition vel)
          Update ball information
 void updatePlayer(int id, VecPosition pos, VecPosition vel, double angBody, double angNeck)
          Update player information for given player
 void updateTime(int time)
          Set current cycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

WorldState

public WorldState(ServerParams SP)
Constructs a world state with the specified server parameters. The perspective is not set to be from either side.

Parameters:
SP - server parameters

WorldState

public WorldState(ServerParams SP,
                  int side)
Constructs a world state from the given perspective

Parameters:
SP - server parameters
side - side of observer
Method Detail

copy

public WorldState copy(WorldState ws)
Deep copy another world state into this

Parameters:
ws - another world state
Returns:
pointer to this

updateTime

public void updateTime(int time)
Set current cycle

Parameters:
time - time in cycles

getTime

public int getTime()
Get current cycle

Returns:
current time in cycles

setPlayMode

public void setPlayMode(int playMode)
Set play mode

Parameters:
playMode - play mode

getPlayMode

public int getPlayMode()
Get play mode

Returns:
current play mode

getPlayModeString

public java.lang.String getPlayModeString()
Get play mode as String

Returns:
current play mode text label

setSide

public void setSide(int side)
Set perspective

Parameters:
side - side of observer

getOurSide

public int getOurSide()
Get perspective

Returns:
side of observer

getOppSide

public int getOppSide()
Get opponent's side

Returns:
side of observer's opponent

getSideFromTeamName

public int getSideFromTeamName(java.lang.String teamName)
Get side from team name

Parameters:
teamName - name of team as sent to server
Returns:
side of given team

setSideFromTeamName

public void setSideFromTeamName(java.lang.String teamName)
Set perspective to the side corresponding to the given team name

Parameters:
teamName - name of team

setTeamName

public void setTeamName(int side,
                        java.lang.String teamName)
Set team name for a given side

Parameters:
side - side of team to update
teamName - name of team

setLeftTeamName

public void setLeftTeamName(java.lang.String teamName)
Set name of left team

Parameters:
teamName - name of team

setRightTeamName

public void setRightTeamName(java.lang.String teamName)
Set name of left team

Parameters:
teamName - name of team

setOurTeamName

public void setOurTeamName(java.lang.String teamName)
Set our team's name

Parameters:
teamName - name of team

setOppTeamName

public void setOppTeamName(java.lang.String teamName)
Set opponent team's name

Parameters:
teamName - name of team

getTeamName

public java.lang.String getTeamName(int side)
Get our team name for given side

Parameters:
side - side of team
Returns:
name of team

getLeftTeamName

public java.lang.String getLeftTeamName()
Get left team's name

Returns:
name of team

getRightTeamName

public java.lang.String getRightTeamName()
Get right team's name

Returns:
name of team

getOurTeamName

public java.lang.String getOurTeamName()
Get our team's name

Returns:
name of team

getOppTeamName

public java.lang.String getOppTeamName()
Get opponent team's name

Returns:
name of team

getTeamNameFromPlayer

public java.lang.String getTeamNameFromPlayer(int id)
Get team name of given player

Parameters:
id - player ID
Returns:
name of team

setScore

public void setScore(int side,
                     int score)
Set score of given team

Parameters:
side - side of team
score - new score

setLeftScore

public void setLeftScore(int score)
Set score of left team

Parameters:
score - new score

setRightScore

public void setRightScore(int score)
Set score of right team

Parameters:
score - new score

setOurScore

public void setOurScore(int score)
Set score of our team

Parameters:
score - new score

setOppScore

public void setOppScore(int score)
Set score of opponent team

Parameters:
score - new score

getScore

public int getScore(int side)
Get score of given team

Parameters:
side - side of team
Returns:
score in goals

getLeftScore

public int getLeftScore()
Get score of left team

Returns:
score in goals

getRightScore

public int getRightScore()
Get score of right team

Returns:
score in goals

getOurScore

public int getOurScore()
Get score of our team

Returns:
score in goals

getOppScore

public int getOppScore()
Get score of opponent team

Returns:
score in goals

getGoalDifference

public int getGoalDifference()
Get difference between our score and opponent's score

Returns:
score difference in goals

isTeammate

public boolean isTeammate(int id)
Is player our teammate?

Parameters:
id - player ID
Returns:
true if player is on our team

isOpponent

public boolean isOpponent(int id)
Is player our opponent?

Parameters:
id - player ID
Returns:
true if player is on opponent team

getTeammateID

public int getTeammateID(int unum)
Get player ID of teammate with given uniform number

Parameters:
unum - uniform number 1-11
Returns:
playerID

getOpponentID

public int getOpponentID(int unum)
Get player ID of opponent with given uniform number

Parameters:
unum - uniform number 1-11
Returns:
playerID

isOnSidelines

public boolean isOnSidelines(int id)
Is player "dead" or waiting on sidelines?

Parameters:
id - player ID
Returns:
true if player is at y coordinate for sidelines

updateBall

public void updateBall(VecPosition pos,
                       VecPosition vel)
Update ball information

Parameters:
pos - new ball position
vel - new ball velocity

updatePlayer

public void updatePlayer(int id,
                         VecPosition pos,
                         VecPosition vel,
                         double angBody,
                         double angNeck)
Update player information for given player

Parameters:
id - player ID
pos - new player position
vel - new player velocity
angBody - new body angle
angNeck - new neck angle

getBallPosition

public VecPosition getBallPosition()
Get position of the ball

Returns:
position of the ball

getTimeSinceSeenBall

public int getTimeSinceSeenBall()
Get number of cycles that have passed since the ball information was updated

Returns:
cycles

getPlayerPosition

public VecPosition getPlayerPosition(int id)
Get position of given player

Parameters:
id - player ID
Returns:
position of player

getTimeSinceSeenPlayer

public int getTimeSinceSeenPlayer(int id)
Get number of cycles that have passed since the information for the given player was updated

Parameters:
id - player ID
Returns:
cycles

getPosition

public VecPosition getPosition(int id)
Get position of given object

Parameters:
id - object ID
Returns:
position of object

getBallVelocity

public VecPosition getBallVelocity()
Get velocity of the ball

Returns:
velocity of the ball

getPlayerVelocity

public VecPosition getPlayerVelocity(int id)
Get velocity of the given player

Parameters:
id - player ID
Returns:
velocity of player

getVelocity

public VecPosition getVelocity(int id)
Get velocity of the given object

Parameters:
id - object ID
Returns:
velocity of object

getPlayerBodyAngle

public double getPlayerBodyAngle(int id)
Get body angle of the given player

Parameters:
id - player ID
Returns:
angle in degrees

getPlayerNeckAngle

public double getPlayerNeckAngle(int id)
Get neck angle of the given player

Parameters:
id - player ID
Returns:
angle in degrees

getHeteroPlayerType

public int getHeteroPlayerType(int id)
Get heterogenous player type of the given player

Parameters:
id - player ID
Returns:
heterogenous player type

isBallKickableBy

public boolean isBallKickableBy(int id)
Is the ball close enough to the given player to be kicked?

Parameters:
id - player ID
Returns:
true if ball is kickable