public Card(CardDeck deck, CardInfo i) { if (deck == null) throw new ArgumentNullException("deck"); this.Container = new Canvas { Width = CardInfo.Width, Height = CardInfo.Height }; this.Overlay = new Rectangle { Fill = Brushes.White, Width = CardInfo.Width, Height = CardInfo.Height }; var ImageBackSideSource = deck.CardCustomBackgroundSource; if (ImageBackSideSource == null) { if (i.IsBlackDeck) ImageBackSideSource = new Abstractatech.Avalon.Cards.Avalon.Images.b1fv().Source; else ImageBackSideSource = new Abstractatech.Avalon.Cards.Avalon.Images.b2fv().Source; } this.ImageBackSide = new Image { Source = ImageBackSideSource, Width = CardInfo.Width, Height = CardInfo.Height, }.AttachTo(this); i.Visible = true; this.ImageTopSide = i.GetImage().AttachTo(this); this.VisibleSide = SideEnum.BackSide; CurrentDeck = deck; this.Overlay.AttachTo(deck.Overlay); this.Drag = new CardDrag(this); Info = i; bool CanClick = false; this.Overlay.MouseLeftButtonDown += delegate { CanClick = true; }; this.Overlay.MouseMove += delegate { CanClick = false; }; Action RaiseClick = delegate { this.CurrentDeck.Sounds.click(); if (!CanClick) return; if (Click != null) Click(); if (CurrentStack != null) CurrentStack.RaiseClick(this); }; //this.Overlay.TouchUp += // (sender, e) => // { // e.Handled = true; // RaiseClick(); // }; this.Overlay.MouseLeftButtonUp += (sender, e) => { //e.Handled = true; RaiseClick(); }; this.AnimatedOpacity = 1; //Opacity = 1; //Enabled = false; }
public OrcasAvalonApplicationCanvas() { Width = DefaultWidth; Height = DefaultHeight; new[] { Colors.Black, Colors.Green, Colors.Black }.ToGradient(DefaultHeight / 4).Select( (c, i) => new Rectangle { Fill = new SolidColorBrush(c), Width = DefaultWidth, Height = 4, }.MoveTo(0, i * 4).AttachTo(this) ).ToArray(); // step 1 - can we show a card? // step 2 drag the cards around var deck = new CardDeck().AttachContainerTo(this); deck.SizeTo(DefaultWidth, DefaultHeight); deck.UnusedCards.AddRange(CardInfo.FullDeck()); var PlayStack = deck.CreateStackList(); { PlayStack.Add( new CardStack { }.MoveTo(64, 64) ); PlayStack.Add( new CardStack { }.MoveTo(64 + CardInfo.Width, 64) ); var s3 = new CardStack { deck.FetchCard, deck.FetchCard, deck.FetchCard, }.MoveTo(64 + CardInfo.Width * 2, 64); PlayStack.Add(s3); s3.ForEach(k => k.VisibleSide = Card.SideEnum.TopSide); } { PlayStack.Add( new CardStack { }.MoveTo(64, 264) ); PlayStack.Add( new CardStack { }.MoveTo(64 + CardInfo.Width, 264) ); var s3 = new CardStack { deck.FetchCard, deck.FetchCard, deck.FetchCard, }.MoveTo(64 + CardInfo.Width * 2, 264); PlayStack.Add(s3); s3.RevealLastCard(); } // step 3 drag cards from stack to stack }