toJson method
Implementation
Map<String, dynamic> toJson({
bool verbose = false,
List<BishopTypeAdapter> adapters = const [],
}) {
final allAdapters = [...adapters, ...this.adapters];
return {
'name': name,
'description': description,
'bishopVersion': Bishop.version,
'boardSize': boardSize.simpleString,
'pieceTypes': pieceTypes.map(
(k, v) => MapEntry(
k,
v.toJson(verbose: verbose, adapters: allAdapters),
),
),
'castlingOptions': castlingOptions.toJson(),
'promotionOptions': BishopSerialisation.export<PromotionOptions>(
promotionOptions,
adapters: allAdapters,
),
'materialConditions': materialConditions.toJson(),
if (verbose || gameEndConditions != GameEndConditionSet.standard)
'gameEndConditions': gameEndConditions.toJson(),
if (verbose || outputOptions != OutputOptions.standard)
'outputOptions': outputOptions.toJson(),
'startPosition': startPosition,
if (startPosBuilder != null)
'startPosBuilder': BishopSerialisation.export<StartPositionBuilder>(
startPosBuilder!,
adapters: allAdapters,
),
'enPassant': enPassant,
if (verbose || firstMoveOptions is! InitialStateFirstMoveOptions)
'firstMoveOptions': BishopSerialisation.export<FirstMoveOptions>(
firstMoveOptions,
adapters: allAdapters,
),
if (halfMoveDraw != null) 'halfMoveDraw': halfMoveDraw,
if (repetitionDraw != null) 'repetitionDraw': repetitionDraw,
if (verbose || forbidChecks) 'forbidChecks': forbidChecks,
if (verbose || forcedCapture != null)
'forcedCapture': forcedCapture?.name,
if (verbose || handOptions.enableHands)
'handOptions': handOptions.toJson(
verbose: verbose,
adapters: allAdapters,
),
if (verbose || gatingMode != GatingMode.none)
'gatingMode': gatingMode.name,
if (pieceValues != null) 'pieceValues': pieceValues,
if (verbose || passOptions is! NoPass)
'passOptions': BishopSerialisation.export<PassOptions>(
passOptions,
adapters: allAdapters,
),
if (verbose || regions.isNotEmpty)
'regions': regions.map((k, v) => MapEntry(k, v.toJson())),
if (verbose || actions.isNotEmpty)
'actions': BishopSerialisation.exportMany<Action>(
actions,
strict: false,
adapters: allAdapters,
),
if (stateTransformer != null)
'stateTransformer': BishopSerialisation.export<StateTransformer>(
stateTransformer!,
adapters: allAdapters,
),
if (verbose || moveGenerators.isNotEmpty)
'moveGenerators': BishopSerialisation.exportMany<MoveGenerator>(
moveGenerators,
adapters: allAdapters,
),
if (verbose || moveProcessors.isNotEmpty)
'moveProcessors': BishopSerialisation.exportMany<MoveProcessor>(
moveProcessors,
adapters: allAdapters,
),
};
}