Beispiel #1
0
        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
            }
        }
Beispiel #2
0
        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();
            }
        }
Beispiel #3
0
        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;
            }
        }