public bool IsKingInCenter(Player player)
{
Cache<bool> cache = player == Player.White ? kingInCenterCacheWhite : kingInCenterCacheBlack;
if (cache.CachedAt == Moves.Count)
{
return cache.Value;
}
foreach (Position pos in center)
{
Piece p = GetPieceAt(pos);
if (p is King && p.Owner == player)
{
return cache.UpdateCache(true, Moves.Count);
}
}
return cache.UpdateCache(false, Moves.Count);
}