/// <summary> /// /// </summary> /// <param name="IdDB">ID de la partie dans la bases de données</param> public ReplayManager(int IdDB) { GameDataManager db = DBManager.getInstance(); gameToReplay = db.getGameById(IdDB); listMemento = new List <MementoTurn>(); p1 = new PlayerReplay(ColorTranslator.FromHtml(gameToReplay.colorP1), gameToReplay.nameP1, gameToReplay.numP1, gameToReplay.numberTurnP1); p2 = new PlayerReplay(ColorTranslator.FromHtml(gameToReplay.colorP2), gameToReplay.nameP2, gameToReplay.numP2, gameToReplay.numberTurnP2); board = new Board(gameToReplay.initialBoard, p1, p2, true); }
/// <summary> /// Construit un game depuis la base de données /// </summary> /// <param name="IdDB">Identifiant dans la BDD.</param> /// <returns><see cref="Diaballik.Game"/></returns> public Game build(int IdDB) { GameModelDB gameInfo = getGameInfoById(IdDB); Player p1 = initPlayer(gameInfo.typeP1, ColorTranslator.FromHtml(gameInfo.colorP1), gameInfo.nameP1, gameInfo.numP1, gameInfo.numberTurnP1); Player p2 = initPlayer(gameInfo.typeP2, ColorTranslator.FromHtml(gameInfo.colorP2), gameInfo.nameP2, gameInfo.numP2, gameInfo.numberTurnP2); p1.Nbmove = gameInfo.nbMoveP1; p2.Nbmove = gameInfo.nbMoveP2; Board board = new Board(gameInfo.lastBoard, p1, p2); board.MementoManager.setId(gameInfo.Id); return(new Game(board, p1, p2, gameInfo.gameStatus)); }
/// <summary> /// Action sur une partie existante /// </summary> /// <param name="index">Index dans la liste</param> public void ActionOnItem(int index) { GameModelDB game = listGames.ElementAt(index); if (game.gameStatus == GameModelDB.GameStatus.FINISHED) { mI.replayGame(game.Id); } else { mI.resumeGame(game.Id); } }
/// <summary> /// Construit un game /// </summary> /// <returns><see cref="Diaballik.Game"/></returns> /// <exception cref="PlayerNumberException">Nombre de joueur invalide</exception> /// <exception cref="PlayerSameColorException">Veuillez choisir des couleurs distinctes</exception> public Game build() { if (player1 == null || player2 == null) { throw new PlayerNumberException("invalid number players"); } Player p1 = player1.build(1); Player p2 = player2.build(2); if (p1.Color.Equals(p2.Color)) { throw new PlayerSameColorException("Veuillez choisir des couleurs distinctes"); } Board board = new Board(Properties.DEFAULT_SIZE_BOARD); configureBoard(board, p1, p2); GameModelDB gameDB = new GameModelDB { nameP1 = p1.Name, colorP1 = "#" + p1.Color.R.ToString("X2") + p1.Color.G.ToString("X2") + p1.Color.B.ToString("X2"), numP1 = p1.NumberPlayer, typeP1 = p1.getType(), numberTurnP1 = 0, nbMoveP1 = 0, nameP2 = p2.Name, colorP2 = "#" + p2.Color.R.ToString("X2") + p2.Color.G.ToString("X2") + p2.Color.B.ToString("X2"), numP2 = p2.NumberPlayer, typeP2 = p2.getType(), numberTurnP2 = 0, nbMoveP2 = 0, initialBoard = board.convertBoardForCpp(), lastBoard = board.convertBoardForCpp(), turnInformation = new String[0], gameStatus = GameModelDB.GameStatus.STARTING }; int idDB = createGameInDB(gameDB); board.MementoManager.setId(idDB); return(new Game(board, p1, p2)); }
/// <summary> /// sauvegarde les mouvements dans la base de données /// </summary> /// <param name="currentBoard">Board</param> /// <param name="p1">Joueur 1</param> /// <param name="p2">Joueur 2</param> /// <param name="gS">statut de la partie <see cref="GameModelDB.GameStatus"/></param> public void saveData(int[] currentBoard, Player p1, Player p2, GameModelDB.GameStatus gS) { GameModelDB gameModelDB = gameDataManager.getGameById(this.idGame); gameModelDB.lastBoard = currentBoard; List <String> listTurnInfo = gameModelDB.turnInformation.ToList <String>(); while (listMementoObjects.Count != 0) { MementoTurn mt = listMementoObjects.ElementAt(0); listMementoObjects.RemoveAt(0); listTurnInfo.Add(mt.dataToString()); } gameModelDB.numberTurnP1 = p1.NumberTurn; gameModelDB.numberTurnP2 = p2.NumberTurn; gameModelDB.nbMoveP1 = p1.Nbmove; gameModelDB.nbMoveP2 = p2.Nbmove; gameModelDB.turnInformation = listTurnInfo.ToArray <String>(); gameModelDB.gameStatus = gS; gameDataManager.updateGame(gameModelDB); }
/// <summary> /// Créer une partie au sein de la BDD /// </summary> /// <param name="gameModelDB">La partie à sauvegarder.</param> /// <returns>id dans la base de données</returns> private int createGameInDB(GameModelDB gameModelDB) { DBManager dBManager = DBManager.getInstance(); return(dBManager.createGame(gameModelDB)); }