pieceType method
Implementation
PieceType pieceType(int piece, [int? square]) {
// TODO: make this more efficient by building some of these values in advance
final pd = pieces[piece.type];
if (square == null ||
!hasRegions ||
pd.type.regionEffects.isEmpty ||
!boardSize.onBoard(square)) {
return pd.type;
}
List<RegionEffect> effects = pd.type.changePieceRegionEffects;
if (effects.isEmpty) {
return pd.type;
}
List<String> matchedRegions = [];
for (final region in regions.entries) {
if (boardSize.inRegion(square, region.value)) {
matchedRegions.add(region.key);
}
}
for (RegionEffect re in effects) {
if (matchedRegions.contains(
piece.colour == Bishop.white ? re.whiteRegion : re.blackRegion,
)) {
return re.pieceType!;
}
}
return pd.type;
}