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 what we want in text.

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.