Class Decorator
java.lang.Object
VASSAL.search.AbstractImageFinder
VASSAL.counters.Decorator
- All Implemented Interfaces:
PropertyNameSource
,PropertySource
,EditablePiece
,GamePiece
,PropertyExporter
,StateMergeable
,PersistentPropertyContainer
,Auditable
,ImageSearchTarget
,SearchTarget
- Direct Known Subclasses:
ActionButton
,AreaOfEffect
,Attachment
,BasicName
,BorderOutline
,CalculatedProperty
,Clone
,Comment
,CounterGlobalKeyCommand
,Delete
,Deselect
,DynamicProperty
,Embellishment
,Embellishment0
,FreeRotator
,GlobalHotKey
,Hideable
,Immobilized
,Labeler
,Marker
,Mat
,MatCargo
,MenuSeparator
,MovementMarkable
,MultiLocationCommand
,NonRectangular
,Obscurable
,Pivot
,PlaceMarker
,PlaySound
,PropertySheet
,ReportState
,RestrictCommands
,Restricted
,ReturnToDeck
,SendToLocation
,SubMenu
,TableInfo
,TranslatableMessage
,Translate
,TriggerAction
,UsePrototype
public abstract class Decorator
extends AbstractImageFinder
implements EditablePiece, StateMergeable, PropertyNameSource, PersistentPropertyContainer, PropertyExporter, SearchTarget, ImageSearchTarget
The abstract class describing a generic 'Trait' of a full GamePiece. Follows the Decorator design pattern
of wrapping around another instance of GamePiece (the 'inner' piece) and delegating some of the GamePiece methods to it. The
"innermost" piece of a Trait/Decorator stack will be a BasicPiece -- but note that although BasicPiece does implement GamePiece, it is NOT
a Decorator like traits are, and must be handled differently. Since Traits (Decorators) implement the
GamePiece
interface, they are
"given a look at" any method call to GamePiece, and may act on it and/or pass it "inward" toward the next Decorator in the stack, eventually
arriving at the BasicPiece. This is the reason for the VASSAL situation wherein only traits lower (more outward) in the list of traits are
able to affect/control/hide/restrict/etc traits that are higher (more inward, nearer the BasicPiece) in the list -- because the outer traits
receive the GamePiece method calls first, and thus have the opportunity to intercept or modify them if appropriate before passing them inward.
So a full logical GamePiece (the thing you see on the board), may consist of many Decorator instances (one for each trait) wrapped around the
BasicPiece.-
Field Summary
Fields inherited from interface VASSAL.counters.PropertyExporter
LOCALIZED_NAME
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
ImageSearchTarget
Adds all images used by this component AND any children to the collectionprotected void
addMenuCommand
(List<KeyCommand> list, String menuText, NamedKeyStroke keyStroke) If text/keystroke pair is valid, add it to the provided listprotected String
buildDescription
(String i18nKey) protected String
buildDescription
(String i18nKey, String description) Build a description of a trait of the form Type - Description Where Type is the translated trait type description and Description is a supplied additional descriptionprotected String
buildDescription
(String i18nKey, String value, String description) Build a description of a trait of the form Type - value - DescriptiongetCommandDesc
(String command, NamedKeyStroke key) protected String
getCommandDescription
(String description, String command) Return the name of the GamePiece this Decorator is a part of.Return a description of the Type of trait or Component an Auditable isstatic GamePiece
getDecorator
(GamePiece p, Class<?> type) getDecorators
(GamePiece p, Class<?> type) If Decorator contains a description *field*, returns the current contents of it.Return Internationalization (I18n) data for this pieceprotected PieceI18nData
getI18nData
(String[] commands, String[] descriptions) protected PieceI18nData
getI18nData
(String command, String description) getId()
Each GamePiece must have a unique String identifiergetInner()
static GamePiece
protected KeyCommand[]
And the translated name for this pieceReturns a localized translation of the specified property value, if available.getMap()
getOuter()
static GamePiece
getProperties
(Map<String, Object> result) Implement PropertyExporter.getProperties at the Decorator level.getProperty
(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.getState()
protected String
getTranslation
(String key) getType()
The type of a Decorator/Trait is a composition ofmyGetType()
and the type information of its inner piece member(s).protected boolean
isMenuCommand
(String menuText, NamedKeyStroke keystroke) protected boolean
Support caching Selection status locallyThe primary way for the piece or trait to receive events.void
mergeState
(String newState, String oldState) Compute the difference betweennewState
andoldState
and apply that difference to the current state.protected abstract KeyCommand[]
abstract String
The "state information" is "game state" information that can change during the course of a game.abstract String
The "type information" of a piece or trait is information that does not change during the course of a game.abstract Command
myKeyEvent
(KeyStroke stroke) The response of this trait alone to the given KeyStroke or the virtual keystroke of aNamedKeyStroke
.abstract void
mySetState
(String newState) Sets the state of this-trait-only (inverse ofmyGetState()
).static Command
* Set the Oldxxxx properties related to movement (e.g.static void
Utility methods to allow Decorator Editors to repack themselves.static void
repack
(Configurer c) Utility methods to allow Decorator Editors to repack themselves.protected static void
reportDataError
(EditablePiece piece, String message) Report a Data Error detected by a traitprotected static void
reportDataError
(EditablePiece piece, String message, String data) Report a Data Error detected by a traitprotected static void
reportDataError
(EditablePiece piece, String message, String data, Throwable e) Report a Data Error detected by a traitstatic Command
setDynamicProperties
(List<Parameter> parameters, GamePiece piece, PropertySource source, Auditable owner) Find and set a series of Dynamic Properties in the supplied GamePiece named propertyName and generate a Command to set it to the specified values in other clientsstatic Command
setDynamicProperties
(List<Parameter> parameters, GamePiece piece, PropertySource source, Auditable owner, AuditTrail auditSoFar) static Command
setDynamicProperty
(String propertyName, String value, GamePiece piece, PropertySource source, Auditable owner, AuditTrail audit) Find a Dynamic Property in the supplied GamePiece named propertyName and generate a Command to set it to the specified valuevoid
Each GamePiece must have a unique String identifiervoid
void
void
setPersistentProperty
(Object key, Object val) Default behavior for a Trait/Decorator is to pass requests to set persistent properties inward to the next member of the piece.void
setPosition
(Point p) void
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.protected void
setSelected
(boolean b) Support caching Selection status locallyvoid
Extract the string describing this trait's state and forward the remaining string to the inner piece.boolean
testEquals
(Object o) Test if this Decorator's Class, Type and State are equal to another trait.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.counters.EditablePiece
checkTrueMoved, finishMove, finishMove, getBaseDescription, getDescription, getHelpFile, mySetType, prepareMove
Methods inherited from interface VASSAL.counters.GamePiece
boundingBox, draw, getName, getShape
Methods inherited from interface VASSAL.search.ImageSearchTarget
addLocalImageNames, getAllImageNames, getLocalImageNames
Methods inherited from interface VASSAL.counters.PropertyExporter
getProperties
-
Field Details
-
piece
-
-
Constructor Details
-
Decorator
public Decorator()
-
-
Method Details
-
setInner
- Parameters:
p
- Set the inner GamePiece -- usually the next Trait (Decorator) inward, or the BasicPiece itself.
-
setMap
-
getMap
-
getInner
- Returns:
- the next member "inward" (toward the BasicPiece) of the full GamePiece.
Follows the Decorator design pattern
of wrapping around another instance of GamePiece (the 'inner' piece) and delegating some of the GamePiece methods to it. The
"innermost" piece of a Trait/Decorator stack will be a BasicPiece. Since Traits (Decorators) implement the
GamePiece
interface, they are "given a look at" any method call to GamePiece, and may act on it and/or pass it "inward" toward the next Decorator in the stack, eventually arriving at the BasicPiece. This is the reason for the VASSAL situation wherein only traits lower (more outward) in the list of traits are able to affect/control/hide/restrict/etc traits that are higher (more inward, nearer the BasicPiece) in the list -- because the outer traits receive the GamePiece method calls first, and thus have the opportunity to intercept or modify them if appropriate before passing them inward. So a full logical GamePiece (the thing you see on the board), may consist of many Decorator instances (one for each trait) wrapped around the BasicPiece.
-
setParent
-
getParent
-
getProperty
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'sgetState()
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 thesetProperty(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
- Parameters:
key
- String key of property to be returned- Returns:
- Object containing new value of the specified property
-
getLocalizedProperty
Returns a localized translation of the specified property value, if available. Otherwise returns the non-localized version. SeegetProperty(java.lang.Object)
.- Specified by:
getLocalizedProperty
in interfacePropertySource
- 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
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'sgetState()
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 bygetProperty(java.lang.Object)
-- in this the two methods are not perfect mirrors.- Specified by:
setProperty
in interfaceGamePiece
- Parameters:
key
- String key of property to be changedval
- Object containing new value of the property
-
setPersistentProperty
Default behavior for a Trait/Decorator is to pass requests to set persistent properties inward to the next member of the piece. Setting a persistent property writes a property value into the piece (creating a new entry in the piece's persistent property table if the specified key does not yet exist in it). Persistent properties are game-state-robust: they are saved/restored with saved games, and are passed viaCommand
to other players' clients in a multiplayer game. The persistent property value can then be read from the piece via e.g. #getProperty. When reading back properties out of a piece, the piece's built-in properties are checked first, then scratchpad properties (see #setProperty), then external properties such as Global Properties. If only persistentProperties are to be searched, usegetPersistentProperty(java.lang.Object)
instead.
In practical terms, setPersistentProperty is used mainly to implement the "Old" properties of BasicPiece (e.g. "OldLocationName", "OldZone", "OldMap", "OldBoard", "OldX", "OldY"). A Persistent Property is indeed nearly identical with DynamicProperty in storage/retrieval characteristics, and simply lacks the in-module interface for setting values, etc. Module Designers are thus recommended to stick with Dynamic Property traits for these functions.- Specified by:
setPersistentProperty
in interfacePersistentPropertyContainer
- Parameters:
key
- String key naming the persistent property to be set. If a corresponding persistent property does not exist it will be created.val
- New value for the persistent property- Returns:
- a
Command
object which, when passed to another player's client via logfile, server, or saved game, will allow the result of the "set" operation to be replicated.
-
getPersistentProperty
- Specified by:
getPersistentProperty
in interfacePersistentPropertyContainer
- Parameters:
key
- String key naming the persistent property whose value is to be returned.- Returns:
- the current value of a persistent property, or null if it doesn't exist.
-
setDynamicProperties
public static Command setDynamicProperties(List<Parameter> parameters, GamePiece piece, PropertySource source, Auditable owner) Find and set a series of Dynamic Properties in the supplied GamePiece named propertyName and generate a Command to set it to the specified values in other clients- Parameters:
parameters
- List of property name/value pairspiece
- Game Piece containing the Dynamic Propertysource
- A Property Source for evaluating any $$ Variables included in the value if it is an expressionowner
- Initiating piece/component for audit purposes- Returns:
- Command setting the properties
-
setDynamicProperties
public static Command setDynamicProperties(List<Parameter> parameters, GamePiece piece, PropertySource source, Auditable owner, AuditTrail auditSoFar) -
setDynamicProperty
public static Command setDynamicProperty(String propertyName, String value, GamePiece piece, PropertySource source, Auditable owner, AuditTrail audit) Find a Dynamic Property in the supplied GamePiece named propertyName and generate a Command to set it to the specified value- Parameters:
propertyName
- Dynamic property namevalue
- New valuepiece
- Game Piece containing the Dynamic Propertysource
- A Property Source for evaluating any $$ Variables included in the value if it is an expressionowner
- Initiating piece/component for audit purposesaudit
- Audit trail- Returns:
- Command setting the property
-
getOuter
- Returns:
- next piece "outward" (away from BasicPiece) in the trait list. This method is required
by
Obscurable
to handle masking of getProperty calls.
-
setPosition
- Specified by:
setPosition
in interfaceGamePiece
- Parameters:
p
- Sets the location of this piece on itsMap
Default behavior by a Trait/Decorator is to pass the position request inward to the next member of the piece.
-
getPosition
- Specified by:
getPosition
in interfaceGamePiece
- Returns:
- The location of this piece on its
Map
. Default behavior by a Trait/Decorator is to request the information from the next inward member of the piece.
-
mySetState
Sets the state of this-trait-only (inverse ofmyGetState()
). 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.- Parameters:
newState
- New state information serialized in string form, ready to be passed to a SequenceEncoder#decode.
-
setState
Extract the string describing this trait's state and forward the remaining string to the inner piece. 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. -
mergeState
Compute the difference betweennewState
andoldState
and apply that difference to the current state. Default behavior for a Trait/Decorator is to do the same for all inward members of the piece.
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:
mergeState
in interfaceStateMergeable
- Parameters:
newState
- the new state of this trait and all inner members of the pieceoldState
- the old state of this trait and all inner members of the piece
-
myGetState
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.- Returns:
- the game state information of this trait alone
- See Also:
-
getState
- Specified by:
getState
in interfaceGamePiece
- Returns:
- the state of a Trait/Decorator is a composition of
myGetState()
and the inner piece members' states
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.
-
myGetType
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.- Returns:
- the type information of this trait alone
- See Also:
-
getType
The type of a Decorator/Trait is a composition ofmyGetType()
and the type information of its inner piece member(s).
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.- Specified by:
getType
in interfaceGamePiece
- Returns:
- the combined type of this trait (from
myGetType()
) plus all inner piece members - See Also:
-
myGetKeyCommands
- Returns:
- the key commands for this trait alone
- See Also:
-
isMenuCommand
- Parameters:
menuText
- menu textkeystroke
- keystroke or named keystroke- Returns:
- true if a context menu item should be displayed for the text/keystroke combination
-
addMenuCommand
If text/keystroke pair is valid, add it to the provided list- Parameters:
list
-menuText
-keyStroke
-
-
getKeyCommands
- Returns:
- The set of key commands that will populate the piece's right-click menu.
The key commands are accessible through the
Properties.KEY_COMMANDS
property. The commands for a Trait/Decorator
are a composite ofmyGetKeyCommands()
and the commands of its inner piece member(s), so requesting this information of the "outermost" Trait/Decorator of a piece will produce the complete set of Key Commands for the entire logical game piece. See also:myGetKeyCommands()
, which returns the commands for this Trait/Decorator only.
-
myKeyEvent
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()
).- 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:
-
keyEvent
The primary way for the piece or trait to receive events. Appends the command returned bymyKeyEvent(javax.swing.KeyStroke)
with the command returned by the inner piece member'sGamePiece.keyEvent(javax.swing.KeyStroke)
method.KeyStroke
events are forwarded to this method if they are received while the piece is selected (or as the result of e.g. a Global Key Command being sent to the piece). The class implementing GamePiece can respond in any way it likes. Actual key presses by the player, selected items from the right-click Context Menu, keystrokes "applied on move" by a Map that the piece has just moved on, and Global Key Commands all send KeyStrokes (and NamedKeyStrokes) which are passed to pieces and traits through this interface.- Specified by:
keyEvent
in interfaceGamePiece
- Parameters:
stroke
- KeyStroke to apply (note that although they are passed asKeyStroke
objects, they may beNamedKeyStroke
objects)- Returns:
- a
Command
that, when executed, will make all changes to the game state (maps, pieces, other pieces, etc) to duplicate what the Trait/Decorator plus any inner piece members did in response to this event, on another machine. Often aChangePiece
command, but for example if this keystroke caused the piece/trait to decide to fire off a Global Key Command, then the Command returned would include the entire results of that, appended as subcommands. Returns null if the keystroke did not produce an effect. - See Also:
-
getId
-
setId
-
getOutermost
-
getInnermost
- Parameters:
p
- Trait to find the Innermost trait of- Returns:
- the innermost GamePiece member of this piece. In most cases, an instance of
BasicPiece
.
-
getDecorator
-
getDecorators
-
getExpressionList
- Specified by:
getExpressionList
in interfaceSearchTarget
- Returns:
- a list of the Decorator's string/expression fields if any (for search)
-
getFormattedStringList
- Specified by:
getFormattedStringList
in interfaceSearchTarget
- Returns:
- a list of any Message Format strings referenced in the Decorator, if any (for search)
-
getMenuTextList
- Specified by:
getMenuTextList
in interfaceSearchTarget
- Returns:
- a list of any Menu/Button/Tooltip Text strings referenced in the Decorator, if any (for search)
-
getNamedKeyStrokeList
- Specified by:
getNamedKeyStrokeList
in interfaceSearchTarget
- Returns:
- a list of any Named KeyStrokes referenced in the Decorator, if any (for search)
-
getPropertyList
- Specified by:
getPropertyList
in interfaceSearchTarget
- Returns:
- a list of any Property Names referenced in the Decorator, if any (for search)
-
getEditor
- Specified by:
getEditor
in interfaceEditablePiece
- 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.
-
toString
-
getLocalizedName
Description copied from interface:GamePiece
And the translated name for this piece- Specified by:
getLocalizedName
in interfaceGamePiece
- Returns:
- the translated name for this piece. Most pieces do not have translatable elements, so just return the standard name
-
getI18nData
Return Internationalization (I18n) data for this piece- Returns:
- I18n data, used to hold translations of strings
-
getI18nData
-
getI18nData
-
getCommandDescription
-
getTranslation
-
reportDataError
protected static void reportDataError(EditablePiece piece, String message, String data, Throwable e) Report a Data Error detected by a trait- Parameters:
piece
- Our GamePiece for the error messagemessage
- Main error messagedata
- additional data stringe
- throwable error associated with the problem
-
reportDataError
Report a Data Error detected by a trait- Parameters:
piece
- Our GamePiece for the error messagemessage
- Main error messagedata
- additional data string
-
reportDataError
Report a Data Error detected by a trait- Parameters:
piece
- Our GamePiece for the error messagemessage
- Main error message
-
getPropertyNames
- Specified by:
getPropertyNames
in interfacePropertyNameSource
- 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.
-
putOldProperties
-
repack
Utility methods to allow Decorator Editors to repack themselves. Ensure the resulting dialog fits and is fully visible on the screen- Parameters:
c
- must be one of the Swing components that make up the Decorator's controls.
-
repack
Utility methods to allow Decorator Editors to repack themselves. Ensure the resulting dialog fits and is fully visible on the screen- Parameters:
c
- must be one of the Decoarator's Configurers
-
setSelected
protected void setSelected(boolean b) Support caching Selection status locally- Parameters:
b
- current selected status of our piece
-
isSelected
protected boolean isSelected()Support caching Selection status locally- Returns:
- true if our piece is selected
-
addImageNamesRecursively
ImageSearchTarget
Adds all images used by this component AND any children to the collection- Specified by:
addImageNamesRecursively
in interfaceImageSearchTarget
- Overrides:
addImageNamesRecursively
in classAbstractImageFinder
- Parameters:
s
- Collection to add image names to
-
testEquals
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.- Parameters:
o
- Object to compare this Decorator to- Returns:
- true if the Class, type and state all match
-
buildDescription
Build a description of a trait of the form Type - Description Where Type is the translated trait type description and Description is a supplied additional description- Parameters:
i18nKey
- Translation key for trait type descriptiondescription
- Optional additional description- Returns:
- Combined description
-
buildDescription
-
buildDescription
Build a description of a trait of the form Type - value - Description- Parameters:
i18nKey
- Translation key for trait type descriptionvalue
- Optional value to include in the descriptiondescription
- Optional additional description- Returns:
- Combined description
-
getProperties
Implement PropertyExporter.getProperties at the Decorator level. Add the properties from this Decorator to the supplied Map, then call the next innermost piece to do the same. Do not overwrite values if an outer trait has a property with the same name.- Specified by:
getProperties
in interfacePropertyExporter
- Parameters:
result
- Map of property values- Returns:
- Updated Map of property values
-
getComponentTypeName
Description copied from interface:Auditable
Return a description of the Type of trait or Component an Auditable is- Specified by:
getComponentTypeName
in interfaceAuditable
- Returns:
- Component Type
-
getComponentName
Return the name of the GamePiece this Decorator is a part of. Return the name starting from the inner Decorator to this one to prevent infinite loops- Specified by:
getComponentName
in interfaceAuditable
- Returns:
- piece name
-
getCommandDesc
- Parameters:
command
- Menu textkey
- Keystroke- Returns:
- Display-ready description of a command, that may include a menu string and/or a NamedKeystroke
-
getDescriptionField
If Decorator contains a description *field*, returns the current contents of it.- Returns:
- contents of "description" field, if it exists.
-