Example #1
0
        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
		}