using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using DominionBase; using DominionBase.Piles; using DominionBase.Players; namespace Dominion.NET_WPF.Controls { /// /// Interaction logic for ucPlayerDisplay.xaml /// public partial class ucPlayerDisplay : UserControl { private Player.PhaseChangedEventHandler _PhaseChangedEventHandler = null; private Player.TurnStartedEventHandler _TurnStartedEventHandler = null; private Player.TurnEndedEventHandler _TurnEndedEventHandler = null; private Pile.PileChangedEventHandler _DeckEventHandler = null; private Dictionary _MatEventHandlers = new Dictionary(); private CardMats.CardMatsChangedEventHandler _MatChangedEventHandler = null; private TokenCollections.TokenCollectionsChangedEventHandler _TokenCollectionsChangedEventHandler = null; private Player _Player = null; private Boolean _IsActive = false; private Color _ColorFocus = Colors.Transparent; public Color ColorFocus { get { return _ColorFocus; } set { ColorHls hlsValue = HLSColor.RgbToHls(value); this.Background = new SolidColorBrush(HLSColor.HlsToRgb(hlsValue.H, Math.Min(1d, hlsValue.L * 1.125), hlsValue.S * 0.95, hlsValue.A)); dpStuff.Background = new SolidColorBrush(HLSColor.HlsToRgb((hlsValue.H + 10) % 360, hlsValue.L * 0.8, hlsValue.S, hlsValue.A)); lStageText.Background = lStage.Background = new SolidColorBrush(HLSColor.HlsToRgb(hlsValue.H, hlsValue.L * 0.95, hlsValue.S, hlsValue.A)); } } public Player Player { get { return _Player; } set { if (_Player != null) { if (_PhaseChangedEventHandler != null) _Player.PhaseChanged -= _PhaseChangedEventHandler; if (_TurnStartedEventHandler != null) _Player.TurnStarted -= _TurnStartedEventHandler; if (_TurnEndedEventHandler != null) _Player.TurnEnded -= _TurnEndedEventHandler; if (_MatChangedEventHandler != null) _Player.PlayerMats.CardMatsChanged -= _MatChangedEventHandler; if (_TokenCollectionsChangedEventHandler != null) _Player.TokenPiles.TokenCollectionsChanged -= _TokenCollectionsChangedEventHandler; } _Player = value; if (_Player != null) { _PhaseChangedEventHandler = new Player.PhaseChangedEventHandler(_Player_PhaseChangedEvent); _Player.PhaseChanged += _PhaseChangedEventHandler; _TurnStartedEventHandler = new DominionBase.Players.Player.TurnStartedEventHandler(_Player_TurnStarted); _Player.TurnStarted += _TurnStartedEventHandler; _TurnEndedEventHandler = new DominionBase.Players.Player.TurnEndedEventHandler(_Player_TurnEnded); _Player.TurnEnded += _TurnEndedEventHandler; _MatChangedEventHandler = new CardMats.CardMatsChangedEventHandler(PlayerMats_DecksChanged); _Player.PlayerMats.CardMatsChanged += _MatChangedEventHandler; _TokenCollectionsChangedEventHandler = new TokenCollections.TokenCollectionsChangedEventHandler(TokenPiles_TokenCollectionsChanged); _Player.TokenPiles.TokenCollectionsChanged += _TokenCollectionsChangedEventHandler; _Player_PhaseChangedEvent(null, new PhaseChangedEventArgs(_Player, _Player.Phase)); } // Force reset of IsActive this.IsActive = this.IsActive; } } public void TearDown() { this.IsActive = false; this.Player = null; } void TokenPiles_TokenCollectionsChanged(object sender, TokenCollectionsChangedEventArgs e) { if (this.Dispatcher.CheckAccess()) { if (e.Count > 0) { if (e.TokenCollection[0].GetType() == DominionBase.Cards.Seaside.TypeClass.PirateShipToken) { Label lPirateShipTokenValue = dpStuff.Children.OfType