/* Intercept a check to the white king * @param dir_from_rider direction from rider giving check to white king * @param go_on what to do after each successful interception? */ void intelligent_intercept_check_by_black(slice_index si, int dir_from_rider, void (*go_on)(slice_index si)) { TraceFunctionEntry(__func__); TraceFunctionParam("%d",dir_from_rider); TraceFunctionParamListEnd(); if (intelligent_reserve_masses(Black,1,piece_intercepts)) { black_piece(si,dir_from_rider,go_on); intelligent_unreserve(); } if (intelligent_reserve_masses(White,1,piece_intercepts)) { white_piece(si,dir_from_rider,go_on); intelligent_unreserve(); } TraceFunctionExit(__func__); TraceFunctionResultEnd(); }
/* Intercept a guard by white * @param target guard of what square * @param dir_from_rider direction from guarding rider * @param go_on what to do after each successful interception? */ void intelligent_intercept_guard_by_white(square target, int dir_from_rider, void (*go_on)(void)) { TraceFunctionEntry(__func__); TraceFunctionParam("%d",dir_from_rider); TraceFunctionParamListEnd(); if (intelligent_reserve_masses(Black,1,piece_intercepts)) { black_piece(target,dir_from_rider,go_on); intelligent_unreserve(); } if (intelligent_reserve_masses(White,1,piece_intercepts)) { white_piece(target,dir_from_rider,go_on); intelligent_unreserve(); } TraceFunctionExit(__func__); TraceFunctionResultEnd(); }