Ejemplo n.º 1
0
        public void RequesPutPiece(PieceData data)
        {
            Player player = this.playersRegistered.ElementAt(data.jugador);
            Piece  pieza  = null;

            foreach (Piece piece in player.PlayerPieces.Pieces)    //obtengo pieza que quiero poner
            {
                if (piece.ToInt() == data.valor)
                {
                    pieza = piece;
                }
            }
            if (data.index < 27)
            {
                tablePieces.Insert(0, pieza);                   //añado por la izquierda a la mesa
            }
            if (data.index > 27)
            {
                tablePieces.Add(pieza);                        //añado por la derecha a la mesa
            }
            servidor.NewPieceOnTable(data, playersRegistered); //pongo ficha
            player.PlayerPieces.Pieces.Remove(pieza);          //quito de la mano del jugador la puesta
            int ret = IsHandEnded();

            if (ret != -1)   //si ha terminado la mano, ejecuto el fin de mano
            {
                EndHand(ret);
            }
            else    //si noha terminado, cambio turno al siguiente
            {
                CambiaTurno();
            }
        }
Ejemplo n.º 2
0
 public void PutPieceOnTable(List <Player> PlayersRegistered, Piece CurrentStartPiece, int CurrentStartPiecePosition, int PlayerWhoStarts)
 {
     for (int j = 0; j < PlayersRegistered.Count; j++)
     {
         pieceD = new PieceData(0, CurrentStartPiece.ToInt(), CurrentStartPiecePosition, PlayerWhoStarts);
         PlayersRegistered[j].PlayerCallbackChannel.PutPiece(pieceD);
     }
 }
