You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.3 KiB
102 lines
2.3 KiB
import 'package:bowl_in/model/GameDetail.dart';
|
|
import 'package:bowl_in/model/IGameManager.dart';
|
|
import 'package:bowl_in/model/LocalManager/LocalData.dart';
|
|
import 'package:bowl_in/model/Player.dart';
|
|
|
|
import '../User.dart';
|
|
|
|
class GameManager extends IGameManager {
|
|
final LocalData parent;
|
|
|
|
// Constructor
|
|
GameManager(this.parent){
|
|
_initGame();
|
|
}
|
|
|
|
// Methods
|
|
_initGame() async {
|
|
parent.gameDetails = await parent.database.readGameDetail();
|
|
}
|
|
|
|
GameDetail getGameById(int id) {
|
|
for (var element in parent.gameDetails) {
|
|
if (element.id == id) {
|
|
return element;
|
|
}
|
|
}
|
|
throw Exception("Game not found.");
|
|
}
|
|
|
|
saveGame(GameDetail gameDetail) async {
|
|
await parent.database.createGameDetail(gameDetail);
|
|
}
|
|
|
|
List<GameDetail> getGamesByPlayerId(int id) {
|
|
List<GameDetail> games = [];
|
|
for (var element in parent.gameDetails) {
|
|
for (Player player in element.players) {
|
|
if (player is User && player.id == id) {
|
|
games.add(element);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return games;
|
|
}
|
|
|
|
List<GameDetail> getGamesByPlayer(Player user) {
|
|
List<GameDetail> games = [];
|
|
for (var element in parent.gameDetails) {
|
|
for (Player player in element.players) {
|
|
if (player is User && user is User && player.id == user.id) {
|
|
games.add(element);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return games;
|
|
}
|
|
|
|
List<GameDetail> getGamesByPlayers(List<Player> users) {
|
|
List<GameDetail> games = [];
|
|
for (var element in parent.gameDetails) {
|
|
if (element.players.toSet().containsAll(users.toSet())) {
|
|
games.add(element);
|
|
}
|
|
}
|
|
return games;
|
|
}
|
|
|
|
List<Player> getPlayersByIdGame(int id) {
|
|
List<Player> players = [];
|
|
for (var element in parent.gameDetails) {
|
|
if (element.id == id) {
|
|
for (var player in element.players) {
|
|
players.add(player);
|
|
}
|
|
return players;
|
|
}
|
|
}
|
|
throw Exception("Game not found.");
|
|
}
|
|
|
|
Map<Player, int> getRankByIdGame(int id) {
|
|
for (var game in parent.gameDetails) {
|
|
if (game.id == id) {
|
|
return game.getRank();
|
|
}
|
|
}
|
|
throw Exception("Game not found.");
|
|
}
|
|
|
|
@override
|
|
addGame(GameDetail gd) {
|
|
parent.gameDetails.add(gd);
|
|
}
|
|
|
|
@override
|
|
int getNextId() {
|
|
return parent.gameDetails.length;
|
|
}
|
|
}
|