public MoveResult ProcessCardEffect(Game game, MoveParams moveParams) { var messagesToLog = new List <string>(); var moveResultCallbackParams = new List <MoveResultCallbackParam>(); var messageToLog = ($"{moveParams.PlayerPlayed.User.Name} targeted {moveParams.PlayerTargeted.User.Name} with inspect hand. "); var automaticallyTriggeredResultMagneticPolarity = _automaticallyTriggeredCardEffectProcessors.First(x => x.CardAffected == CardValue.MagneticPolarity).ProcessCardEffect(game, messageToLog, new AutomaticallyTriggeredParams() { MagneticPolarityParams = new AutomaticallyTriggeredMagneticPolarityParams(moveParams.TargetedCardColor, moveParams.PlayerPlayed, moveParams.PlayerTargeted) }); moveParams.PlayerTargeted = automaticallyTriggeredResultMagneticPolarity.MagneticPolaritySelectedPlayer; messageToLog = automaticallyTriggeredResultMagneticPolarity.MessageToLog; if (game.PlayerToPlay.Cards.Any()) { var moveResultCallbackParam = new MoveResultCallbackParam(Constants.SHOW_CARDS_CALLBACK_COMMAND, moveParams.PlayerPlayed.User.ConnectionId, moveParams.PlayerTargeted.Cards); moveResultCallbackParams.Add(moveResultCallbackParam); } messageToLog += ($"{moveParams.PlayerPlayed.User.Name} inspected {moveParams.PlayerTargeted.User.Name}'s hand."); messagesToLog.Add(messageToLog); return(new MoveResult(messagesToLog, moveResultCallbackParams)); }
public MoveResult ProcessCardEffect(Game game, MoveParams moveParams) { var messagesToLog = new List <string>(); var moveResultCallbackParams = new List <MoveResultCallbackParam>(); var messageToLog = ($"{moveParams.PlayerPlayed.User.Name} targeted {moveParams.PlayerTargeted.User.Name} with inspect hand. "); var automaticallyTriggeredResultMagneticPolarity = _automaticallyTriggeredCardEffectProcessors.First(x => x.CardAffected == CardValue.MagneticPolarity).ProcessCardEffect(game, messageToLog, new AutomaticallyTriggeredParams() { MagneticPolarityParams = new AutomaticallyTriggeredMagneticPolarityParams(moveParams.TargetedCardColor, moveParams.PlayerPlayed, moveParams.PlayerTargeted) }); moveParams.PlayerTargeted = automaticallyTriggeredResultMagneticPolarity.MagneticPolaritySelectedPlayer; messageToLog = automaticallyTriggeredResultMagneticPolarity.MessageToLog; if (game.PlayerToPlay.Cards.Any() || game.Players.Any(x => x.Cards.Any(c => c.Value == CardValue.TheLastStand))) { List <KeyValuePair <string, List <ICard> > > result = new List <KeyValuePair <string, List <ICard> > > { new KeyValuePair <string, List <ICard> >($"{moveParams.PlayerTargeted.User.Name}'s cards", moveParams.PlayerTargeted.Cards.OrderBy(y => y.Color).ThenBy(y => y.Value).ToList()) }; var moveResultCallbackParam = new MoveResultCallbackParam(Constants.Commands.SHOW_CARDS_CALLBACK_COMMAND, moveParams.PlayerPlayed.User.ConnectionId, result); moveResultCallbackParams.Add(moveResultCallbackParam); } messageToLog += ($"{moveParams.PlayerPlayed.User.Name} inspected {moveParams.PlayerTargeted.User.Name}'s hand."); messagesToLog.Add(messageToLog); return(new MoveResult(messagesToLog, moveResultCallbackParams)); }