Ejemplo n.º 3
0
 public void NewPieceOnTable(PieceData data, List <Player> PlayersRegistered)
 {
     foreach (Player player in PlayersRegistered)
     {
         if (player.tablePosition != data.jugador)
         {
             player.PlayerCallbackChannel.NewPieceOnTable(data);
         }
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Actualiza la mano del jugador que puso la ficha, en todas las Instancias.
 /// </summary>
 public void UpdatePiecesPlayers(List <Player> PlayersRegistered, PieceData piece)
 {
     for (int j = 0; j < PlayersRegistered.Count; j++)
     {
         //todos los jugadores, menos el que puso la ficha.
         if (piece.PlayerPosition != j)
         {
             PlayersRegistered.ElementAt(j).PlayerCallbackChannel.ShowPieceUpdate(piece);
         }
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Envío la ficha a todas las Instancias
 /// </summary>
 public void InfoPiecePutOntable(List <Player> PlayersRegistered, PieceData piece, IDominoServiceCallbackContract Callback)
 {
     foreach (Player PlayerRegistered in PlayersRegistered)
     {
         //La ficha que manda ese jugador, que sea diferente a los demás jugadores, para así no mandarme a mí mismo la ficha
         if (piece.PlayerPosition != PlayerRegistered.tablePosition)
         {
             //aqui informo a los demas jugadores la ficha que se ha puesto
             PlayerRegistered.PlayerCallbackChannel.NewPutPieceOnPanel(piece);
         }
     }
 }
Ejemplo n.º 6
0
        public void NotifyFirstPiece(List <Player> PlayersRegistered, Piece CurrentStartPiece, int CurrentStartPiecePosition, int PlayerWhoStarts)
        {
            // Se notifica a los jugadores la ficha puesta de inicio y quien la pone
            for (int j = 0; j < PlayersRegistered.Count; j++)
            {
                //mesa.PlayersRegistered[j].PlayerCallbackChannel.PutPiece(mesa.CurrentStartPiece.ToInt(), mesa.CurrentStartPiecePosition, mesa.PlayerWhoStarts);
                PieceData pieza = new PieceData(CurrentStartPiece.ToInt(), CurrentStartPiecePosition, PlayerWhoStarts);
                PlayersRegistered[j].PlayerCallbackChannel.PutPiece(pieza);
            }
            // Quita de las Piezas disponibles del Jugador con la que se empieza

            Table.getTable().playersRegistered[Table.getTable().playerWhoStarts].PlayerPieces.Pieces.Remove(Table.getTable().currentStartPiece);
        }
Ejemplo n.º 7
0
 public void SendPieces(List <Player> PlayersRegistered)
 {
     for (int j = 0; j < PlayersRegistered.Count; j++)
     {
         for (int k = 0; k < PlayersRegistered.ElementAt(j).PlayerPieces.Pieces.Count; k++)
         {
             for (int z = 0; z < PlayersRegistered.Count; z++)
             {
                 pieceD = new PieceData(PlayersRegistered.ElementAt(j).PlayerPieces.Pieces[k].ToInt(), 0, k, PlayersRegistered.ElementAt(j).tablePosition);
                 PlayersRegistered.ElementAt(z).PlayerCallbackChannel.ShowPiece(pieceD);
             }
         }
     }
 }
Ejemplo n.º 8
0
 public void NotifyTokensToPlayers(List <Player> PlayersRegistered)
 {
     for (int j = 0; j < PlayersRegistered.Count; j++)
     {
         for (int k = 0; k < PlayersRegistered.ElementAt(j).PlayerPieces.Pieces.Count; k++)
         {
             for (int z = 0; z < PlayersRegistered.Count; z++)
             {
                 //mesa.PlayersRegistered.ElementAt(z).PlayerCallbackChannel.ShowPiece(mesa.PlayersRegistered.ElementAt(j).PlayerPieces.Pieces[k].ToInt(), k, mesa.PlayersRegistered.ElementAt(j).tablePosition);
                 PieceData pieza = new PieceData(PlayersRegistered.ElementAt(j).PlayerPieces.Pieces[k].ToInt(), k, PlayersRegistered.ElementAt(j).tablePosition);
                 PlayersRegistered.ElementAt(z).PlayerCallbackChannel.ShowPiece(pieza);
             }
         }
     }
 }
Ejemplo n.º 9
0
        //Metodo para elimir del servidor la ficha puesta
        public int RemovePiecePlayer(int PlayerPosition, PieceData piece)
        {
            int vup;
            int vdown;

            vup   = piece.PieceValue / 10;
            vdown = piece.PieceValue % 10;

            //Recorremos las fichas del jugador, y quitamos la ficha puesta en la mesa
            for (int i = 0; i < PlayersRegistered[PlayerPosition].PlayerPieces.Pieces.Count; i++)
            {
                if ((vup == PlayersRegistered[PlayerPosition].PlayerPieces.Pieces[i].FirstSquareValue) && (vdown == PlayersRegistered[PlayerPosition].PlayerPieces.Pieces[i].SecondSquareValue))
                {
                    //Se borra
                    PlayersRegistered[PlayerPosition].PlayerPieces.Pieces.RemoveAt(i);
                    return(i);
                }
            }
            return(-1);
        }
Ejemplo n.º 10
0
        public void NotifyTokensToPlayers(List <Player> PlayersRegistered)
        {
            PieceData pieceData;

            for (int j = 0; j < PlayersRegistered.Count; j++)
            {
                Player player = PlayersRegistered.ElementAt(j);

                for (int k = 0; k < PlayersRegistered.ElementAt(j).getHand().getPieces().Count; k++)
                {
                    pieceData = new PieceData(player.getHand().getPieces()[k].ToInt(), k, player.getName(), player.getPosition());

                    for (int z = 0; z < PlayersRegistered.Count; z++)
                    {
                        // send piece to player who is being updated
                        PlayersRegistered.ElementAt(z).getCallback().ShowPiece(pieceData);
                    }
                }
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// metodo que recibe la ficha del jugador y lo envía a todas las instancias
        /// </summary>
        public void RequestPutPiecePlayer(PieceData piece, PieceData prevPiece, IDominoServiceCallbackContract Callback)
        {
            Piece pieceAux = null;

            for (int i = 0; i < PlayersRegistered.ElementAt(piece.PlayerPosition).PlayerPieces.Pieces.Count; i++)
            {
                if (PlayersRegistered.ElementAt(piece.PlayerPosition).PlayerPieces.Pieces.ElementAt(i).ToInt() == piece.PieceValue)
                {
                    pieceAux = PlayersRegistered.ElementAt(piece.PlayerPosition).PlayerPieces.Pieces.ElementAt(i);
                }
            }
            int compare = prevPiece.PieceValue;



            if (TablePieces.ElementAt(0).ToInt() == compare)
            {
                TablePieces.Insert(0, pieceAux);
                Console.WriteLine(TablePieces.ElementAt(0).ToInt());
                int ret = IsHandEnded();
                if (ret != -1)
                {
                    EndHand(ret);
                    return;
                }
                else
                {
                    cambiaTurno();
                }
                //turno = (turno + 1) % 4;//actualizo correctamente quien tiene el turno
                //servidor.ActualizaLosTurnos(PlayersRegistered, turno, ElDelTurnoPuedePoner(TablePieces, PlayersRegistered[turno]), puedoColocar[0], puedoColocar[1]);
            }
            else if (TablePieces.ElementAt(TablePieces.Count - 1).ToInt() == compare)
            {
                TablePieces.Add(pieceAux);
                int ret = IsHandEnded();
                if (ret != -1)
                {
                    EndHand(ret);
                    return;
                }
                else
                {
                    cambiaTurno();
                }                       // turno = (turno + 1) % 4;//actualizo correctamente quien tiene el turno
                // servidor.ActualizaLosTurnos(PlayersRegistered, turno, ElDelTurnoPuedePoner(TablePieces, PlayersRegistered[turno]), puedoColocar[0], puedoColocar[1]);
            }
            else
            {
                Callback.PlayerNotSat("error no tiene que entrar aqui");
                //Lanzar Error
            }
            piece.PiecePosition = RemovePiecePlayer(piece.PlayerPosition, piece);
            servidor.InfoPiecePutOntable(PlayersRegistered, piece, Callback);

            //actualiza la mano en las demas Instancias
            servidor.UpdatePiecesPlayers(PlayersRegistered, piece);

            //esto es de los turnos
            //turno = (turno + 1) % 4;//actualizo correctamente quien tiene el turno
            //servidor.ActualizaLosTurnos(PlayersRegistered, turno, ElDelTurnoPuedePoner(TablePieces, PlayersRegistered[turno]) , puedoColocar[0], puedoColocar[1]);
        }
Ejemplo n.º 12
0
        //envia la ficha al servidor ,para ponerlo en todas las instancias
        public void RequestPutPiecePlayer(PieceData piece, PieceData prevPiece)
        {
            IDominoServiceCallbackContract Callback = OperationContext.Current.GetCallbackChannel <IDominoServiceCallbackContract>();

            mesa.RequestPutPiecePlayer(piece, prevPiece, Callback);
        }
Ejemplo n.º 13
0
 public void RequestPutPiece(PieceData data)
 {
     Table.getTable().RequesPutPiece(data);
 }