com.realtime.crossfire.jxclient.map
Class CfMapSquare

java.lang.Object
  extended by com.realtime.crossfire.jxclient.map.CfMapSquare

public class CfMapSquare
extends java.lang.Object

Represents a square in a CfMap. A square comprises of Map2.NUM_LAYERS faces as well as a darkness value.

This class assumes that the "head" part of a face is the part the server did sent. This is the bottom-right part for multi-square objects. Not that this definition is inconsistent to what the server assumes as the head part of an object.


Field Summary
private  int color
          The magic map color of the square.
private  int darkness
          The darkness value of the square in the range [0..255].
static int DARKNESS_FULL_BRIGHT
          The darkness value for a full bright square.
static int DEFAULT_COLOR
          The default magic map color for newly created squares.
static int DEFAULT_DARKNESS
          The default darkness value for newly created squares.
static Face DEFAULT_FACE
          The default face value for newly creates squares.
private  Face[] faces
          The faces (of head-parts) of all layers as sent by the server.
private  boolean fogOfWar
          Flag used to defer clearing the values: when a CfMapSquare is cleared, the old values remain valid until at least one field is re-set.
private  CfMapSquare[] heads
          If this square contains a non-head part of a multi-square object this points to the head square.
private  CfMap map
          The CfMap this map square is part of.
private  int x
          The absolute x-coordinate of this square in its CfMap.
private  int y
          The absolute y-coordinate of this square in its CfMap.
 
Constructor Summary
CfMapSquare(CfMap map, int x, int y)
          Creates a new (empty) square.
 
Method Summary
 void clear()
          Marks this square as 'fog-og-war'.
 void dirty()
          Marks this square as dirty, i.e., needing redraw.
 int getColor()
          Returns the magic map color of this square.
 int getDarkness()
          Returns the darkness value of this square.
 Face getFace(int layer)
          Returns the face of a layer.
 CfMapSquare getHeadMapSquare(int layer)
          Returns the map square of the head of a multi-square object.
 int getX()
          Returns the absolute map x-coordinate of this square.
 int getY()
          Returns the absolute map y-coordinate of this square.
 boolean isFogOfWar()
          Determines if the square is not up-to-date.
 boolean resetFogOfWar()
          Returns and resets the "fog-of-war" flag.
 boolean setColor(int color)
          Sets the magic map color of this square.
 boolean setDarkness(int darkness)
          Sets the darkness value of this square.
 void setFace(int layer, Face face)
          Sets the face of a layer.
 void setHeadMapSquare(int layer, CfMapSquare mapSquare, boolean setAlways)
          Sets the map square containing the head face for a layer.
 java.lang.String toString()
          
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

color

private int color
The magic map color of the square. Set to DEFAULT_COLOR if none is known.


darkness

private int darkness
The darkness value of the square in the range [0..255]. 0=dark, 255=full bright=DARKNESS_FULL_BRIGHT.


DARKNESS_FULL_BRIGHT

public static final int DARKNESS_FULL_BRIGHT
The darkness value for a full bright square.

See Also:
Constant Field Values

DEFAULT_COLOR

public static final int DEFAULT_COLOR
The default magic map color for newly created squares.

See Also:
Constant Field Values

DEFAULT_DARKNESS

public static final int DEFAULT_DARKNESS
The default darkness value for newly created squares.

See Also:
Constant Field Values

DEFAULT_FACE

@Nullable
public static final Face DEFAULT_FACE
The default face value for newly creates squares.


faces

@NotNull
private final Face[] faces
The faces (of head-parts) of all layers as sent by the server.


fogOfWar

private boolean fogOfWar
Flag used to defer clearing the values: when a CfMapSquare is cleared, the old values remain valid until at least one field is re-set.


heads

@NotNull
private final CfMapSquare[] heads
If this square contains a non-head part of a multi-square object this points to the head square.


map

@NotNull
private final CfMap map
The CfMap this map square is part of.


x

private final int x
The absolute x-coordinate of this square in its CfMap.


y

private final int y
The absolute y-coordinate of this square in its CfMap.

Constructor Detail

CfMapSquare

public CfMapSquare(@NotNull
                   CfMap map,
                   int x,
                   int y)
Creates a new (empty) square.

Parameters:
map - the map this map square is part of
x - the absolute map x-coordinate of the top left corner of this patch
y - the absolute map y-coordinate of the top left corner of this patch
Method Detail

clear

public void clear()
Marks this square as 'fog-og-war'. The values will be still returned until a new value will be set.


dirty

public void dirty()
Marks this square as dirty, i.e., needing redraw.


getColor

public int getColor()
Returns the magic map color of this square.

Returns:
the color

getDarkness

public int getDarkness()
Returns the darkness value of this square.

Returns:
the darkness value of the square. 0=dark, 255=full bright

getFace

@Nullable
public Face getFace(int layer)
Returns the face of a layer.

Parameters:
layer - the layer to return the face
Returns:
the face value

getHeadMapSquare

@Nullable
public CfMapSquare getHeadMapSquare(int layer)
Returns the map square of the head of a multi-square object.

Parameters:
layer - the layer to return the head for
Returns:
the head map square, or null if this square does not contain a multi-tail

getX

public int getX()
Returns the absolute map x-coordinate of this square.

Returns:
the x-coordinate

getY

public int getY()
Returns the absolute map y-coordinate of this square.

Returns:
the y-coordinate

isFogOfWar

public boolean isFogOfWar()
Determines if the square is not up-to-date.

Returns:
whether this square contains fog-of-war data

resetFogOfWar

public boolean resetFogOfWar()
Returns and resets the "fog-of-war" flag.

Returns:
whether this square's fog-of-war state has been reset

setColor

public boolean setColor(int color)
Sets the magic map color of this square.

Parameters:
color - the new color
Returns:
whether fog-of-war has been cleared

setDarkness

public boolean setDarkness(int darkness)
Sets the darkness value of this square.

Parameters:
darkness - the new darkness value between 0 and 255; 0=dark, 255=full bright
Returns:
whether fog-of-war has been cleared

setFace

public void setFace(int layer,
                    @Nullable
                    Face face)
Sets the face of a layer.

Parameters:
layer - the layer for the new face between 0 and LAYERS-1
face - the face to set

setHeadMapSquare

public void setHeadMapSquare(int layer,
                             @Nullable
                             CfMapSquare mapSquare,
                             boolean setAlways)
Sets the map square containing the head face for a layer.

Parameters:
layer - the layer for the new head face between 0 and LAYERS-1
mapSquare - the map square containing the head face; may be null
setAlways - if set, always update the face; if unset, only update when fog-of-war

toString

@NotNull
public java.lang.String toString()

Overrides:
toString in class java.lang.Object