public void loadSavedBoard(out int playerTurn) { // set all fields to null first, // when loading a game and old values persist #region Nullify for (int color = 0; color < numOfPlayers; color++) { for (int i = 0; i < numOfSquaresPerSide; i++) { squares[color][i].Occupant = null; } for (int i = 0; i < numOfExitSquaresPerSide; i++) { exitSquares[color][i].Occupant = null; } } #endregion using (var db = new LudoBoardContext()) { Debug.WriteLine("\nLoading DB"); // reverse so we get the latest saved board var board = (from l in db.LudoBoardTables orderby l.key descending select l).First(); playerTurn = board.PlayerTurn; #region Pieces foreach (var piece in board.Pieces) { int pieceID = piece.ID; int pieceColor = piece.Color; int piecePosition = piece.Position; pieces[pieceColor][pieceID].Active = piece.IsActive; pieces[pieceColor][pieceID].Alive = piece.IsAlive; pieces[pieceColor][pieceID].Position = piece.Position; pieces[pieceColor][pieceID].Steps = piece.Steps; if (piecePosition > -1 && piecePosition <= 9) { squares[(int)Colors.Blue][piecePosition].Occupant = pieces[pieceColor][pieceID]; } else if (piecePosition > 9 && piecePosition <= 19) { squares[(int)Colors.Green][piecePosition%10].Occupant = pieces[pieceColor][pieceID]; } else if (piecePosition > 20 && piecePosition <= 29 ) { squares[(int)Colors.Red][piecePosition%20].Occupant = pieces[pieceColor][pieceID]; } else if (piecePosition > 30 && piecePosition < numOfMaximumStepsPerLap) { squares[(int)Colors.Yellow][piecePosition%30].Occupant = pieces[pieceColor][pieceID]; } else if (piecePosition >= numOfMaximumStepsPerLap) { exitSquares[pieceColor][piecePosition % numOfMaximumStepsPerLap].Occupant = pieces[pieceColor][pieceID]; } } #endregion #region Players foreach (var player in board.Players) { int playerColor = player.Color; players[player.Color].Active = player.IsActive; } #endregion } }
public void saveBoard(int playerTurn) { using (var db = new LudoBoardContext()) { Debug.WriteLine("\nSaving DB"); // Board status ludoBoardTable.IsActive = this.Active; for (int color = 0; color < numOfPlayers; color++) { // Players status ludoBoardTable.Players[color].IsActive = players[color].Active; ludoBoardTable.PlayerTurn = playerTurn; for (int i = 0; i < numOfPiecesPerPlayer; i++) { int index = (color * numOfPlayers) + i; ludoBoardTable.Pieces[index].IsAlive = pieces[color][i].Alive; ludoBoardTable.Pieces[index].IsActive = pieces[color][i].Active; ludoBoardTable.Pieces[index].Position = pieces[color][i].Position; ludoBoardTable.Pieces[index].Steps = pieces[color][i].Steps; } } // db.LudoBoardTables.Add(ludoBoardTable); db.SaveChanges(); } }
public void initializeDatabase() { using (var db = new LudoBoardContext()) { Debug.WriteLine("\nPreparing DB"); ludoBoardTable = new LudoBoardTable(); List<PlayerTable> playerTables = new List<PlayerTable>(); List<PieceTable> pieceTables = new List<PieceTable>(); for (int color = 0; color < numOfPlayers; color++) { for (int i = 0; i < numOfPiecesPerPlayer; i++) { var pieceTable = new PieceTable() { Color = color }; pieceTable.ID = i; pieceTables.Add(pieceTable); } var playerTable = new PlayerTable() { Color = color }; playerTables.Add(playerTable); #region NotUsed //Debug.WriteLine("Creating pieces nestTable"); //var nestTable = new NestTable() { Color = color }; //for (int i = 0; i < numOfPiecesPerPlayer; i++) //{ // nestTable.Pieces.Add(i); // Debug.Write(i); //} //nestTables.Add(nestTable); //for (int id = 0; id < numOfSquaresPerSide; id++) //{ // var squareTable = new SquareTable() { Color = color }; // squareTable.ID = id; // squareTables.Add(squareTable); //} //for (int id = 0; id < numOfExitSquaresPerSide; id++) //{ // var exitSquareTable = new ExitSquareTable() { Color = color }; // exitSquareTable.ID = id; // exitSquareTables.Add(exitSquareTable); //} #endregion } // ludoBoardTable.Pieces = pieceTables; ludoBoardTable.Players = playerTables; } }