Skip to content

Commit

Permalink
Tested the Cards
Browse files Browse the repository at this point in the history
Updated dart protobuf files
  • Loading branch information
F4zination committed Apr 29, 2024
1 parent 0148be6 commit cb9b181
Show file tree
Hide file tree
Showing 17 changed files with 473 additions and 48 deletions.
Binary file added duo_client/assets/game/Kartendeck.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added duo_client/assets/game/test.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
39 changes: 39 additions & 0 deletions duo_client/assets/game/test.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions duo_client/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:duo_client/provider/api_provider.dart';
import 'package:duo_client/provider/storage_provider.dart';
import 'package:duo_client/screens/game_screen.dart';
import 'package:duo_client/screens/home_screen.dart';
import 'package:duo_client/screens/lobby_screen.dart';
import 'package:duo_client/screens/qr_scanner_screen.dart';
Expand Down Expand Up @@ -74,6 +75,7 @@ class _DuoAppState extends ConsumerState<DuoApp> {
),
QrCodeScanner.route: (context) => const QrCodeScanner(),
HomeScreen.route: (context) => const HomeScreen(),
GameScreen.route: (context) => const GameScreen(),
LobbyScreen.route: (context) => const LobbyScreen(),
},
);
Expand Down
234 changes: 234 additions & 0 deletions duo_client/lib/pb/game.pb.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,234 @@
//
// Generated code. Do not modify.
// source: game.proto
//
// @dart = 2.12

// ignore_for_file: annotate_overrides, camel_case_types, comment_references
// ignore_for_file: constant_identifier_names, library_prefixes
// ignore_for_file: non_constant_identifier_names, prefer_final_fields
// ignore_for_file: unnecessary_import, unnecessary_this, unused_import

import 'dart:core' as $core;

import 'package:protobuf/protobuf.dart' as $pb;

class Card extends $pb.GeneratedMessage {
factory Card({
$core.String? cardId,
$core.bool? isFaceUp,
}) {
final $result = create();
if (cardId != null) {
$result.cardId = cardId;
}
if (isFaceUp != null) {
$result.isFaceUp = isFaceUp;
}
return $result;
}
Card._() : super();
factory Card.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
factory Card.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);

static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Card', package: const $pb.PackageName(_omitMessageNames ? '' : 'game'), createEmptyInstance: create)
..aOS(1, _omitFieldNames ? '' : 'cardId')
..aOB(2, _omitFieldNames ? '' : 'isFaceUp')
..hasRequiredFields = false
;

@$core.Deprecated(
'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
'Will be removed in next major version')
Card clone() => Card()..mergeFromMessage(this);
@$core.Deprecated(
'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
Card copyWith(void Function(Card) updates) => super.copyWith((message) => updates(message as Card)) as Card;

$pb.BuilderInfo get info_ => _i;

@$core.pragma('dart2js:noInline')
static Card create() => Card._();
Card createEmptyInstance() => create();
static $pb.PbList<Card> createRepeated() => $pb.PbList<Card>();
@$core.pragma('dart2js:noInline')
static Card getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Card>(create);
static Card? _defaultInstance;

@$pb.TagNumber(1)
$core.String get cardId => $_getSZ(0);
@$pb.TagNumber(1)
set cardId($core.String v) { $_setString(0, v); }
@$pb.TagNumber(1)
$core.bool hasCardId() => $_has(0);
@$pb.TagNumber(1)
void clearCardId() => clearField(1);

@$pb.TagNumber(2)
$core.bool get isFaceUp => $_getBF(1);
@$pb.TagNumber(2)
set isFaceUp($core.bool v) { $_setBool(1, v); }
@$pb.TagNumber(2)
$core.bool hasIsFaceUp() => $_has(1);
@$pb.TagNumber(2)
void clearIsFaceUp() => clearField(2);
}

class PlaceStackState extends $pb.GeneratedMessage {
factory PlaceStackState({
$core.int? amountCards,
Card? cardOnTop,
}) {
final $result = create();
if (amountCards != null) {
$result.amountCards = amountCards;
}
if (cardOnTop != null) {
$result.cardOnTop = cardOnTop;
}
return $result;
}
PlaceStackState._() : super();
factory PlaceStackState.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
factory PlaceStackState.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);

static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PlaceStackState', package: const $pb.PackageName(_omitMessageNames ? '' : 'game'), createEmptyInstance: create)
..a<$core.int>(1, _omitFieldNames ? '' : 'amountCards', $pb.PbFieldType.O3)
..aOM<Card>(2, _omitFieldNames ? '' : 'cardOnTop', subBuilder: Card.create)
..hasRequiredFields = false
;

