NAME
Game::TextMapper::Point - a point on the map
DESCRIPTION
This is a simple class to hold points. Points have coordinates and know how to print them.
Attributes
x, y, z are coordinates.
type, label, size are used to draw the SVG. These are used by the actual implementations, Game::TextMapper::Point::Hex and Game::TextMapper::Point::Square.
map is a reference to Game::TextMapper::Mapper from which to get text_attributes (for the coordinates), and both label_attributes and glow_attributes (for the label).
Methods
str
Returns "(1,2,3)" or "(1,2)" depending on whether the z coordinate is defined or not; use this for log output.
equal($other)
True if all three coordinates match.
cmp($other)
Return -1, 0, or 1 depending on the three coordinates.
coordinates
Return "1,1,1" or "1,1" for coordinates in scalar context, depending on whether the z coordinate is defined or not, or it returns the three coordinates in list context.
coord($x, $y, $separator)
Return "0101" or "-01-01" for coordinates. Often this is what we want in text. this works up to 99.
Abstract methods
These methods must be implemented by derived classes. The $offset argument is an array with the offsets to add to the y based on z coordinate. The idea is that if we have two dungeon levels, for example, and we want to generate a single SVG document, then the first level is at the top of the page, as usual, and the next level is further down on the page: all the y coordinates were increased by the offset.
svg_region($attributes, $offset)
This returns an SVG fragment, a string with a polygon or rect element, for example.
This is used for the group containing the regions in the resulting SVG.
svg($offset)
This returns an SVG fragment, a string with a use element.
This is used for the group containing the background colours in the resulting SVG.
svg_coordinates($offset)
This returns an SVG fragment, a string with a text element.
This is used for the group containing the coordinates in the resulting SVG.
svg_label($url, $offset)
This returns an SVG fragment, a string with a g element containing two text elements, and possibly an a element: the "glow", the label itself, and possibly a link to the URL.
This is used for g#labels (the group containing the labels) in the resulting SVG.
SEE ALSO
Game::TextMapper::Mapper uses this class. Internally, it calls make_region which is implemented by either Game::TextMapper::Mapper::Hex or Game::TextMapper::Mapper::Square. Depending on the implementation, Game::TextMapper::Point::Hex or Game::TextMapper::Point::Square are used to implement this class.