/// <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); } }
/// <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); }
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); }