Пример #1
0
        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));
        }
Пример #2
0
        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));
        }