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