Use flexible promotion assignment
authorH.G.Muller <hgm@hgm-xboard.(none)>
Sat, 30 Jan 2016 08:09:03 +0000 (09:09 +0100)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Sat, 30 Jan 2016 08:09:03 +0000 (09:09 +0100)
commit7693c7936daeb938298191577545323f382ef3a4
tree458a5e778721e4d1d3d7b404f38d51490c0ea00c
parentff23924264802924788f2a15c73a8d058e90432e
Use flexible promotion assignment

The promoted partner now comes from an array, rather than by adding
a constant (11, or 27 in chu) to the base type. The array is initialized
so the first 11 pieces (the old 'base pieces') point to the second 11
(the old 'promoted series'), and the latter point back (so the array
also contains the demotions!). The pieces above 21 (= Lion) point to
themselves.
  Parsing of the pieceToChar string now considers ^, - and * prefixes
rather than independent IDs. Nevertheless it is the - and ^ that get
stored in the pieceToCharTable (the latter as '+') for the corresponding
piece. But the ID that follows them specifies what other piece they are
the demoted or promoted partner of, rather than their own ID, and is
thus used to update the promoPartner array for both of them.
  A * prefix does mean the following ID is the ID assigned to the piece,
but that the piece promotes to Tokin (if the latter is assigned a '+').
  The default pieceToChar string for varaint chu is adapted to use this
new assignment mechanism of promotion partner. (Chu is so far the only
variant that needed other pairing than the default.)
backend.c
common.h
moves.c
moves.h