private void _Player_TurnStarted(object sender, DominionBase.Players.TurnStartedEventArgs e) { if (cardHand.Dispatcher.CheckAccess()) { if (this.IsUIPlayer) { cardHand.IsClickable = true; } else { cardHand.IsClickable = false; } } else { cardHand.Dispatcher.BeginInvoke(new EventHandler <DominionBase.Players.TurnStartedEventArgs>(_Player_TurnStarted), System.Windows.Threading.DispatcherPriority.Normal, sender, e); } }
internal void Start(Turn turn) { if (TurnStarting != null) { TurnStartingEventArgs tsea = new TurnStartingEventArgs(this); tsea.GrantedBy = turn.GrantedBy; TurnStarting(this, tsea); if (tsea.Cancelled) return; } _CurrentTurn = turn; _Actions = _Buys = 1; Phase = PhaseEnum.Starting; if (BenefitsChanged != null) { BenefitsChangedEventArgs bcea = new BenefitsChangedEventArgs(this); BenefitsChanged(this, bcea); } if (TurnStarted != null) { TurnStartedEventArgs tsea = null; List<Object> handledBy = new List<Object>(); Boolean actionPerformed = false; do { actionPerformed = false; tsea = new TurnStartedEventArgs(this); tsea.HandledBy.AddRange(handledBy); TurnStarted(this, tsea); handledBy = tsea.HandledBy; IEnumerator<Player> enumerator = this._Game.GetPlayersStartingWithEnumerator(this); while (enumerator.MoveNext()) { OptionCollection options = new OptionCollection(); IEnumerable<String> cardTypes = tsea.Actions.Keys; foreach (String key in cardTypes) { if (enumerator.Current == tsea.Actions[key].Player) options.Add(tsea.Actions[key].Text, tsea.Actions[key].IsRequired); } if (options.Count > 0) { options.Sort(); Choice choice = new Choice(String.Format("{0} turn has started", this == enumerator.Current ? "Your" : String.Format("{0}'s", this)), options, this, tsea); ChoiceResult result = enumerator.Current.MakeChoice(choice); if (result.Options.Count > 0) { tsea.Actions.First(kvp => kvp.Value.Text == result.Options[0]).Value.Method(enumerator.Current, ref tsea); actionPerformed = true; } } } } while (TurnStarted != null && actionPerformed); } _SetAside.Refresh(this); Phase = PhaseEnum.Action; //TakeTurn(this._Game, this); }
internal void player_Action(Player player, ref TurnStartedEventArgs e) { e.Player.Actions++; e.Player.AddCardInto(DeckLocation.InPlay, this._SetAsideCard); this._SetAsideCardInPlay = this._SetAsideCard; this._SetAsideCard = null; e.Player.PlayerMats[TypeClass.PrinceSetAside].Refresh(e.Player); e.Player.PlayCardInternal(this._SetAsideCardInPlay.LogicalCard, String.Format(" from {0}", this.Name)); _CardsDiscardingEventHandler = new Player.CardsDiscardingEventHandler(player_CardsDiscarding); e.Player.CardsDiscarding += _CardsDiscardingEventHandler; e.HandledBy.Add(this); }
void player_TurnStarted(object sender, TurnStartedEventArgs e) { if (e.HandledBy.Contains(this)) return; _SetAsideCardInPlay = null; if (this._SetAsideCard != null) { String key = String.Format("{0}:{1}", this, this._SetAsideCard); if (e.Actions.ContainsKey(key)) return; e.Actions[key] = new TurnStartedAction(e.Player, this, String.Format("Play {0} from {1}", this._SetAsideCard, this.PhysicalCard), player_Action, true); } }
void player_TurnStarted(object sender, TurnStartedEventArgs e) { this.PlayDuration(e.Player); if (_TurnStartedEventHandler != null) e.Player.TurnStarted -= _TurnStartedEventHandler; _TurnStartedEventHandler = null; }
void player_TurnStarted(object sender, TurnStartedEventArgs e) { Player player = sender as Player; if (_TurnStartedEventHandler != null && _TurnStartedPlayer != null) _TurnStartedPlayer.TurnStarted -= _TurnStartedEventHandler; _TurnStartedPlayer = null; _TurnStartedEventHandler = null; }
internal void player_Action(Player player, ref TurnStartedEventArgs e) { this.PlayDuration(e.Player); if (_TurnStartedEventHandler != null) e.Player.TurnStarted -= _TurnStartedEventHandler; _TurnStartedPlayer = null; _TurnStartedEventHandler = null; }
void player_TurnStarted(object sender, TurnStartedEventArgs e) { String key = this.ToString(); if (!e.Actions.ContainsKey(key)) e.Actions[key] = new TurnStartedAction(e.Player, this, String.Format("Play {0}", this.PhysicalCard), player_Action, true); }