Variant.fromJson constructor

Variant.fromJson(
  1. Map<String, dynamic> json, {
  2. List<BishopTypeAdapter> adapters = const [],
})

Implementation

factory Variant.fromJson(
  Map<String, dynamic> json, {
  List<BishopTypeAdapter> adapters = const [],
}) {
  return Variant(
    name: json['name'],
    description: json['description'],
    boardSize: BoardSize.fromString(json['boardSize']),
    pieceTypes: json['pieceTypes'].map<String, PieceType>(
      (k, v) =>
          MapEntry(k as String, PieceType.fromJson(v, adapters: adapters)),
    ),
    castlingOptions: CastlingOptions.fromJson(json['castlingOptions']),
    promotionOptions: (json.containsKey('promotionOptions')
            ? BishopSerialisation.build<PromotionOptions>(
                json['promotionOptions'],
                adapters: adapters,
              )
            : null) ??
        PromotionOptions.standard,
    materialConditions: json.containsKey('materialConditions')
        ? MaterialConditions.fromJson(json['materialConditions'])
        : MaterialConditions.none,
    gameEndConditions: json.containsKey('gameEndConditions')
        ? GameEndConditionSet.fromJson(json['gameEndConditions'])
        : GameEndConditionSet.standard,
    outputOptions: json.containsKey('outputOptions')
        ? OutputOptions.fromJson(json['outputOptions'])
        : OutputOptions.standard,
    startPosition: json['startPosition'],
    startPosBuilder: json.containsKey('startPosBuilder')
        ? BishopSerialisation.build<StartPositionBuilder>(
            json['startPosBuilder'],
            adapters: adapters,
          )
        : null,
    enPassant: json['enPassant'],
    firstMoveOptions: (json.containsKey('firstMoveOptions')
            ? BishopSerialisation.build<FirstMoveOptions>(
                json['firstMoveOptions'],
                adapters: adapters,
              )
            : null) ??
        FirstMoveOptions.standard,
    halfMoveDraw: json['halfMoveDraw'],
    repetitionDraw: json['repetitionDraw'],
    forbidChecks: json['forbidChecks'] ?? false,
    forcedCapture: json['forcedCapture'] != null
        ? ForcedCapture.fromName(json['forcedCapture'])
        : null,
    handOptions: json.containsKey('handOptions')
        ? HandOptions.fromJson(json['handOptions'])
        : HandOptions.disabled,
    gatingMode: GatingMode.values
        .firstWhere((e) => e.name == (json['gatingMode'] ?? 'none')),
    pieceValues: (json['pieceValues'] as Map<String, dynamic>?)?.map(
      (k, v) => MapEntry(k, v as int),
    ),
    passOptions: (json.containsKey('passOptions')
            ? BishopSerialisation.build<PassOptions>(
                json['passOptions'],
                adapters: adapters,
              )
            : null) ??
        PassOptions.none,
    regions: (json['regions'] as Map<String, dynamic>?)
            ?.map((k, v) => MapEntry(k, BoardRegion.fromJson(v))) ??
        const {},
    actions: json.containsKey('actions')
        ? BishopSerialisation.buildMany<Action>(
            json['actions'],
            adapters: adapters,
          )
        : const [],
    stateTransformer: json['stateTransformer'] != null
        ? BishopSerialisation.build<StateTransformer>(
            json['stateTransformer'],
            adapters: adapters,
          )
        : null,
    adapters: adapters,
  );
}