Package VASSAL.counters
Class Footprint
java.lang.Object
VASSAL.search.AbstractImageFinder
VASSAL.counters.Decorator
VASSAL.counters.MovementMarkable
VASSAL.counters.Footprint
- All Implemented Interfaces:
PropertyNameSource,PropertySource,EditablePiece,GamePiece,PropertyExporter,StateMergeable,TranslatablePiece,PersistentPropertyContainer,Auditable,ImageSearchTarget,SearchTarget
Displays a movement trail indicating where a piece has been moved
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classKey Command Global Visibility Circle Radius Fill Color Line Color Selected Transparency Unselected Transparency Edge Buffer Display Limit Edge Buffer Point Limit -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected intprotected static final intprotected static final intprotected static final intprotected static final Colorprotected static final Booleanprotected static final Booleanprotected static final Colorprotected static final Stringprotected static final intprotected static final charprotected static final intprotected Stringprotected intprotected intprotected booleanprotected Colorprotected Fontprotected booleanprotected booleanstatic final Stringprotected booleanprotected booleanprotected doubleprotected static final floatprotected Colorprotected doubleprotected booleanprotected Stringprotected Rectangleprotected intprotected Stringprotected NamedKeyStrokeprotected NamedKeyStrokeprotected NamedKeyStrokeprotected NamedKeyStrokeprotected intFields inherited from interface VASSAL.counters.PropertyExporter
LOCALIZED_NAMEFields inherited from interface VASSAL.i18n.TranslatablePiece
PREFIX -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidAdd Point to list and adjust the overall boundingBox to encompass the trail.Return a bounding box covering the whole trail if it is visible, otherwise just return the standard piece bounding boxprotected voidvoidDraw this GamePieceprotected voidDraw a Circle at the given point.protected voidDraw a track from one Point to another.Support for a basic-name-only description introduced later, so this default retrofits it from the full description if an explicit one is not defined.A plain-English description of this type of trait/piece - includes data from fields where appropriateIf Decorator contains a description *field*, returns the current contents of it.Return Internationalization (I18n) data for this pieceReturns a localized translation of the specified property value, if available.Return the boundingBox including the trailgetName()The plain English name for this piecegetProperty(Object key) Properties can be associated with a piece -- many may be game-specific, but others are standard, such as the LocationName property exposed by BasicPiece -- and can be read through this interface.getShape()protected ImagegetTrailImage(int elementCount) Override this method to return an Image to display within each trail circleprotected StringgetTrailText(int elementCount) Override this method to return text to display within each trail circle.protected booleanGlobal Visibility means all players see the same trail Local Visibility means each player controls their own trail visibilityThe "state information" is "game state" information that can change during the course of a game.The "type information" of a piece or trait is information that does not change during the course of a game.myKeyEvent(KeyStroke stroke) The response of this trait alone to the given KeyStroke or the virtual keystroke of aNamedKeyStroke.voidmySetState(String newState) Sets the state of this-trait-only (inverse ofDecorator.myGetState()).voidType is the character command that toggles footprint visibilityprotected voidvoidredraw()voidDisplays a Bad Module Data warning if a movement trails trait is found inside of a rotation traitvoidsetMoved(boolean justMoved) setMoved is called with an argument of true each time the piece is moved.voidsetProperty(Object key, Object val) Within a Trait/Decorator, the default behavior when setting a property is to handle changing our own inner/outer links directly, to cache the selection state (while also passing it inward), and to simply pass every other property change request inward.booleantestEquals(Object o) Test if this Decorator's Class, Type and State are equal to another trait.Methods inherited from class VASSAL.counters.MovementMarkable
addLocalImageNames, getPropertyNames, isMoved, setDescriptionMethods inherited from class VASSAL.counters.Decorator
addImageNamesRecursively, addMenuCommand, buildDescription, buildDescription, buildDescription, getCommandDesc, getCommandDescription, getComponentName, getComponentTypeName, getDecorator, getDecorators, getExpressionList, getFormattedStringList, getI18nData, getI18nData, getId, getInner, getInnermost, getKeyCommands, getLocalizedName, getMap, getOuter, getOutermost, getParent, getPersistentProperty, getPosition, getProperties, getPropertyList, getState, getTranslation, getType, isMenuCommand, isSelected, keyEvent, mergeState, putOldProperties, repack, repack, reportDataError, reportDataError, reportDataError, setDynamicProperties, setDynamicProperties, setDynamicProperty, setId, setInner, setMap, setParent, setPersistentProperty, setPosition, setSelected, setState, toStringMethods inherited from class VASSAL.search.AbstractImageFinder
getAllImageNames, getLocalImageNamesMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface VASSAL.script.expression.Auditable
getComponentName, getComponentTypeNameMethods inherited from interface VASSAL.counters.EditablePiece
checkTrueMoved, finishMove, finishMove, prepareMoveMethods inherited from interface VASSAL.counters.GamePiece
getId, getLocalizedName, getMap, getParent, getPosition, getState, getType, keyEvent, setId, setMap, setParent, setPosition, setStateMethods inherited from interface VASSAL.search.ImageSearchTarget
getAllImageNames, getLocalImageNamesMethods inherited from interface VASSAL.counters.PropertyExporter
getProperties
-
Field Details
-
ID
- See Also:
-
globalVisibility
protected boolean globalVisibility -
startMapId
-
pointList
-
trailKey
-
trailKeyOn
-
trailKeyOff
-
trailKeyClear
-
initiallyVisible
protected boolean initiallyVisible -
globallyVisible
protected boolean globallyVisible -
circleRadius
protected int circleRadius -
selectedTransparency
protected int selectedTransparency -
unSelectedTransparency
protected int unSelectedTransparency -
lineColor
-
fillColor
-
edgePointBuffer
protected int edgePointBuffer -
edgeDisplayBuffer
protected int edgeDisplayBuffer -
description
-
DEFAULT_TRAIL_KEY
protected static final char DEFAULT_TRAIL_KEY- See Also:
-
DEFAULT_MENU_COMMAND
-
DEFAULT_INITIALLY_VISIBLE
-
DEFAULT_GLOBALLY_VISIBLE
-
DEFAULT_CIRCLE_RADIUS
protected static final int DEFAULT_CIRCLE_RADIUS- See Also:
-
DEFAULT_FILL_COLOR
-
DEFAULT_LINE_COLOR
-
DEFAULT_SELECTED_TRANSPARENCY
protected static final int DEFAULT_SELECTED_TRANSPARENCY- See Also:
-
DEFULT_UNSELECTED_TRANSPARENCY
protected static final int DEFULT_UNSELECTED_TRANSPARENCY- See Also:
-
DEFAULT_EDGE_POINT_BUFFER
protected static final int DEFAULT_EDGE_POINT_BUFFER- See Also:
-
DEFAULT_EDGE_DISPLAY_BUFFER
protected static final int DEFAULT_EDGE_DISPLAY_BUFFER- See Also:
-
LINE_WIDTH
protected static final float LINE_WIDTH- See Also:
-
myBoundingBox
-
font
-
lastZoom
protected double lastZoom -
localVisibility
protected boolean localVisibility -
initialized
protected boolean initialized -
everInitialized
protected boolean everInitialized -
lineWidth
protected double lineWidth
-
-
Constructor Details
-
Footprint
public Footprint() -
Footprint
-
-
Method Details
-
mySetState
Description copied from class:DecoratorSets the state of this-trait-only (inverse ofDecorator.myGetState()). The "state information" is information that can change during the course of a game. State information is saved when the game is saved and is transferred between players on the server. For example, the relative order of pieces in a stack is state information, but whether the stack is expanded is not.- Overrides:
mySetStatein classMovementMarkable- Parameters:
newState- New state information serialized in string form, ready to be passed to a SequenceEncoder#decode.
-
myGetState
Description copied from class:DecoratorThe "state information" is "game state" information that can change during the course of a game. State information is saved when the game is saved and is transferred between players on the server. For example, the relative order of pieces in a stack is state information, but whether the stack is expanded is not.- Overrides:
myGetStatein classMovementMarkable- Returns:
- the game state information of this trait alone
- See Also:
-
mySetType
Type is the character command that toggles footprint visibility- Specified by:
mySetTypein interfaceEditablePiece- Overrides:
mySetTypein classMovementMarkable- Parameters:
type- a serialized configuration string to set the "type information" of this piece, which is information that doesn't change during the course of a single game (e.g. Image Files, Context Menu strings, etc). Typically ready to be processed e.g. by SequenceEncoder.decode()
-
myGetType
Description copied from class:DecoratorThe "type information" of a piece or trait is information that does not change during the course of a game. Image file names, context menu strings, etc., all should be reflected in the type. The type information is returned serialized string form, ready to be decoded by a SequenceEncoder#decode.- Overrides:
myGetTypein classMovementMarkable- Returns:
- the type information of this trait alone
- See Also:
-
getNamedKeyStrokeList
Description copied from class:Decorator- Specified by:
getNamedKeyStrokeListin interfaceSearchTarget- Overrides:
getNamedKeyStrokeListin classMovementMarkable- Returns:
- a list of any Named KeyStrokes referenced in the Decorator, if any (for search)
-
getMenuTextList
Description copied from class:Decorator- Specified by:
getMenuTextListin interfaceSearchTarget- Overrides:
getMenuTextListin classMovementMarkable- Returns:
- a list of any Menu Text strings referenced in the Decorator, if any (for search)
-
setProperty
Description copied from class:DecoratorWithin a Trait/Decorator, the default behavior when setting a property is to handle changing our own inner/outer links directly, to cache the selection state (while also passing it inward), and to simply pass every other property change request inward. A Trait with its own properties to maintain would intercept and process those requests, while sending the rest inward to the next member of the piece.
Properties can be associated with a piece -- many may be game-specific, but others are standard, such as the LocationName property exposed by BasicPiece -- and can be set through this interface. The properties may or may not need to be encoded in the piece'sDecorator.getState()method. Properties include the value of e.g.MarkerTraits,DynamicPropertyTraits, and so forth.
NOTE: Not all properties maintained by traits can be "set" by setProperty, even though they can be read by getProperty -- they may be "read only" for instance. You will need to check the code for individual traits to see what they support in this regard.
NOTE: Properties outside the piece CANNOT be set by this method (e.g. Global Properties), even though they can be read byDecorator.getProperty(java.lang.Object)-- in this the two methods are not perfect mirrors.- Specified by:
setPropertyin interfaceGamePiece- Overrides:
setPropertyin classMovementMarkable- Parameters:
key- String key of property to be changedval- Object containing new value of the property
-
getLocalizedProperty
Description copied from class:DecoratorReturns a localized translation of the specified property value, if available. Otherwise returns the non-localized version. SeeDecorator.getProperty(java.lang.Object).- Specified by:
getLocalizedPropertyin interfacePropertySource- Overrides:
getLocalizedPropertyin classMovementMarkable- Parameters:
key- String key of property to be returned- Returns:
- Object containing localized text of the specified property, if available, otherwise non-localized value
-
getProperty
Description copied from class:DecoratorProperties can be associated with a piece -- many may be game-specific, but others are standard, such as the LocationName property exposed by BasicPiece -- and can be read through this interface. The properties may or may not need to be encoded in the piece'sDecorator.getState()method. Properties include the value of e.g.MarkerTraits,DynamicPropertyTraits, and so forth. Furthermore they include the values of any visible "Global Property" in a Vassal module, whether at the module level, map level, or zone level -- but these "higher level" properties, coming from "outside the piece", CANNOT be written to by theDecorator.setProperty(java.lang.Object, java.lang.Object)method even though they can be read by this method -- in this sense the two methods are NOT perfect mirrors.
Within a Trait/Decorator, default behavior is to process some requests directly (e.g. requests for our "inner" or "outer" link), process our *part* of certain other requests (e.g. request for our game state information we supply state information for this trait and then append any information obtained from passing the same request inward), and then for any other requests that we cannot process we simply pass the request to the next trait/member inward.
When using this interface a piece's own properties are preferred to those of "Global Properties", and those in turn are searched Zone-first then Map, then Module.
This method implements thePropertySourceinterface, which allows Global Properties to be read by other types of object than GamePieces.- Specified by:
getPropertyin interfaceGamePiece- Specified by:
getPropertyin interfacePropertySource- Overrides:
getPropertyin classMovementMarkable- Parameters:
key- String key of property to be returned- Returns:
- Object containing new value of the specified property
-
setMoved
public void setMoved(boolean justMoved) setMoved is called with an argument of true each time the piece is moved. The argument is false when the unit is marked as not moved.- Overrides:
setMovedin classMovementMarkable
-
recordCurrentPosition
protected void recordCurrentPosition() -
clearTrail
protected void clearTrail() -
getHelpFile
- Specified by:
getHelpFilein interfaceEditablePiece- Overrides:
getHelpFilein classMovementMarkable- Returns:
- the help file for this trait
-
addPoint
Add Point to list and adjust the overall boundingBox to encompass the trail. -
redraw
public void redraw() -
getDescription
Description copied from interface:EditablePieceA plain-English description of this type of trait/piece - includes data from fields where appropriate- Specified by:
getDescriptionin interfaceEditablePiece- Overrides:
getDescriptionin classMovementMarkable
-
getBaseDescription
Description copied from interface:EditablePieceSupport for a basic-name-only description introduced later, so this default retrofits it from the full description if an explicit one is not defined.- Specified by:
getBaseDescriptionin interfaceEditablePiece- Overrides:
getBaseDescriptionin classMovementMarkable- Returns:
- name of trait/piece type, w/o additional data
-
getDescriptionField
Description copied from class:DecoratorIf Decorator contains a description *field*, returns the current contents of it.- Overrides:
getDescriptionFieldin classMovementMarkable- Returns:
- contents of "description" field, if it exists.
-
draw
Description copied from interface:GamePieceDraw this GamePiece- Specified by:
drawin interfaceGamePiece- Overrides:
drawin classMovementMarkable- Parameters:
g- target Graphics objectx- x-location of the center of the piecey- y-location of the center of the pieceobs- the Component on which this piece is being drawnzoom- the scaling factor.
-
drawPoint
-
drawTrack
Draw a track from one Point to another. Don't draw under the circle as it shows through with transparency turned on. -
getTrailImage
Override this method to return an Image to display within each trail circle -
getTrailText
Override this method to return text to display within each trail circle. Note, there will normally be only room for 1 character. -
isTrailVisible
protected boolean isTrailVisible()Global Visibility means all players see the same trail Local Visibility means each player controls their own trail visibility -
boundingBox
Return a bounding box covering the whole trail if it is visible, otherwise just return the standard piece bounding box- Specified by:
boundingBoxin interfaceGamePiece- Overrides:
boundingBoxin classMovementMarkable- Returns:
- The area which this GamePiece occupies when drawn at the point (0,0)
-
getMyBoundingBox
Return the boundingBox including the trail -
getShape
- Specified by:
getShapein interfaceGamePiece- Overrides:
getShapein classMovementMarkable- Returns:
- The shape of the piece from the user's viewpoint. This defines the area
in which the user must click to select or move the piece, for example.
Like
GamePiece.boundingBox(), it assumes the position is (0,0) -- which to be clear is normally aligned with the CENTER of the piece image -- and must be translated to the actual location where the piece is being drawn. For most ordinary pieces, the shape returned here will simply be equivalent to the bounding box, but seeNonRectangular.
-
getName
-
myGetKeyCommands
- Overrides:
myGetKeyCommandsin classMovementMarkable- Returns:
- the key commands for this trait alone
- See Also:
-
myKeyEvent
Description copied from class:DecoratorThe response of this trait alone to the given KeyStroke or the virtual keystroke of aNamedKeyStroke. NamedKeyStrokes are allocated a unique internal KeyStroke when they are first used in a module, and that KeyStroke is passed up and down the decorator stack to represent them (seeNamedKeyStroke.getKeyStroke()).- Overrides:
myKeyEventin classMovementMarkable- Parameters:
stroke- KeyStroke to apply (to apply a Named Keystroke sendNamedKeyStroke.getKeyStroke()- Returns:
- Generated Command to reproduce any changes just made to to the game state, or null if no effect
- See Also:
-
requireNoOuterRotate
public void requireNoOuterRotate()Displays a Bad Module Data warning if a movement trails trait is found inside of a rotation trait -
getEditor
- Specified by:
getEditorin interfaceEditablePiece- Overrides:
getEditorin classMovementMarkable- Returns:
- the configurer for this trait - the dialog which allows the editing the piece's type information. Default
configurer is a
SimplePieceEditor, but many traits will want to provide custom versions.
-
getI18nData
Description copied from class:DecoratorReturn Internationalization (I18n) data for this piece- Specified by:
getI18nDatain interfaceTranslatablePiece- Overrides:
getI18nDatain classMovementMarkable- Returns:
- I18n data, used to hold translations of strings
-
testEquals
Description copied from class:DecoratorTest if this Decorator's Class, Type and State are equal to another trait. Implementations of this method should compare the individual values of the fields that make up the Decorators Type and State. Implementations should NOT compare the values returned by myGetType() or myGetState(). This method is intended to be used by Unit Tests to verify that a trait is unchanged after going through a process such as serialization/deserialization.- Overrides:
testEqualsin classMovementMarkable- Parameters:
o- Object to compare this Decorator to- Returns:
- true if the Class, type and state all match
-