Skip to content
Snippets Groups Projects
Commit a74f4989 authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Merge branch '11-display-current-associations' into 'master'

Resolve "Display current associations"

Closes #11

See merge request !15
parents 6c9b15bb 93a028e2
No related branches found
No related tags found
1 merge request!15Resolve "Display current associations"
Pipeline #5030 passed
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=0.0.15 app.versionName=0.0.16
app.versionCode=15 app.versionCode=16
Display current positions.
Affiche les positions en cours.
...@@ -16,8 +16,21 @@ class GameCubit extends HydratedCubit<GameState> { ...@@ -16,8 +16,21 @@ class GameCubit extends HydratedCubit<GameState> {
void setValues({ void setValues({
Move? move, Move? move,
}) { }) {
List<Move> history = state.history ?? [];
if (move != null) {
history.add(move);
}
emit(GameState( emit(GameState(
move: move ?? state.move, move: move ?? state.move,
history: history,
));
}
void deleteHistory() {
emit(GameState(
move: state.move,
history: [],
)); ));
} }
......
...@@ -4,16 +4,20 @@ part of 'game_cubit.dart'; ...@@ -4,16 +4,20 @@ part of 'game_cubit.dart';
class GameState extends Equatable { class GameState extends Equatable {
const GameState({ const GameState({
this.move, this.move,
this.history,
}); });
final Move? move; final Move? move;
final List<Move>? history;
@override @override
List<dynamic> get props => <dynamic>[ List<dynamic> get props => <dynamic>[
move, move,
history,
]; ];
Map<String, dynamic> get values => <String, dynamic>{ Map<String, dynamic> get values => <String, dynamic>{
'move': move, 'move': move,
'history': history,
}; };
} }
...@@ -18,6 +18,13 @@ class Move { ...@@ -18,6 +18,13 @@ class Move {
); );
} }
factory Move.createFrom({TwisterMember? member, TwisterColor? color}) {
return Move(
color: color,
member: member,
);
}
factory Move.pickRandom() { factory Move.pickRandom() {
return Move( return Move(
color: TwisterColor.pickRandom(), color: TwisterColor.pickRandom(),
......
...@@ -7,6 +7,8 @@ import 'package:flutter_bloc/flutter_bloc.dart'; ...@@ -7,6 +7,8 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:twister/cubit/game_cubit.dart'; import 'package:twister/cubit/game_cubit.dart';
import 'package:twister/models/move.dart'; import 'package:twister/models/move.dart';
import 'package:twister/models/twister_color.dart';
import 'package:twister/models/twister_member.dart';
import 'package:twister/ui/widgets/show_move.dart'; import 'package:twister/ui/widgets/show_move.dart';
class Game extends StatefulWidget { class Game extends StatefulWidget {
...@@ -64,11 +66,75 @@ class _GameState extends State<Game> { ...@@ -64,11 +66,75 @@ class _GameState extends State<Game> {
player.play(AssetSource(newMove.toSoundAsset())); player.play(AssetSource(newMove.toSoundAsset()));
} }
Widget buildCurrentStateWidget(List<Move>? history) {
Map<String, TwisterColor?> currentState = {};
history?.forEach((move) {
currentState[move.member.toString()] = move.color;
});
TwisterMember leftHand = TwisterMember(value: TwisterAllowedMembers.leftHand);
TwisterMember rightHand = TwisterMember(value: TwisterAllowedMembers.rightHand);
TwisterMember leftFoot = TwisterMember(value: TwisterAllowedMembers.leftFoot);
TwisterMember rightFoot = TwisterMember(value: TwisterAllowedMembers.rightFoot);
Move leftHandMove = Move.createFrom(
member: leftHand,
color: currentState[leftHand.toString()],
);
Move rightHandMove = Move.createFrom(
member: rightHand,
color: currentState[rightHand.toString()],
);
Move leftFootMove = Move.createFrom(
member: leftFoot,
color: currentState[leftFoot.toString()],
);
Move rightFootMove = Move.createFrom(
member: rightFoot,
color: currentState[rightFoot.toString()],
);
return Padding(
padding: EdgeInsets.all(30),
child: Table(
children: [
TableRow(
children: [
Padding(
padding: EdgeInsets.all(10),
child: ShowMove(move: leftHandMove),
),
Padding(
padding: EdgeInsets.all(10),
child: ShowMove(move: rightHandMove),
),
],
),
TableRow(
children: [
Padding(
padding: EdgeInsets.all(10),
child: ShowMove(move: leftFootMove),
),
Padding(
padding: EdgeInsets.all(10),
child: ShowMove(move: rightFootMove),
),
],
)
],
),
);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocBuilder<GameCubit, GameState>( return BlocBuilder<GameCubit, GameState>(
builder: (BuildContext context, GameState gameState) { builder: (BuildContext context, GameState gameState) {
return GestureDetector( return Column(
children: [
GestureDetector(
child: shuffling child: shuffling
? Transform.rotate( ? Transform.rotate(
angle: 2 * pi * Random().nextDouble(), angle: 2 * pi * Random().nextDouble(),
...@@ -78,6 +144,14 @@ class _GameState extends State<Game> { ...@@ -78,6 +144,14 @@ class _GameState extends State<Game> {
onTap: () { onTap: () {
animate(); animate();
}, },
),
GestureDetector(
child: buildCurrentStateWidget(gameState.history),
onTap: () {
BlocProvider.of<GameCubit>(context).deleteHistory();
},
),
],
); );
}, },
); );
......
...@@ -3,7 +3,7 @@ description: twister game companion ...@@ -3,7 +3,7 @@ description: twister game companion
publish_to: 'none' publish_to: 'none'
version: 0.0.15+15 version: 0.0.16+16
environment: environment:
sdk: '^3.0.0' sdk: '^3.0.0'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment