Package VASSAL.counters
Class MatCargo
java.lang.Object
VASSAL.search.AbstractImageFinder
VASSAL.counters.Decorator
VASSAL.counters.MatCargo
- All Implemented Interfaces:
PropertyNameSource
,PropertySource
,EditablePiece
,GamePiece
,PropertyExporter
,StateMergeable
,TranslatablePiece
,PersistentPropertyContainer
,Auditable
,ImageSearchTarget
,SearchTarget
Designates the piece as "Cargo", which can be placed on a "Mat" to move along with it
-
Nested Class Summary
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
protected String
protected int
protected int
protected GamePieceOp
static final String
static final String
protected boolean
protected boolean
protected GamePiece
protected NamedKeyStroke
protected KeyCommand
protected NamedKeyStroke
protected KeyCommand
static final String
protected static final double
protected Map
<Double, RotateScaleOp> protected boolean
Fields inherited from interface VASSAL.counters.PropertyExporter
LOCALIZED_NAME
Fields inherited from interface VASSAL.i18n.TranslatablePiece
PREFIX
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
clearMat()
Clear our relationship with any Mat we're assigned to.void
If we're maintaining facing to our Mat, rotate our graphics as appropriate to account for that when drawingFinds us a Mat to join at our current location.findNewMat
(Map map, Point pt) Finds us a Mat to join at the specified point on a specified map.static Command
findNewMat
(Command c, GamePiece gp) Checks if GamePiece gp is a MatCargo, and if so finds it a new mat if needed (or clears it if it has moved off its former mat)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.protected GamePieceOp
getGpOp()
Returns a localized translation of the specified property value, if available.getMat()
protected double
double
getName()
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.Return Property names exposed by this traitgetShape()
If we're maintaining facing to our Mat, rotate our piece's shape to account for that.locateNewMat
(Map map, Point pt) Non Command generating part of findNewMat().Clear our relationship with any Mat we're assigned to, and return a command to do that.makeSetMatCommand
(GamePiece newMat) Places us "on" the designated Mat and returns a Command to duplicate the changes on other clientsThe "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
.void
mySetState
(String newState) Sets the state of this-trait-only (inverse ofDecorator.myGetState()
).void
Sets the information for this piece.void
Mark us as being on a specific Mat piecevoid
setProperty
(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.boolean
testEquals
(Object o) Test if this Decorator's Class, Type and State are equal to another trait.Methods inherited from class VASSAL.counters.Decorator
addImageNamesRecursively, addMenuCommand, buildDescription, buildDescription, buildDescription, getCommandDesc, getCommandDescription, getComponentName, getComponentTypeName, getDecorator, getDecorators, getExpressionList, getFormattedStringList, getI18nData, getI18nData, getI18nData, getId, getInner, getInnermost, getKeyCommands, getLocalizedName, getMap, getMenuTextList, 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, toString
Methods inherited from class VASSAL.search.AbstractImageFinder
addLocalImageNames, getAllImageNames, getLocalImageNames
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface VASSAL.script.expression.Auditable
getComponentName, getComponentTypeName
Methods inherited from interface VASSAL.counters.EditablePiece
checkTrueMoved, finishMove, finishMove, prepareMove
Methods inherited from interface VASSAL.counters.GamePiece
getId, getLocalizedName, getMap, getParent, getPosition, getState, getType, keyEvent, setId, setMap, setParent, setPosition, setState
Methods inherited from interface VASSAL.search.ImageSearchTarget
addLocalImageNames, getAllImageNames, getLocalImageNames
Methods inherited from interface VASSAL.counters.PropertyExporter
getProperties
Methods inherited from interface VASSAL.i18n.TranslatablePiece
getI18nData
-
Field Details
-
ID
- See Also:
-
NO_MAT
- See Also:
-
CURRENT_MAT
- See Also:
-
CURRENT_MAT_ID
- See Also:
-
CURRENT_MAT_X
- See Also:
-
CURRENT_MAT_Y
- See Also:
-
CURRENT_MAT_OFFSET_X
- See Also:
-
CURRENT_MAT_OFFSET_Y
- See Also:
-
CURRENT_MAT_PIECE_NAME
- See Also:
-
CURRENT_MAT_BASIC_NAME
- See Also:
-
CURRENT_MAT_LOCATION_NAME
- See Also:
-
CURRENT_MAT_ZONE
- See Also:
-
CURRENT_MAT_BOARD
- See Also:
-
CURRENT_MAT_MAP
- See Also:
-
CURRENT_MAT_PROP0
- See Also:
-
CURRENT_MAT_PROP1
- See Also:
-
CURRENT_MAT_PROP2
- See Also:
-
CURRENT_MAT_PROP3
- See Also:
-
CURRENT_MAT_PROP4
- See Also:
-
CURRENT_MAT_PROP5
- See Also:
-
CURRENT_MAT_PROP6
- See Also:
-
CURRENT_MAT_PROP7
- See Also:
-
CURRENT_MAT_PROP8
- See Also:
-
CURRENT_MAT_PROP9
- See Also:
-
IS_CARGO
- See Also:
-
desc
-
maintainRelativeFacing
protected boolean maintainRelativeFacing -
detectionDistanceX
protected int detectionDistanceX -
detectionDistanceY
protected int detectionDistanceY -
matFindKey
-
matDetachKey
-
keyCommandsSet
protected boolean keyCommandsSet -
matFindKeyCommand
-
matDetachKeyCommand
-
gpOp
-
bounds
-
rotOp
-
PI_180
protected static final double PI_180- See Also:
-
mat
-
useUnrotatedShape
protected boolean useUnrotatedShape
-
-
Constructor Details
-
MatCargo
public MatCargo() -
MatCargo
-
-
Method Details
-
mySetType
Description copied from interface:EditablePiece
Sets the information for this piece. SeeDecorator.myGetType()
- Specified by:
mySetType
in interfaceEditablePiece
- 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:Decorator
The "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. -
getNamedKeyStrokeList
Description copied from class:Decorator
- Specified by:
getNamedKeyStrokeList
in interfaceSearchTarget
- Overrides:
getNamedKeyStrokeList
in classDecorator
- Returns:
- a list of any Named KeyStrokes referenced in the Decorator, if any (for search)
-
clearMat
public void clearMat()Clear our relationship with any Mat we're assigned to. Does NOT clear the Mat's reference to us -- must be done separately. -
makeClearMatCommand
Clear our relationship with any Mat we're assigned to, and return a command to do that.- Returns:
- return a command to clear our Mat relationship
-
setMat
Mark us as being on a specific Mat piece- Parameters:
mat
- the mat we are joining
-
makeSetMatCommand
-
findNewMat
-
locateNewMat
Non Command generating part of findNewMat(). Used to check for a potential valid mat at a target location without generating the Mat/Cargo commands- Parameters:
map
- map to checkpt
- point to check- Returns:
- the Mat GamePiece at map.point or null if none
-
findNewMat
Finds us a Mat to join at our current location. Or if no Mat, marks our removal from any we were on.- Returns:
- A Command that will duplicate any changes on another client.
-
findNewMat
Checks if GamePiece gp is a MatCargo, and if so finds it a new mat if needed (or clears it if it has moved off its former mat)- Parameters:
c
- Command to which to appendgp
- GamePiece- Returns:
- Command c with any needed additional commands appended
-
getMat
- Returns:
- current Mat we are on top of (or null for none)
-
myGetKeyCommands
- Specified by:
myGetKeyCommands
in classDecorator
- Returns:
- the key commands for this trait alone
- See Also:
-
myGetState
Description copied from class:Decorator
The "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.- Specified by:
myGetState
in classDecorator
- Returns:
- the game state information of this trait alone
- See Also:
-
myKeyEvent
Description copied from class:Decorator
The 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()
).- Specified by:
myKeyEvent
in classDecorator
- 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:
-
mySetState
Description copied from class:Decorator
Sets 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.- Specified by:
mySetState
in classDecorator
- Parameters:
newState
- New state information serialized in string form, ready to be passed to a SequenceEncoder#decode.
-
boundingBox
- Specified by:
boundingBox
in interfaceGamePiece
- Returns:
- The area which this GamePiece occupies when drawn at the point (0,0)
-
getGpOp
-
getMatAngle
protected double getMatAngle() -
getMatAngleInRadians
public double getMatAngleInRadians() -
draw
If we're maintaining facing to our Mat, rotate our graphics as appropriate to account for that when drawing -
getName
-
getShape
-
getEditor
- Specified by:
getEditor
in interfaceEditablePiece
- Overrides:
getEditor
in classDecorator
- 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.
-
getProperty
Description copied from class:Decorator
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. The properties may or may not need to be encoded in the piece'sDecorator.getState()
method. Properties include the value of e.g.Marker
Traits,DynamicProperty
Traits, 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 thePropertySource
interface, which allows Global Properties to be read by other types of object than GamePieces.- Specified by:
getProperty
in interfaceGamePiece
- Specified by:
getProperty
in interfacePropertySource
- Overrides:
getProperty
in classDecorator
- Parameters:
key
- String key of property to be returned- Returns:
- Object containing new value of the specified property
-
getLocalizedProperty
Description copied from class:Decorator
Returns a localized translation of the specified property value, if available. Otherwise returns the non-localized version. SeeDecorator.getProperty(java.lang.Object)
.- Specified by:
getLocalizedProperty
in interfacePropertySource
- Overrides:
getLocalizedProperty
in classDecorator
- Parameters:
key
- String key of property to be returned- Returns:
- Object containing localized text of the specified property, if available, otherwise non-localized value
-
setProperty
Description copied from class:Decorator
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. 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.Marker
Traits,DynamicProperty
Traits, 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:
setProperty
in interfaceGamePiece
- Overrides:
setProperty
in classDecorator
- Parameters:
key
- String key of property to be changedval
- Object containing new value of the property
-
getDescription
Description copied from interface:EditablePiece
A plain-English description of this type of trait/piece - includes data from fields where appropriate- Specified by:
getDescription
in interfaceEditablePiece
-
getBaseDescription
Description copied from interface:EditablePiece
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.- Specified by:
getBaseDescription
in interfaceEditablePiece
- Returns:
- name of trait/piece type, w/o additional data
-
getDescriptionField
Description copied from class:Decorator
If Decorator contains a description *field*, returns the current contents of it.- Overrides:
getDescriptionField
in classDecorator
- Returns:
- contents of "description" field, if it exists.
-
testEquals
Description copied from class:Decorator
Test 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:
testEquals
in classDecorator
- Parameters:
o
- Object to compare this Decorator to- Returns:
- true if the Class, type and state all match
-
getHelpFile
- Specified by:
getHelpFile
in interfaceEditablePiece
- Returns:
- the help file for this trait
-
getPropertyNames
Return Property names exposed by this trait- Specified by:
getPropertyNames
in interfacePropertyNameSource
- Overrides:
getPropertyNames
in classDecorator
- Returns:
- List of property names "exposed" by this piece -- that are available to other Traits and components to read.
Default behavior for a Trait is not to expose any properties, but Traits which should expose some (e.g.
DynamicProperty
orMarker
) would provide an array of the property names here.
-