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(); } }
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); } }
public void NewPieceOnTable(PieceData data, List <Player> PlayersRegistered) { foreach (Player player in PlayersRegistered) { if (player.tablePosition != data.jugador) { player.PlayerCallbackChannel.NewPieceOnTable(data); } } }
/// <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); } } }
/// <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); } } }
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); }
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); } } } }
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); } } } }
//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); }
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); } } } }
/// <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]); }
//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); }
public void RequestPutPiece(PieceData data) { Table.getTable().RequesPutPiece(data); }