示例#1
0
 /// <summary>
 /// Добавляет дополнительную информацию указанного типа
 /// </summary>
 /// <param name="type">тип</param>
 /// <param name="value">дополнительное значение</param>
 public void AddAdditional(AdditionalType type, string value)
 {
     if (!_additionalInfo.ContainsKey(type) && !string.IsNullOrWhiteSpace(value))
     {
         _additionalInfo.Add(type, value);
     }
 }
示例#2
0
        /// <summary>
        /// Возвращает дополнительную информацию по типу, если она есть
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public string GetAdditionalInfoByType(AdditionalType type, string defaultValue)
        {
            string result;

            if (!_additionalInfo.TryGetValue(type, out result))
            {
                result = defaultValue;
            }
            return(result);
        }
示例#3
0
        protected override bool DoTransformSideEffect(CompositeCard card, object arg, List <Player> targets, bool isPlay)
        {
            int           GuHuoOrder = Game.CurrentGame.Decks[null, DeckType.GuHuo].Count;
            CardsMovement move       = new CardsMovement();

            Trace.Assert(card.Subcards.Count == 1);
            move.Cards = new List <Card>();
            move.Cards.AddRange(card.Subcards);
            move.To = new DeckPlace(null, DeckType.GuHuo);
            Game.CurrentGame.MoveCards(move);
            Game.CurrentGame.PlayerLostCard(Owner, move.Cards);
            var toProcess = new List <Player>(from p in Game.CurrentGame.AlivePlayers where p.Health > 0 select p);

            toProcess.Remove(Owner);
            Game.CurrentGame.SortByOrderOfComputation(Game.CurrentGame.CurrentPlayer, toProcess);
            Dictionary <Player, int> believe = new Dictionary <Player, int>();

            foreach (var player in toProcess)
            {
                int answer = 0;
                Game.CurrentGame.UiProxies[player].AskForMultipleChoice(new MultipleChoicePrompt("GuHuo", Owner, AdditionalType), Prompt.YesNoChoices, out answer);
                believe.Add(player, 1 - answer);
                player[ZhiYiZhong]   = answer;
                player[BuZhiYiZhong] = 1 - answer;
            }
            Game.CurrentGame.SyncImmutableCardAll(Game.CurrentGame.Decks[null, DeckType.GuHuo][GuHuoOrder]);
            bool guhuoSucceed = true;

            foreach (var v in believe)
            {
                if (v.Value == 0)
                {
                    guhuoSucceed = false;
                    break;
                }
            }
            bool ret = true;

            if (!guhuoSucceed)
            {
                if (Game.CurrentGame.Decks[null, DeckType.GuHuo][GuHuoOrder].Type.GetType().IsAssignableFrom(AdditionalType.GetType()))
                {
                    foreach (var player in toProcess)
                    {
                        if (believe[player] == 0)
                        {
                            Game.CurrentGame.LoseHealth(player, 1);
                        }
                    }
                    if (Game.CurrentGame.Decks[null, DeckType.GuHuo][GuHuoOrder].Suit != SuitType.Heart)
                    {
                        ret = false;
                    }
                }
                else
                {
                    foreach (var player in toProcess)
                    {
                        if (believe[player] == 0)
                        {
                            Game.CurrentGame.DrawCards(player, 1);
                        }
                    }
                    ret = false;
                }
                if (!ret)
                {
                    move       = new CardsMovement();
                    move.Cards = new List <Card>();
                    move.Cards.Add(Game.CurrentGame.Decks[null, DeckType.GuHuo][GuHuoOrder]);
                    move.To = new DeckPlace(null, DeckType.Discard);
                    Game.CurrentGame.MoveCards(move);
                }
            }
            if (ret)
            {
                card.Subcards = new List <Card>();
                card.Subcards.Add(Game.CurrentGame.Decks[null, DeckType.GuHuo][GuHuoOrder]);
            }
            foreach (var player in toProcess)
            {
                player[ZhiYiZhong]   = 0;
                player[BuZhiYiZhong] = 0;
            }
            return(ret);
        }