Skip to content

Commit

Permalink
Add background
Browse files Browse the repository at this point in the history
  • Loading branch information
CodeDoctorDE committed May 9, 2023
1 parent 11c4264 commit f7411d9
Show file tree
Hide file tree
Showing 4 changed files with 174 additions and 38 deletions.
6 changes: 4 additions & 2 deletions app/lib/logic/state.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class GameCard with _$GameCard {
@Default(1) int number,
}) = ClassicGameCard;

const factory GameCard.background() = BackgroundGameCard;

factory GameCard.fromJson(Map<String, dynamic> json) =>
_$GameCardFromJson(json);

Expand Down Expand Up @@ -144,12 +146,12 @@ class GameDeck with _$GameDeck {
return copyWith(
cards: [
cards.first,
...cards.map((e) => e.copyWith(number: -1)).toList(),
...cards.map((e) => const BackgroundGameCard()).toList(),
],
);
case DeckVisibility.hidden:
return copyWith(
cards: cards.map((e) => e.copyWith(number: -1)).toList(),
cards: cards.map((e) => const BackgroundGameCard()).toList(),
);
}
}
Expand Down
183 changes: 150 additions & 33 deletions app/lib/logic/state.freezed.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,57 +15,65 @@ final _privateConstructorUsedError = UnsupportedError(
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods');

GameCard _$GameCardFromJson(Map<String, dynamic> json) {
return ClassicGameCard.fromJson(json);
switch (json['type']) {
case 'classic':
return ClassicGameCard.fromJson(json);
case 'background':
return BackgroundGameCard.fromJson(json);

default:
throw CheckedFromJsonException(
json, 'type', 'GameCard', 'Invalid union type "${json['type']}"!');
}
}

/// @nodoc
mixin _$GameCard {
ClassicGameCardColor get color => throw _privateConstructorUsedError;
int get number => throw _privateConstructorUsedError;
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function(ClassicGameCardColor color, int number) classic,
required TResult Function() background,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult? Function(ClassicGameCardColor color, int number)? classic,
TResult? Function()? background,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function(ClassicGameCardColor color, int number)? classic,
TResult Function()? background,
required TResult orElse(),
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult map<TResult extends Object?>({
required TResult Function(ClassicGameCard value) classic,
required TResult Function(BackgroundGameCard value) background,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>({
TResult? Function(ClassicGameCard value)? classic,
TResult? Function(BackgroundGameCard value)? background,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
TResult Function(ClassicGameCard value)? classic,
TResult Function(BackgroundGameCard value)? background,
required TResult orElse(),
}) =>
throw _privateConstructorUsedError;
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
$GameCardCopyWith<GameCard> get copyWith =>
throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $GameCardCopyWith<$Res> {
factory $GameCardCopyWith(GameCard value, $Res Function(GameCard) then) =
_$GameCardCopyWithImpl<$Res, GameCard>;
@useResult
$Res call({ClassicGameCardColor color, int number});
}

/// @nodoc
Expand All @@ -77,33 +85,13 @@ class _$GameCardCopyWithImpl<$Res, $Val extends GameCard>
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;

@pragma('vm:prefer-inline')
@override
$Res call({
Object? color = null,
Object? number = null,
}) {
return _then(_value.copyWith(
color: null == color
? _value.color
: color // ignore: cast_nullable_to_non_nullable
as ClassicGameCardColor,
number: null == number
? _value.number
: number // ignore: cast_nullable_to_non_nullable
as int,
) as $Val);
}
}

/// @nodoc
abstract class _$$ClassicGameCardCopyWith<$Res>
implements $GameCardCopyWith<$Res> {
abstract class _$$ClassicGameCardCopyWith<$Res> {
factory _$$ClassicGameCardCopyWith(
_$ClassicGameCard value, $Res Function(_$ClassicGameCard) then) =
__$$ClassicGameCardCopyWithImpl<$Res>;
@override
@useResult
$Res call({ClassicGameCardColor color, int number});
}
Expand Down Expand Up @@ -139,7 +127,10 @@ class __$$ClassicGameCardCopyWithImpl<$Res>
@JsonSerializable()
class _$ClassicGameCard implements ClassicGameCard {
const _$ClassicGameCard(
{this.color = ClassicGameCardColor.heart, this.number = 1});
{this.color = ClassicGameCardColor.heart,
this.number = 1,
final String? $type})
: $type = $type ?? 'classic';

factory _$ClassicGameCard.fromJson(Map<String, dynamic> json) =>
_$$ClassicGameCardFromJson(json);
Expand All @@ -151,6 +142,9 @@ class _$ClassicGameCard implements ClassicGameCard {
@JsonKey()
final int number;

@JsonKey(name: 'type')
final String $type;

@override
String toString() {
return 'GameCard.classic(color: $color, number: $number)';
Expand Down Expand Up @@ -179,6 +173,7 @@ class _$ClassicGameCard implements ClassicGameCard {
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function(ClassicGameCardColor color, int number) classic,
required TResult Function() background,
}) {
return classic(color, number);
}
Expand All @@ -187,6 +182,7 @@ class _$ClassicGameCard implements ClassicGameCard {
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult? Function(ClassicGameCardColor color, int number)? classic,
TResult? Function()? background,
}) {
return classic?.call(color, number);
}
Expand All @@ -195,6 +191,7 @@ class _$ClassicGameCard implements ClassicGameCard {
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function(ClassicGameCardColor color, int number)? classic,
TResult Function()? background,
required TResult orElse(),
}) {
if (classic != null) {
Expand All @@ -207,6 +204,7 @@ class _$ClassicGameCard implements ClassicGameCard {
@optionalTypeArgs
TResult map<TResult extends Object?>({
required TResult Function(ClassicGameCard value) classic,
required TResult Function(BackgroundGameCard value) background,
}) {
return classic(this);
}
Expand All @@ -215,6 +213,7 @@ class _$ClassicGameCard implements ClassicGameCard {
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>({
TResult? Function(ClassicGameCard value)? classic,
TResult? Function(BackgroundGameCard value)? background,
}) {
return classic?.call(this);
}
Expand All @@ -223,6 +222,7 @@ class _$ClassicGameCard implements ClassicGameCard {
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
TResult Function(ClassicGameCard value)? classic,
TResult Function(BackgroundGameCard value)? background,
required TResult orElse(),
}) {
if (classic != null) {
Expand All @@ -246,16 +246,133 @@ abstract class ClassicGameCard implements GameCard {
factory ClassicGameCard.fromJson(Map<String, dynamic> json) =
_$ClassicGameCard.fromJson;

@override
ClassicGameCardColor get color;
@override
int get number;
@override
@JsonKey(ignore: true)
_$$ClassicGameCardCopyWith<_$ClassicGameCard> get copyWith =>
throw _privateConstructorUsedError;
}

/// @nodoc
abstract class _$$BackgroundGameCardCopyWith<$Res> {
factory _$$BackgroundGameCardCopyWith(_$BackgroundGameCard value,
$Res Function(_$BackgroundGameCard) then) =
__$$BackgroundGameCardCopyWithImpl<$Res>;
}

/// @nodoc
class __$$BackgroundGameCardCopyWithImpl<$Res>
extends _$GameCardCopyWithImpl<$Res, _$BackgroundGameCard>
implements _$$BackgroundGameCardCopyWith<$Res> {
__$$BackgroundGameCardCopyWithImpl(
_$BackgroundGameCard _value, $Res Function(_$BackgroundGameCard) _then)
: super(_value, _then);
}

/// @nodoc
@JsonSerializable()
class _$BackgroundGameCard implements BackgroundGameCard {
const _$BackgroundGameCard({final String? $type})
: $type = $type ?? 'background';

factory _$BackgroundGameCard.fromJson(Map<String, dynamic> json) =>
_$$BackgroundGameCardFromJson(json);

@JsonKey(name: 'type')
final String $type;

@override
String toString() {
return 'GameCard.background()';
}

@override
bool operator ==(dynamic other) {
return identical(this, other) ||
(other.runtimeType == runtimeType && other is _$BackgroundGameCard);
}

@JsonKey(ignore: true)
@override
int get hashCode => runtimeType.hashCode;

@override
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function(ClassicGameCardColor color, int number) classic,
required TResult Function() background,
}) {
return background();
}

@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult? Function(ClassicGameCardColor color, int number)? classic,
TResult? Function()? background,
}) {
return background?.call();
}

@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function(ClassicGameCardColor color, int number)? classic,
TResult Function()? background,
required TResult orElse(),
}) {
if (background != null) {
return background();
}
return orElse();
}

@override
@optionalTypeArgs
TResult map<TResult extends Object?>({
required TResult Function(ClassicGameCard value) classic,
required TResult Function(BackgroundGameCard value) background,
}) {
return background(this);
}

@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>({
TResult? Function(ClassicGameCard value)? classic,
TResult? Function(BackgroundGameCard value)? background,
}) {
return background?.call(this);
}

@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
TResult Function(ClassicGameCard value)? classic,
TResult Function(BackgroundGameCard value)? background,
required TResult orElse(),
}) {
if (background != null) {
return background(this);
}
return orElse();
}

@override
Map<String, dynamic> toJson() {
return _$$BackgroundGameCardToJson(
this,
);
}
}

abstract class BackgroundGameCard implements GameCard {
const factory BackgroundGameCard() = _$BackgroundGameCard;

factory BackgroundGameCard.fromJson(Map<String, dynamic> json) =
_$BackgroundGameCard.fromJson;
}

GameState _$GameStateFromJson(Map<String, dynamic> json) {
return _GameState.fromJson(json);
}
Expand Down
13 changes: 13 additions & 0 deletions app/lib/logic/state.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 7 additions & 3 deletions app/lib/pages/game/deck.dart
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class GameDeckView extends StatelessWidget {
Widget build(BuildContext context) {
final firstCard = deck.cards.firstOrNull;
return SizedBox(
width: 120,
width: 150,
child: Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
Expand All @@ -65,8 +65,12 @@ class GameDeckView extends StatelessWidget {
),
),
),
Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
Text(deck.name),
Row(children: [
Expanded(
child: Text(
deck.name,
overflow: TextOverflow.ellipsis,
)),
MenuAnchor(
builder: (context, controller, child) => IconButton(
icon: const PhosphorIcon(PhosphorIconsLight.list),
Expand Down

0 comments on commit f7411d9

Please sign in to comment.