Example #1
0
 public SlidingPosition(
     BadgeCaps device,
     MessageQueueItem item,
     SlidingDirection direction,
     Easing ease,
     float speed,
     float padding)
 {
     Item      = item;
     Direction = direction;
     Ease      = ease;
     Speed     = speed;
     Padding   = padding;
     if (IsVertical)
     {
         m_distance = Item.Element.ClipHeight - device.Height;
     }
     else
     {
         m_distance = Item.Element.ClipWidth - device.Width;
     }
     m_distance     += 2 * Padding;
     m_startOffset   = Padding;
     m_currOffset    = 0;
     m_totalDuration = m_distance / Speed;
 }
Example #2
0
 public SlidingTransition(
     BadgeCaps device,
     MessageQueueItem item1,
     MessageQueueItem item2,
     SlidingDirection direction,
     Easing ease,
     float speed,
     float?padding)
 {
     Item1     = item1;
     Item2     = item2;
     Direction = direction;
     Ease      = ease;
     Speed     = speed;
     if (IsVertical)
     {
         Padding       = padding.HasValue ? padding.Value : device.Height;
         m_startOffset = Item1.Element.RenderY;
         m_distance    = AnimHelper.Round(Item1.Element.ClipHeight + m_startOffset + Padding);
     }
     else
     {
         Padding       = padding.HasValue ? padding.Value : device.Width;
         m_startOffset = Item1.Element.RenderX;
         m_distance    = AnimHelper.Round(Item1.Element.ClipWidth + m_startOffset + Padding);
     }
     m_currOffset    = m_startOffset;
     m_totalDuration = m_distance / Speed;
 }
Example #3
0
    // returns row, col of position above the given one, in the given direction
    public Vector2 getPositionAbove(int row, int col, SlidingDirection direction)
    {
        int candidateRow, candidateCol;

        if (getDirection(row, col) == TriangleDirection.Upward)            // if triangle is "pointing" upward
        // "above" now means to the right or left, in the same row
        {
            candidateRow = row;
            switch (BattleInfo.slidingDirection)
            {
            case SlidingDirection.Left:
                candidateCol = col - 1;
                break;

            case SlidingDirection.Right:
                candidateCol = col + 1;
                break;

            default:
                candidateCol = -1;
                break;
            }

            if (!isEmptyPosition(candidateRow, candidateCol))
            {
                return(new Vector2(candidateRow, candidateCol));
            }
            else
            {
                return(new Vector2(-1, -1));                 // indicate no piece above
            }
        }
        else             // triangle is "pointing" downward
                         // "above" now means directly above; doesn't depend on sliding direction
        {
            candidateRow = row - 1;
            candidateCol = col;

            if (!isEmptyPosition(candidateRow, candidateCol))
            {
                return(new Vector2(candidateRow, candidateCol));
            }
            else
            {
                return(new Vector2(-1, -1));                 // indicate no piece above
            }
        }
    }
Example #4
0
 public SlidingTransition(
     MessageQueueItem item1,
     MessageQueueItem item2,
     SlidingDirection direction,
     Easing ease,
     float speed,
     float? padding)
 {
     Item1 = item1;
     Item2 = item2;
     Direction = direction;
     Ease = ease;
     Speed = speed;
     if(IsVertical)
     {
         Padding = padding.HasValue ? padding.Value : BadgeCaps.Height;
         m_startOffset = Item1.Element.RenderY;
         m_distance = AnimHelper.Round(Item1.Element.ClipHeight + m_startOffset + Padding);
     }
     else
     {
         Padding = padding.HasValue ? padding.Value : BadgeCaps.Width;
         m_startOffset = Item1.Element.RenderX;
         m_distance = AnimHelper.Round(Item1.Element.ClipWidth + m_startOffset + Padding);
     }
     m_currOffset = m_startOffset;
     m_totalDuration = m_distance / Speed;
 }
Example #5
0
 public SlidingPosition(
     MessageQueueItem item,
     SlidingDirection direction,
     Easing ease,
     float speed,
     float padding)
 {
     Item = item;
     Direction = direction;
     Ease = ease;
     Speed = speed;
     Padding = padding;
     if(IsVertical)
     {
         m_distance = Item.Element.ClipHeight - BadgeCaps.Height;
     }
     else
     {
         m_distance = Item.Element.ClipWidth - BadgeCaps.Width;
     }
     m_distance += 2 * Padding;
     m_startOffset = Padding;
     m_currOffset = 0;
     m_totalDuration = m_distance / Speed;
 }
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);

            if (InputHandler != null)
            {
#if WINDOWS || XBOX360
                var mouseState    = Mouse.GetState();
                var mousePosition = new Vector2(mouseState.X, mouseState.Y);

                if (mouseState.LeftButton == ButtonState.Pressed && !isSliding)
                {
                    if (currentDragDistance >= requiredDragDistance)
                    {
                        // figure out which way they are dragging
                        if (previousMouseDownPosition.X > mouseState.X)
                        {
                            if (CurrentScreenIndex < TotalScreenCount)
                            {
                                isSliding           = true;
                                currentDragDistance = 0;

                                // dragging to the left
                                slideDirection = SlidingDirection.Right;

                                CurrentScreenIndex++;
                            }
                        }
                        else if (previousMouseDownPosition.X < mouseState.X)
                        {
                            if (CurrentScreenIndex > 0)
                            {
                                isSliding           = true;
                                currentDragDistance = 0;

                                // dragging to the right
                                slideDirection = SlidingDirection.Left;

                                CurrentScreenIndex--;
                            }
                        }
                    }
                    else
                    {
                        currentDragDistance      += Vector2.Distance(previousMouseDownPosition, mousePosition);
                        previousMouseDownPosition = mousePosition;
                    }
                }
#endif

#if WINDOWS_PHONE
                if (!isSliding)
                {
                    foreach (var g in InputHandler.Gestures)
                    {
                        // Check for bounding box collision first!
                        if (g.GestureType == GestureType.HorizontalDrag)
                        {
                            if (g.Delta.X > 0)
                            {
                                isSliding      = true;
                                slideDirection = SlidingDirection.Left;

                                if (CurrentScreenIndex > 0)
                                {
                                    CurrentScreenIndex--;
                                }
                            }
                            else
                            {
                                isSliding      = true;
                                slideDirection = SlidingDirection.Right;

                                if (CurrentScreenIndex < TotalScreenCount)
                                {
                                    CurrentScreenIndex++;
                                }
                            }
                        }
                    }
                }
#endif
            }

            if (isSliding)
            {
                float camOffset = (CurrentScreenIndex * ScreenWidth);

                switch (slideDirection)
                {
                case SlidingDirection.Right:
                    if (CameraOffsetX <= -camOffset)
                    {
                        isSliding     = false;
                        CameraOffsetX = -camOffset;
                    }
                    else
                    {
                        CameraOffsetX -= SlideSpeed;
                    }
                    break;

                case SlidingDirection.Left:
                    if (CameraOffsetX >= camOffset)
                    {
                        isSliding     = false;
                        CameraOffsetX = camOffset;
                    }
                    else
                    {
                        CameraOffsetX += SlideSpeed;
                    }
                    break;
                }
            }

            // Set our camera offset for our visual objects :]
            foreach (var vo in VisualObjects)
            {
                vo.CameraOffsetX = CameraOffsetX;
                vo.CameraOffsetY = CameraOffsetY;
            }
        }