Class SendToLocation

All Implemented Interfaces:
PropertyNameSource, PropertySource, EditablePiece, GamePiece, PropertyExporter, StateMergeable, TranslatablePiece, PersistentPropertyContainer, Auditable, ImageSearchTarget, SearchTarget

public class SendToLocation extends Decorator implements TranslatablePiece
This trait adds a command that sends a piece to another location. Options for the target location are:
  • Specified x,y co-ords on a named map/board
  • The centre of a named Zone on a named map
  • A named Region on a named map
  • The location of another counter selected by a Property Match String
  • A specified grid-location on a given board and map
  • Once the target location is identified, it can be further offset in the X and Y directions by a set of multipliers. All Input Fields may use $...$ variable names

    • Field Details

    • Constructor Details

      • SendToLocation

        public SendToLocation()
      • SendToLocation

        public SendToLocation(String type, GamePiece inner)
    • Method Details

      • mySetType

        public void mySetType(String type)
        Description copied from interface: EditablePiece
        Sets the information for this piece. See Decorator.myGetType()
        Specified by:
        mySetType in interface EditablePiece
        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

        public String 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.
        Specified by:
        myGetType in class Decorator
        Returns:
        the type information of this trait alone
        See Also:
      • myGetKeyCommands

        protected KeyCommand[] myGetKeyCommands()
        Specified by:
        myGetKeyCommands in class Decorator
        Returns:
        the key commands for this trait alone
        See Also:
      • myGetState

        public String 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 class Decorator
        Returns:
        the game state information of this trait alone
        See Also:
      • getSendLocation

        public static SendToLocation.Destination getSendLocation(PropertySource source, Auditable auditSource, String destination, FormattedString mapId, FormattedString boardName, FormattedString zone, FormattedString region, FormattedString gridLocation, FormattedString x, FormattedString y, PropertyExpression propertyFilter, Map sourceMap, Point startPosition)
        Compute a destination from the parameters
        Parameters:
        source - The property source for any expressions or property filters (e.g. the outer piece in the case of a Send To Location, the map in the case of a MoveCameraButton)
        auditSource - Our audit type in case something goes wrong (e.g. this specific STL trait, or the specific MCB component)
        destination - Destination type (send-to-XYlocation? send-to-zone? send-to-grid-location? send-to property matched counter? etc)
        mapId - Map Id, or null to use sourceMap
        boardName - BoardName expression
        zone - Zone expression
        region - Region expression
        gridLocation - gridLocation expression
        x - X Position expression
        y - Y Position expression
        propertyFilter - Property filter to be used if we're selecting a destination counter based on one
        sourceMap - The source map if we're matching a counter by property filter expression (and used as the map for all purposes if mapId is null)
        startPosition - Starting position to base any "nearest piece" calculation from
        Returns:
        Destination object (includes map and point)
      • myKeyEvent

        public Command myKeyEvent(KeyStroke stroke)
        Description copied from class: Decorator
        The response of this trait alone to the given KeyStroke or the virtual keystroke of a NamedKeyStroke. 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 (see NamedKeyStroke.getKeyStroke()).
        Specified by:
        myKeyEvent in class Decorator
        Parameters:
        stroke - KeyStroke to apply (to apply a Named Keystroke send NamedKeyStroke.getKeyStroke()
        Returns:
        Generated Command to reproduce any changes just made to to the game state, or null if no effect
        See Also:
      • offsetDestination

        protected Point offsetDestination(int x, int y, GamePiece outer)
      • mySetState

        public void mySetState(String newState)
        Description copied from class: Decorator
        Sets the state of this-trait-only (inverse of Decorator.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 class Decorator
        Parameters:
        newState - New state information serialized in string form, ready to be passed to a SequenceEncoder#decode.
      • boundingBox

        public Rectangle boundingBox()
        Specified by:
        boundingBox in interface GamePiece
        Returns:
        The area which this GamePiece occupies when drawn at the point (0,0)
      • draw

        public void draw(Graphics g, int x, int y, Component obs, double zoom)
        Description copied from interface: GamePiece
        Draw this GamePiece
        Specified by:
        draw in interface GamePiece
        Parameters:
        g - target Graphics object
        x - x-location of the center of the piece
        y - y-location of the center of the piece
        obs - the Component on which this piece is being drawn
        zoom - the scaling factor.
      • getName

        public String getName()
        Description copied from interface: GamePiece
        The plain English name for this piece
        Specified by:
        getName in interface GamePiece
      • getShape

        public Shape getShape()
        Specified by:
        getShape in interface GamePiece
        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 see NonRectangular.
      • getEditor

        public PieceEditor getEditor()
        Specified by:
        getEditor in interface EditablePiece
        Overrides:
        getEditor in class Decorator
        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.
      • getDescription

        public String 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 interface EditablePiece
      • getBaseDescription

        public String 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 interface EditablePiece
        Returns:
        name of trait/piece type, w/o additional data
      • getDescriptionField

        public String getDescriptionField()
        Description copied from class: Decorator
        If Decorator contains a description *field*, returns the current contents of it.
        Overrides:
        getDescriptionField in class Decorator
        Returns:
        contents of "description" field, if it exists.
      • getHelpFile

        public HelpFile getHelpFile()
        Specified by:
        getHelpFile in interface EditablePiece
        Returns:
        the help file for this trait
      • getI18nData

        public PieceI18nData getI18nData()
        Description copied from class: Decorator
        Return Internationalization (I18n) data for this piece
        Specified by:
        getI18nData in interface TranslatablePiece
        Overrides:
        getI18nData in class Decorator
        Returns:
        I18n data, used to hold translations of strings
      • testEquals

        public boolean testEquals(Object o)
        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 class Decorator
        Parameters:
        o - Object to compare this Decorator to
        Returns:
        true if the Class, type and state all match
      • getExpressionList

        public List<String> getExpressionList()
        Description copied from class: Decorator
        Specified by:
        getExpressionList in interface SearchTarget
        Overrides:
        getExpressionList in class Decorator
        Returns:
        a list of the Decorator's string/expression fields if any (for search)
      • getNamedKeyStrokeList

        public List<NamedKeyStroke> getNamedKeyStrokeList()
        Description copied from class: Decorator
        Specified by:
        getNamedKeyStrokeList in interface SearchTarget
        Overrides:
        getNamedKeyStrokeList in class Decorator
        Returns:
        a list of any Named KeyStrokes referenced in the Decorator, if any (for search)
      • getMenuTextList

        public List<String> getMenuTextList()
        Description copied from class: Decorator
        Specified by:
        getMenuTextList in interface SearchTarget
        Overrides:
        getMenuTextList in class Decorator
        Returns:
        a list of any Menu Text strings referenced in the Decorator, if any (for search)