private PlayerAction GetAnnounces(DecisionMakingContext context) { var availableCardsFromHand = context.Validator.GetPossibleCardsToPlay(context.TurnContext, context.MyCards); if (context.TurnContext.IsFirstPlayerTurn && context.TurnContext.CardsLeftInDeck != 12) { var announceCards = availableCardsFromHand .Where(c => c.Type == CardType.King || c.Type == CardType.Queen) .GroupBy(c => c.Suit) .Where(g => g.Count() > 1) .ToList(); var fortyAnnounce = announceCards .Where(g => g.FirstOrDefault().Suit == context.TurnContext.TrumpCard.Suit) .Select(suit => suit.First(card => card.Type == CardType.Queen)) .FirstOrDefault(); if (fortyAnnounce != null) { // SummaryReport.AnnounceStatistics[Santase.Logic.Announce.Forty]++; return PlayerAction.PlayCard(fortyAnnounce); } else if (announceCards.Count > 0) { // SummaryReport.AnnounceStatistics[Santase.Logic.Announce.Twenty]++; return PlayerAction.PlayCard(announceCards.FirstOrDefault().FirstOrDefault(x => x.Type == CardType.Queen)); } } return null; }
private PlayerAction GetAnnounces(DecisionMakingContext context) { var availableCardsFromHand = context.Validator.GetPossibleCardsToPlay(context.TurnContext, context.MyCards); if (context.TurnContext.IsFirstPlayerTurn && context.TurnContext.CardsLeftInDeck != 12) { var announceCards = availableCardsFromHand .Where(c => c.Type == CardType.King || c.Type == CardType.Queen) .GroupBy(c => c.Suit) .Where(g => g.Count() > 1) .ToList(); var fortyAnnounce = announceCards .Where(g => g.FirstOrDefault().Suit == context.TurnContext.TrumpCard.Suit) .Select(suit => suit.First(card => card.Type == CardType.Queen)) .FirstOrDefault(); if (fortyAnnounce != null) { // SummaryReport.AnnounceStatistics[Santase.Logic.Announce.Forty]++; return(PlayerAction.PlayCard(fortyAnnounce)); } else if (announceCards.Count > 0) { // SummaryReport.AnnounceStatistics[Santase.Logic.Announce.Twenty]++; return(PlayerAction.PlayCard(announceCards.FirstOrDefault().FirstOrDefault(x => x.Type == CardType.Queen))); } } return(null); }
public PlayerAction Handle(DecisionMakingContext context) { if (this.IsMatch(context)) { return this.EndGameTurn(context.TurnContext, context.Tracker, context.MyCards); } return this.Next.Handle(context); }
public PlayerAction Handle(DecisionMakingContext context) { if (context.Validator.IsValid(PlayerAction.ChangeTrump(), context.TurnContext, context.MyCards)) { return PlayerAction.ChangeTrump(); } return this.Next.Handle(context); }
public PlayerAction Handle(DecisionMakingContext context) { if (context.Validator.IsValid(PlayerAction.ChangeTrump(), context.TurnContext, context.MyCards)) { return(PlayerAction.ChangeTrump()); } return(this.Next.Handle(context)); }
public PlayerAction Handle(DecisionMakingContext context) { if (this.IsMatch(context)) { return(this.EndGameTurn(context.TurnContext, context.Tracker, context.MyCards)); } return(this.Next.Handle(context)); }
public PlayerAction Handle(DecisionMakingContext context) { this.announce = this.GetAnnounces(context); if (this.IsMatch(context)) { return(this.announce); } return(this.Next.Handle(context)); }
public PlayerAction Handle(DecisionMakingContext context) { this.announce = this.GetAnnounces(context); if (this.IsMatch(context)) { return this.announce; } return this.Next.Handle(context); }
public PlayerAction Handle(DecisionMakingContext context) { var availableCardsFromHand = context.Validator.GetPossibleCardsToPlay(context.TurnContext, context.MyCards); if (this.IsMatch(context)) { var cardByChoser = context.ActionChoser.CardToPlay(context.TurnContext, availableCardsFromHand); return PlayerAction.PlayCard(cardByChoser); } return this.Next.Handle(context); }
public PlayerAction Handle(DecisionMakingContext context) { var availableCardsFromHand = context.Validator.GetPossibleCardsToPlay(context.TurnContext, context.MyCards); if (this.IsMatch(context)) { var cardByChoser = context.ActionChoser.CardToPlay(context.TurnContext, availableCardsFromHand); return(PlayerAction.PlayCard(cardByChoser)); } return(this.Next.Handle(context)); }
public PlayerAction Handle(DecisionMakingContext context) { if (this.IsMatch(context)) { PlayerAction cardToPlay; var availableCardsFromHand = context.Validator.GetPossibleCardsToPlay(context.TurnContext, context.MyCards); var condition = context.CardChoser.CardToPlayAndCloseLogic(context.TurnContext, availableCardsFromHand); if (context.TurnContext.State.CanClose && context.MyCards.Count(c => c.Suit == context.TurnContext.TrumpCard.Suit) > ShouldCloseTrumpCount) { return(PlayerAction.CloseGame()); } cardToPlay = PlayerAction.PlayCard(condition.Value); return(cardToPlay); } return(this.Next.Handle(context)); }
public PlayerAction Handle(DecisionMakingContext context) { if (this.IsMatch(context)) { PlayerAction cardToPlay; var availableCardsFromHand = context.Validator.GetPossibleCardsToPlay(context.TurnContext, context.MyCards); var condition = context.CardChoser.CardToPlayAndCloseLogic(context.TurnContext, availableCardsFromHand); if (context.TurnContext.State.CanClose && context.MyCards.Count(c => c.Suit == context.TurnContext.TrumpCard.Suit) > ShouldCloseTrumpCount) { return PlayerAction.CloseGame(); } cardToPlay = PlayerAction.PlayCard(condition.Value); return cardToPlay; } return this.Next.Handle(context); }
public bool IsMatch(DecisionMakingContext ctx) { return(true); }
public bool IsMatch(DecisionMakingContext ctx) { return !ctx.TurnContext.IsFirstPlayerTurn; }
public bool IsMatch(DecisionMakingContext ctx) { return(ctx.TurnContext.CardsLeftInDeck == 0); }
public bool IsMatch(DecisionMakingContext context) { return(context.TurnContext.CardsLeftInDeck > 2 && context.TurnContext.IsFirstPlayerTurn); }
public bool IsMatch(DecisionMakingContext ctx) { return(!ctx.TurnContext.IsFirstPlayerTurn); }
public bool IsMatch(DecisionMakingContext context) { return(this.announce != null); }
public bool IsMatch(DecisionMakingContext ctx) { return ctx.TurnContext.CardsLeftInDeck == 0; }
public bool IsMatch(DecisionMakingContext ctx) { return true; }
public bool IsMatch(DecisionMakingContext context) { return context.TurnContext.CardsLeftInDeck > 2 && context.TurnContext.IsFirstPlayerTurn; }
public bool IsMatch(DecisionMakingContext context) { return this.announce != null; }