Package VASSAL.counters
Class Embellishment0
java.lang.Object
VASSAL.search.AbstractImageFinder
VASSAL.counters.Decorator
VASSAL.counters.Embellishment0
- All Implemented Interfaces:
PropertyNameSource
,PropertySource
,EditablePiece
,GamePiece
,PropertyExporter
,StateMergeable
,TranslatablePiece
,PersistentPropertyContainer
,Auditable
,ImageSearchTarget
,SearchTarget
Embellishment has been extensively re-written for Vassal 3.2 changing
both the behavior and the visual look of the configurer. A version
number has been added to distinguish between the two versions.
Note, there is also a much older Embellishment trait with a type of emb
When editing a module, the old versions will be automatically converted to
the new version. One feature (multiple keystrokes for a command) cannot
be converted.
This class contains the complete code of the original version 0
emb2 Embellishment to support editing of unconverted version 0 Embellishments
and run-time support for modules containing unconverted traits.
This is essentially the latest 3.1 version of Embellishment
-
Field Summary
Modifier and TypeFieldDescriptionprotected String
protected String
protected int
protected String
static final String
protected KeyCommand[]
protected String[]
protected KeyCommand
protected String
protected String
protected int
protected boolean
protected int
protected boolean
static final String
static final String
protected String[]
protected ScaledImagePainter[]
protected Rectangle
protected Area
static final String
protected boolean
protected String
static final String
protected int
static final String
protected String
protected String
protected KeyStroke
protected FormattedString
protected KeyStroke
protected Rectangle[]
protected KeyCommand
protected String
protected String
protected int
protected int
protected int
protected int
Fields inherited from interface VASSAL.counters.PropertyExporter
LOCALIZED_NAME
Fields inherited from interface VASSAL.i18n.TranslatablePiece
PREFIX
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Classes extending AbstractImageFinder should override this method in order to add the names of any image files they use to the collection.protected void
void
Draw this GamePieceSupport for a basic-name-only description introduced later, so this default retrofits it from the full description if an explicit one is not defined.protected String
getCommonName
(boolean localized, int i) Get the name of this level (alone)A plain-English description of this type of trait/piece - includes data from fields where appropriateReturn Internationalization (I18n) data for this piecestatic Embellishment
getLayerWithMatchingActivateCommand
(GamePiece piece, KeyStroke stroke, boolean active) If the argument GamePiece contains a Layer whose "activate" command matches the given keystroke, and whose active status matches the boolean argument, return that Layerprotected String
getLocalizedCommonName
(int i) Get the localized name of this level (alone)And the translated name for this pieceReturns a localized translation of the specified property value, if available.getName()
The plain English name for this piecegetName
(boolean localized) 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.getShape()
Return the Shape of the counter by adding the shape of this layer to the shape of all inner traits.int
getValue()
boolean
isActive()
The "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 s) Sets the state of this-trait-only (inverse ofDecorator.myGetState()
).void
Sets the information for this piece.void
setActive
(boolean val) void
setValue
(int val) Set the current level - First level = 0 Does not change the active statusprotected String
Methods inherited from class VASSAL.counters.Decorator
addImageNamesRecursively, addMenuCommand, buildDescription, buildDescription, buildDescription, getCommandDesc, getCommandDescription, getComponentName, getComponentTypeName, getDecorator, getDecorators, getDescriptionField, getExpressionList, getFormattedStringList, getI18nData, getI18nData, getId, getInner, getInnermost, getKeyCommands, getMap, getMenuTextList, getNamedKeyStrokeList, getOuter, getOutermost, getParent, getPersistentProperty, getPosition, getProperties, getPropertyList, getPropertyNames, getState, getTranslation, getType, isMenuCommand, isSelected, keyEvent, mergeState, putOldProperties, repack, repack, reportDataError, reportDataError, reportDataError, setDynamicProperties, setDynamicProperties, setDynamicProperty, setId, setInner, setMap, setParent, setPersistentProperty, setPosition, setProperty, setSelected, setState, testEquals, toString
Methods inherited from class VASSAL.search.AbstractImageFinder
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, getMap, getParent, getPosition, getState, getType, keyEvent, setId, setMap, setParent, setPosition, setProperty, setState
Methods inherited from interface VASSAL.search.ImageSearchTarget
getAllImageNames, getLocalImageNames
Methods inherited from interface VASSAL.counters.PropertyExporter
getProperties
-
Field Details
-
OLD_ID
- See Also:
-
ID
- See Also:
-
IMAGE
- See Also:
-
NAME
- See Also:
-
LEVEL
- See Also:
-
ACTIVE
- See Also:
-
activateKey
-
upKey
-
downKey
-
activateModifiers
protected int activateModifiers -
upModifiers
protected int upModifiers -
downModifiers
protected int downModifiers -
upCommand
-
downCommand
-
activateCommand
-
resetCommand
-
resetLevel
-
loopLevels
protected boolean loopLevels -
resetKey
-
followProperty
protected boolean followProperty -
propertyName
-
firstLevelValue
protected int firstLevelValue -
rndKey
-
value
protected int value -
activationStatus
-
nValues
protected int nValues -
xOff
protected int xOff -
yOff
protected int yOff -
imageName
-
commonName
-
size
-
imagePainter
-
drawUnderneathWhenSelected
protected boolean drawUnderneathWhenSelected -
name
-
commands
-
up
-
down
-
lastBounds
-
lastShape
-
-
Constructor Details
-
Embellishment0
public Embellishment0() -
Embellishment0
-
-
Method Details
-
isActive
public boolean isActive() -
setActive
public void setActive(boolean val) -
getValue
public int getValue() -
setValue
public void setValue(int val) Set the current level - First level = 0 Does not change the active status- Parameters:
val
- Value to set
-
mySetType
Description copied from interface:EditablePiece
Sets the information for this piece. SeeDecorator.myGetType()
- Specified by:
mySetType
in interfaceEditablePiece
- Parameters:
s
- 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()
-
getLocalizedName
Description copied from interface:GamePiece
And the translated name for this piece- Specified by:
getLocalizedName
in interfaceGamePiece
- Overrides:
getLocalizedName
in classDecorator
- Returns:
- the translated name for this piece. Most pieces do not have translatable elements, so just return the standard name
-
getName
-
getName
-
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:
s
- New state information serialized in string form, ready to be passed to a 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. -
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:
-
draw
Description copied from interface:GamePiece
Draw this GamePiece -
checkPropertyLevel
protected void checkPropertyLevel() -
myGetKeyCommands
- Specified by:
myGetKeyCommands
in classDecorator
- Returns:
- the key commands for 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:
-
boundingBox
- Specified by:
boundingBox
in interfaceGamePiece
- Returns:
- The area which this GamePiece occupies when drawn at the point (0,0)
-
getCurrentImageBounds
-
getShape
Return the Shape of the counter by adding the shape of this layer to the shape of all inner traits. Minimize generation of new Area objects.- Specified by:
getShape
in interfaceGamePiece
- 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
.
-
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
-
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
-
strip
-
getCommonName
Get the name of this level (alone) -
getLocalizedCommonName
Get the localized name of this level (alone) -
getHelpFile
- Specified by:
getHelpFile
in interfaceEditablePiece
- Returns:
- the help file for this trait
-
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.
-
getLayerWithMatchingActivateCommand
public static Embellishment getLayerWithMatchingActivateCommand(GamePiece piece, KeyStroke stroke, boolean active) If the argument GamePiece contains a Layer whose "activate" command matches the given keystroke, and whose active status matches the boolean argument, return that Layer -
getI18nData
Description copied from class:Decorator
Return Internationalization (I18n) data for this piece- Specified by:
getI18nData
in interfaceTranslatablePiece
- Overrides:
getI18nData
in classDecorator
- Returns:
- I18n data, used to hold translations of strings
-
addLocalImageNames
Description copied from class:AbstractImageFinder
Classes extending AbstractImageFinder should override this method in order to add the names of any image files they use to the collection.- Specified by:
addLocalImageNames
in interfaceImageSearchTarget
- Overrides:
addLocalImageNames
in classAbstractImageFinder
- Parameters:
s
- Collection to add image names to
-