/// <summary> /// Valida a jogada /// </summary> /// <param name="played"></param> /// <returns></returns> public bool ValidatePlay(UIElement played) { Player auxplayer = this.GetCurrentPlayer(); Lista <Carta> auxlista = auxplayer.GetHand(); Carta aux = this.descarte.GetTopCard(); foreach (Carta card in auxlista) { if (played.Uid == card.GetID()) { if (true) //if (aux.Compatible(card, this.colorChosen)) { PlayCard(card); this.colorChosen = 0; return(true); } } } return(false); }
/// <summary> /// Define o angulo da carta com base no jogador /// </summary> /// <param name="card"></param> /// <returns></returns> protected Carta SetCardAngle(Carta card) { switch (this.position) { case PlayerPosition.Left: RotateTransform rotate = new RotateTransform(-90); card.ElementUI.RenderTransform = rotate; return(card); case PlayerPosition.Right: rotate = new RotateTransform(90); card.ElementUI.RenderTransform = rotate; return(card); case PlayerPosition.Top: rotate = new RotateTransform(180); card.ElementUI.RenderTransform = rotate; return(card); default: return(card); } }
/// <summary> /// Faz o evento conforme carta jogada. /// Retorna false caso a carta jogada for do tipo Curinga /// </summary> /// <param name="cardJogada"></param> public void EventAtivado(Carta cardJogada) { if (cardJogada is Especial) { Especial aux = (Especial)cardJogada; switch (aux.Efeito) { case Efeito.Comprar2: this.Comprar(2); break; case Efeito.Bloquear: this.Bloquear(); break; case Efeito.Inverter: this.Inverter(); break; } } else if (cardJogada is Curinga) //coringa troca cor { Curinga aux = (Curinga)cardJogada; if (this.eng.GetCurrentPlayer().Position == PlayerPosition.Bottom) { this.anim.ShowPaletColors(); } switch (aux.Efeito) { case Efeito.MudarCor: break; case Efeito.MudarCorEComprar4: Comprar(4); break; } } }
/// <summary> /// Animação da retirada da carta do monte para a mão do jogador /// </summary> /// <returns></returns> private void AnimationMontToHand(Carta card) { this.RotateToHand(getcard); Carta aux = this.GetLastCard(); this.moveAnimY2.From = Canvas.GetTop(card.ElementUI); this.moveAnimY2.To = Canvas.GetTop(aux.ElementUI); this.moveAnimY2.Duration = new Duration(TimeSpan.FromMilliseconds(250)); this.moveAnimX2.From = Canvas.GetLeft(card.ElementUI); this.moveAnimY2.To = Canvas.GetLeft(aux.ElementUI) + 40; this.moveAnimY2.Duration = new Duration(TimeSpan.FromMilliseconds(250)); moveAnimY2.FillBehavior = FillBehavior.Stop; moveAnimX2.FillBehavior = FillBehavior.Stop; card.ElementUI.BeginAnimation(Canvas.TopProperty, moveAnimY2); card.ElementUI.BeginAnimation(Canvas.LeftProperty, moveAnimX2); Canvas.SetLeft(card.ElementUI, Canvas.GetLeft(aux.ElementUI)); Canvas.SetTop(card.ElementUI, Canvas.GetTop(aux.ElementUI) + 40); }
public void PlayCard(Carta card) { this.cartas.Push(card); }
/// <summary> /// Evento de animação completa para o método AnimationHandToColetor() /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MoveAnimX_Completed(object sender, EventArgs e) { this.cdTop = null; this.anim1loop = this.anim2loop = 0; this.eng.EndTurn(); }
/// <summary> /// Simula jogadas de um player /// </summary> /// <param name="cardMonte"> /// Recebe a carta do topo do coletor e o Monte</param> public void Jogar() { Log.AddEventoJogadorAtual(this); // pega carta do top do coletor como referencia cdTop = this.eng.Descarte.GetTopCard(); Lista <Carta> listaaux = new Lista <Carta>(); if (this.hand.Count == 1) { base.TimeToUNO(); } //prioridade Normal(menor numero) > especial foreach (Carta cardMao in this.hand) { if (cdTop.Compatible(cardMao, this.eng.ColorChosen)) { listaaux.Add(cardMao); } } this.eng.ColorChosen = 0; if (listaaux.Count > 1) { foreach (Carta card in listaaux) { if (card is Curinga) { this.getcard = card; } if (card is Especial) { this.getcard = card; } if (card is Normal) { this.getcard = card; break; } } } else if (listaaux.Count == 1) { if (listaaux[0] is Curinga) { this.eng.ColorChosen = this.GetHightColor(); } this.getcard = listaaux[0]; } else { this.anim2loop++; if (this.eng.Monte.Count() > 0) { this.getcard = eng.RemoveFromMonte(); Rectangle cardUI = getcard.ElementUI; Canvas.SetLeft(cardUI as UIElement, Canvas.GetLeft(this.eng.MonteUI)); Canvas.SetTop(cardUI as UIElement, Canvas.GetTop(this.eng.MonteUI)); this.eng.Enviroment.Children.Add(cardUI); this.AnimationMontToHand(this.getcard); this.AddCardToHand(getcard); } } if (this.anim2loop == 0) { this.eng.PlayCard(this.getcard); this.AnimationHandToColetor(this.getcard); } }
public void Add(Carta card) { this.cartas.Push(card); }
/// <summary> /// Retira uma carta da mão do jogador /// </summary> /// <param name="card"></param> /// <returns></returns> public Carta PlayCard(Carta card) { return(Remover(card)); }
/// <summary> /// Recebe a primeira carta do baralho para ser a referência pro procedimento do jogo /// </summary> /// <param name="primeiranalista"></param> public Coletor(Carta primeiranalista) { this.cartas.Push(primeiranalista); }
//Insere na pilha uma carta jogada public void GetPlayedCard(Carta card) { this.cartas.Push(card); }
/// <summary> /// Adiciona uma carta a mão do jogador /// </summary> /// <param name="card"></param> public void AddCardToHand(Carta card) { this.hand.Add(card); }