@$core.Deprecated(
'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
'Will be removed in next major version')
PlaceStackState clone() => PlaceStackState()..mergeFromMessage(this);
@$core.Deprecated(
'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
PlaceStackState copyWith(void Function(PlaceStackState) updates) => super.copyWith((message) => updates(message as PlaceStackState)) as PlaceStackState;

$pb.BuilderInfo get info_ => _i;

@$core.pragma('dart2js:noInline')
static PlaceStackState create() => PlaceStackState._();
PlaceStackState createEmptyInstance() => create();
static $pb.PbList<PlaceStackState> createRepeated() => $pb.PbList<PlaceStackState>();
@$core.pragma('dart2js:noInline')
static PlaceStackState getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<PlaceStackState>(create);
static PlaceStackState? _defaultInstance;

@$pb.TagNumber(1)
$core.int get amountCards => $_getIZ(0);
@$pb.TagNumber(1)
set amountCards($core.int v) { $_setSignedInt32(0, v); }
@$pb.TagNumber(1)
$core.bool hasAmountCards() => $_has(0);
@$pb.TagNumber(1)
void clearAmountCards() => clearField(1);

@$pb.TagNumber(2)
Card get cardOnTop => $_getN(1);
@$pb.TagNumber(2)
set cardOnTop(Card v) { setField(2, v); }
@$pb.TagNumber(2)
$core.bool hasCardOnTop() => $_has(1);
@$pb.TagNumber(2)
void clearCardOnTop() => clearField(2);
@$pb.TagNumber(2)
Card ensureCardOnTop() => $_ensure(1);
}

class DrawStackState extends $pb.GeneratedMessage {
factory DrawStackState({
$core.int? stackId,
$core.int? stackSize,
$core.int? stackType,
$core.Iterable<Card>? cards,
}) {
final $result = create();
if (stackId != null) {
$result.stackId = stackId;
}
if (stackSize != null) {
$result.stackSize = stackSize;
}
if (stackType != null) {
$result.stackType = stackType;
}
if (cards != null) {
$result.cards.addAll(cards);
}
return $result;
}
DrawStackState._() : super();
factory DrawStackState.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
factory DrawStackState.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);

static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DrawStackState', package: const $pb.PackageName(_omitMessageNames ? '' : 'game'), createEmptyInstance: create)
..a<$core.int>(1, _omitFieldNames ? '' : 'stackId', $pb.PbFieldType.O3)
..a<$core.int>(2, _omitFieldNames ? '' : 'stackSize', $pb.PbFieldType.O3)
..a<$core.int>(3, _omitFieldNames ? '' : 'stackType', $pb.PbFieldType.O3)
..pc<Card>(4, _omitFieldNames ? '' : 'cards', $pb.PbFieldType.PM, subBuilder: Card.create)
..hasRequiredFields = false
;

@$core.Deprecated(
'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
'Will be removed in next major version')
DrawStackState clone() => DrawStackState()..mergeFromMessage(this);
@$core.Deprecated(
'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
DrawStackState copyWith(void Function(DrawStackState) updates) => super.copyWith((message) => updates(message as DrawStackState)) as DrawStackState;

$pb.BuilderInfo get info_ => _i;

@$core.pragma('dart2js:noInline')
static DrawStackState create() => DrawStackState._();
DrawStackState createEmptyInstance() => create();
static $pb.PbList<DrawStackState> createRepeated() => $pb.PbList<DrawStackState>();
@$core.pragma('dart2js:noInline')
static DrawStackState getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<DrawStackState>(create);
static DrawStackState? _defaultInstance;

@$pb.TagNumber(1)
$core.int get stackId => $_getIZ(0);
@$pb.TagNumber(1)
set stackId($core.int v) { $_setSignedInt32(0, v); }
@$pb.TagNumber(1)
$core.bool hasStackId() => $_has(0);
@$pb.TagNumber(1)
void clearStackId() => clearField(1);

@$pb.TagNumber(2)
$core.int get stackSize => $_getIZ(1);
@$pb.TagNumber(2)
set stackSize($core.int v) { $_setSignedInt32(1, v); }
@$pb.TagNumber(2)
$core.bool hasStackSize() => $_has(1);
@$pb.TagNumber(2)
void clearStackSize() => clearField(2);

@$pb.TagNumber(3)
$core.int get stackType => $_getIZ(2);
@$pb.TagNumber(3)
set stackType($core.int v) { $_setSignedInt32(2, v); }
@$pb.TagNumber(3)
$core.bool hasStackType() => $_has(2);
@$pb.TagNumber(3)
void clearStackType() => clearField(3);

@$pb.TagNumber(4)
$core.List<Card> get cards => $_getList(3);
}


