Package VASSAL.counters
Class UsePrototype
java.lang.Object
VASSAL.search.AbstractImageFinder
VASSAL.counters.Decorator
VASSAL.counters.UsePrototype
- All Implemented Interfaces:
PropertyNameSource
,PropertySource
,EditablePiece
,GamePiece
,PropertyExporter
,StateMergeable
,PersistentPropertyContainer
,Auditable
,ImageSearchTarget
,SearchTarget
,RecursionLimiter.Loopable
d/b/a "Prototype"
This trait is a placeholder for a pre-defined series of traits specified in a
PrototypeDefinition
object. When a piece that uses a prototype is defined in a module, it
is simply assigned the name of a particular prototype definition. When that piece is during a game, the UsePrototype
trait is substituted for the list of traits in the prototype definition. From that point on, the piece has no record
that those traits were defined in a prototype instead of assigned to piece directly. This is necessary so that
subsequent changes to a prototype definition don't invalidate games that were saved using previous versions of the
module.-
Nested Class Summary
-
Field Summary
Fields inherited from interface VASSAL.counters.PropertyExporter
LOCALIZED_NAME
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected 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.A plain-English description of this type of trait/piece - includes data from fields where appropriateBuild a new GamePiece instance based on the traits in the referencedPrototypeDefinition
.protected KeyCommand[]
getName()
The plain English name for this piecegetShape()
The primary way for the piece or trait to receive events.protected KeyCommand[]
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 newState) Sets the state of this-trait-only (inverse ofDecorator.myGetState()
).void
Sets the information for this piece.void
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, getDescriptionField, getExpressionList, getFormattedStringList, getI18nData, getI18nData, getI18nData, getId, getInner, getInnermost, getLocalizedName, getLocalizedProperty, getMap, getMenuTextList, getNamedKeyStrokeList, getOuter, getOutermost, getParent, getPersistentProperty, getPosition, getProperties, getProperty, getPropertyNames, getState, getTranslation, getType, isMenuCommand, isSelected, mergeState, putOldProperties, repack, repack, reportDataError, reportDataError, reportDataError, setDynamicProperties, setDynamicProperties, setDynamicProperty, setId, setMap, setParent, setPersistentProperty, setPosition, setProperty, 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, getProperty, getState, getType, setId, setMap, setParent, setPosition, setProperty, setState
Methods inherited from interface VASSAL.search.ImageSearchTarget
addLocalImageNames, getAllImageNames, getLocalImageNames
Methods inherited from interface VASSAL.counters.PropertyExporter
getProperties
Methods inherited from interface VASSAL.build.module.properties.PropertySource
getLocalizedProperty
-
Field Details
-
ID
- See Also:
-
-
Constructor Details
-
UsePrototype
public UsePrototype() -
UsePrototype
-
-
Method Details
-
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
-
getHelpFile
- Specified by:
getHelpFile
in interfaceEditablePiece
- Returns:
- the help file for this trait
-
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()
-
myGetKeyCommands
- Specified by:
myGetKeyCommands
in classDecorator
- Returns:
- the key commands for this trait alone
- See Also:
-
getKeyCommands
- Overrides:
getKeyCommands
in classDecorator
- 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 ofDecorator.myGetKeyCommands()
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:Decorator.myGetKeyCommands()
, which returns the commands for this Trait/Decorator only.
-
setInner
-
buildPrototype
protected void buildPrototype() -
getExpandedInner
Build a new GamePiece instance based on the traits in the referencedPrototypeDefinition
. Substitute the new instance forDecorator.getInner()
and return it. If the referenced definition does not exist, return the default inner piece.- Returns:
- the new instance
-
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:
-
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. -
keyEvent
Description copied from class:Decorator
The primary way for the piece or trait to receive events. Appends the command returned byDecorator.myKeyEvent(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
- Overrides:
keyEvent
in classDecorator
- 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:
-
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)
-
draw
Description copied from interface:GamePiece
Draw this GamePiece -
getName
-
getShape
- 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
.
-
getPrototypeName
-
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
-
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.
-
getPropertyList
Description copied from class:Decorator
- Specified by:
getPropertyList
in interfaceSearchTarget
- Overrides:
getPropertyList
in classDecorator
- Returns:
- a list of any Property Names referenced in the Decorator, if any (for search)
-