wall edging
-----------

wall edging is an idea to break up the visually repetitive and
very square pattern walls form in the game as viewed by the
player. wall edging will give walls an 'edge' at the boundary of
where a wall meets non-wall.

the basic idea is for each map to simply specify where a wall is
(as they do, using the # character) and then for the map code to
analyse the wall layout within the map to determine what sort of
edging each piece of wall requires.

the edging will just give an outline around a collection of wall
blocks - but not the inner wall blocks (ie no edging around the
middle wall in a 3x3 block).

the walls will still be square with the edging, but they will not
be perfectly square, depending on the wall texture being used,
the edges might be rough, or patterned, etc.

the wall edging will be generated dynamically. there will be four
images (per edging type/pattern) for the top,bottom,left and
right edges. then the program will create a set of surfaces so
that each possible combination of edges for a given wall surface
will be created.

going back to the map, the wall analysing code will (after the
ASCII characters read-in from the map file have been converted to
the ICON enumeration values) substitute the ICON_WALL (enum) for
one of the ICON_WALL_EDGE_xxx (enums) where xxx is the specific
edge type.

these ICON_WALL_EDGE_xxx values will correspond directly to the
surfaces created (which will be pointed to by the main icon list)
and as such, once created, no further computation with regards to
determining and generating edges will be needed once play has
begun.


/Edge Types\
============

EDGE_T      /* top */
EDGE_B      /* bottom */
EDGE_L      /* left */
EDGE_R      /* right */

EDGE_TB     /* top and bottom */
EDGE_LR     /* left and right */

EDGE_TL     /* top and left */
EDGE_TR     /* top and right */

EDGE_BL     /* bottom and left */
EDGE_BR     /* bottom and right */

EDGE_TBL    /* top, bottom, and left */
EDGE_TBR    /* top, bottom, and right */

EDGE_TLR    /* top, left, and right */
EDGE_BLR    /* bottom, left, and right */

EDGE_TBLR   /* top, bottom, left, and right */