const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names');
const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names');
11 changes: 11 additions & 0 deletions duo_client/lib/pb/game.pbenum.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
//
// Generated code. Do not modify.
// source: game.proto
//
// @dart = 2.12

// ignore_for_file: annotate_overrides, camel_case_types, comment_references
// ignore_for_file: constant_identifier_names, library_prefixes
// ignore_for_file: non_constant_identifier_names, prefer_final_fields
// ignore_for_file: unnecessary_import, unnecessary_this, unused_import

60 changes: 60 additions & 0 deletions duo_client/lib/pb/game.pbjson.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
//
// Generated code. Do not modify.
// source: game.proto
//
// @dart = 2.12

// ignore_for_file: annotate_overrides, camel_case_types, comment_references
// ignore_for_file: constant_identifier_names, library_prefixes
// ignore_for_file: non_constant_identifier_names, prefer_final_fields
// ignore_for_file: unnecessary_import, unnecessary_this, unused_import

import 'dart:convert' as $convert;
import 'dart:core' as $core;
import 'dart:typed_data' as $typed_data;

@$core.Deprecated('Use cardDescriptor instead')
const Card$json = {
'1': 'Card',
'2': [
{'1': 'card_id', '3': 1, '4': 1, '5': 9, '10': 'cardId'},
{'1': 'is_face_up', '3': 2, '4': 1, '5': 8, '10': 'isFaceUp'},
],
};

/// Descriptor for `Card`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List cardDescriptor = $convert.base64Decode(
'CgRDYXJkEhcKB2NhcmRfaWQYASABKAlSBmNhcmRJZBIcCgppc19mYWNlX3VwGAIgASgIUghpc0'
'ZhY2VVcA==');

@$core.Deprecated('Use placeStackStateDescriptor instead')
const PlaceStackState$json = {
'1': 'PlaceStackState',
'2': [
{'1': 'amount_cards', '3': 1, '4': 1, '5': 5, '10': 'amountCards'},
{'1': 'card_on_top', '3': 2, '4': 1, '5': 11, '6': '.game.Card', '10': 'cardOnTop'},
],
};

/// Descriptor for `PlaceStackState`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List placeStackStateDescriptor = $convert.base64Decode(
'Cg9QbGFjZVN0YWNrU3RhdGUSIQoMYW1vdW50X2NhcmRzGAEgASgFUgthbW91bnRDYXJkcxIqCg'
'tjYXJkX29uX3RvcBgCIAEoCzIKLmdhbWUuQ2FyZFIJY2FyZE9uVG9w');

@$core.Deprecated('Use drawStackStateDescriptor instead')
const DrawStackState$json = {
'1': 'DrawStackState',
'2': [
{'1': 'stack_id', '3': 1, '4': 1, '5': 5, '10': 'stackId'},
{'1': 'stack_size', '3': 2, '4': 1, '5': 5, '10': 'stackSize'},
{'1': 'stack_type', '3': 3, '4': 1, '5': 5, '10': 'stackType'},
{'1': 'cards', '3': 4, '4': 3, '5': 11, '6': '.game.Card', '10': 'cards'},
],
};

/// Descriptor for `DrawStackState`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List drawStackStateDescriptor = $convert.base64Decode(
'Cg5EcmF3U3RhY2tTdGF0ZRIZCghzdGFja19pZBgBIAEoBVIHc3RhY2tJZBIdCgpzdGFja19zaX'
'plGAIgASgFUglzdGFja1NpemUSHQoKc3RhY2tfdHlwZRgDIAEoBVIJc3RhY2tUeXBlEiAKBWNh'
'cmRzGAQgAygLMgouZ2FtZS5DYXJkUgVjYXJkcw==');

23 changes: 23 additions & 0 deletions duo_client/lib/provider/game_state_provider.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,31 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:duo_client/pb/game.pb.dart' as pb;

class GameStateProvider extends ChangeNotifier {
GameStateProvider();

List<pb.Card> _drawPile = [];
List<pb.Card> _discardPile = [];

int disconnect() {
_drawPile.clear();
_discardPile.clear();
notifyListeners();
return 0;
}

pb.Card get nextDrawCard {
if (_drawPile.isEmpty) {
return pb.Card(isFaceUp: false, cardId: '-1');
}
return _drawPile.first;
}

void addCardToDiscardPile(pb.Card card) {
_discardPile.add(card);
notifyListeners();
}
}

final gameStateProvider = ChangeNotifierProvider<GameStateProvider>((ref) {
Expand Down
Loading

0 comments on commit cb9b181

Please sign in to comment.