Beispiel #1
0
    /// <summary>
    /// Release pointer event
    /// </summary>
    /// <param name="trigger">Source trigger object</param>
    /// <param name="data">Data of the event</param>
    public void OnUIPointerUp(EventTrigger trigger, PointerEventData data)
    {
        // Is the command pad?
        if (trigger.gameObject == cmdPad)
        {
            // Just remove press graphics
            ColorUI(false, -1);
            return;
        }
        else
        {
            // Movement pad
            uiMovePadReticleTargetPos = uiMovePadReticleCenter;
            ColorUI(true, -1);

            // Check for possible slide events
            if (previousZone == SelectionZone.Center && (Time.time - previousZoneLeftTime) < slideTimeThereshold)
            {
                switch (currentZone)
                {
                case SelectionZone.Up: player.MoveSlide(0); break;

                case SelectionZone.Left: player.MoveSlide(1); break;

                case SelectionZone.Down: player.MoveSlide(2); break;

                case SelectionZone.Right: player.MoveSlide(3); break;
                }
            }

            if (uiMovePadCenterCollider.OverlapPoint(data.position))
            {
                player.StopSlide();
            }

            selectedDir          = -1;
            previousZone         = SelectionZone.None;
            previousZoneLeftTime = 0;
        }
    }
Beispiel #2
0
 private void HandleSelection(MouseEventArgs e)
 {
     if (ActiveSelection && !DraggingSelection)
     {
         Point CursorPoint = GetCursorLocationRelative(e);
         if (SelectionZone.Contains(CursorPoint) || MovingSelection)
         {
             MoveSelection(e);
         }
         else
         {
             StopSelecting();
             DragSelectedZone(e);
         }
     }
     else
     {
         if (ActiveSelection)
         {
             StopSelecting();
         }
         DragSelectedZone(e);
     }
 }
Beispiel #3
0
 // Use this for initialization
 void Start()
 {
     this.player        = GetComponent <Player>();
     this.selectionZone = GetComponent <SelectionZone>();
 }
Beispiel #4
0
    public void OnUIPointerDown(EventTrigger trigger, PointerEventData data)
    {
        if (trigger.gameObject == cmdPad)
        {
            // Command Pad, execute attacks
            if (uiCmdPadUpCollider.OverlapPoint(data.position))
            {
                OnButtonPress(0);
                ColorUI(false, 0);
                return;
            }
            if (uiCmdPadLeftCollider.OverlapPoint(data.position))
            {
                OnButtonPress(1);
                ColorUI(false, 1);
                return;
            }
            if (uiCmdPadDownCollider.OverlapPoint(data.position))
            {
                OnButtonPress(2);
                ColorUI(false, 2);
                return;
            }
            if (uiCmdPadRightCollider.OverlapPoint(data.position))
            {
                OnButtonPress(3);
                ColorUI(false, 3);
                return;
            }
        }
        else
        {
            // Movement pad
            // Check over which selection zone/button the pointer was pressed
            uiMovePadReticleTargetPos = data.position;
            SelectionZone sz = SelectionZone.None;
            if (uiMovePadCenterCollider.OverlapPoint(data.position))
            {
                sz = SelectionZone.Center;
            }
            else if (uiMovePadUpCollider.OverlapPoint(data.position))
            {
                sz = SelectionZone.Up;
            }
            else if (uiMovePadLeftCollider.OverlapPoint(data.position))
            {
                sz = SelectionZone.Left;
            }
            else if (uiMovePadDownCollider.OverlapPoint(data.position))
            {
                sz = SelectionZone.Down;
            }
            else if (uiMovePadRightCollider.OverlapPoint(data.position))
            {
                sz = SelectionZone.Right;
            }

            // Colorize button
            ColorUI(true, (int)sz);

            // Execute dodge if the button tapped twice within thereshold
            switch (sz)
            {
            case SelectionZone.Up:
                selectedDir = 0;
                if (latestTapDirection == selectedDir)
                {
                    if (Time.time - latestTapTime < tapTimeThereshold)
                    {
                        player.MoveDodge(selectedDir);
                    }
                }
                latestTapDirection = selectedDir;
                latestTapTime      = Time.time;
                break;

            case SelectionZone.Left:
                selectedDir = 1;
                if (latestTapDirection == selectedDir)
                {
                    if (Time.time - latestTapTime < tapTimeThereshold)
                    {
                        player.MoveDodge(selectedDir);
                    }
                }
                latestTapDirection = selectedDir;
                latestTapTime      = Time.time;
                break;

            case SelectionZone.Down:
                selectedDir = 2;
                if (latestTapDirection == selectedDir)
                {
                    if (Time.time - latestTapTime < tapTimeThereshold)
                    {
                        player.MoveDodge(selectedDir);
                    }
                }
                latestTapDirection = selectedDir;
                latestTapTime      = Time.time;
                break;

            case SelectionZone.Right:
                selectedDir = 3;
                if (latestTapDirection == selectedDir)
                {
                    if (Time.time - latestTapTime < tapTimeThereshold)
                    {
                        player.MoveDodge(selectedDir);
                    }
                }
                latestTapDirection = selectedDir;
                latestTapTime      = Time.time;
                break;
            }

            // Update current movement zone
            currentZone = sz;
        }
    }
Beispiel #5
0
    /// <summary>
    /// Check Drag event data
    /// </summary>
    public void OnUIDrag(EventTrigger trigger, PointerEventData data)
    {
        // Check which pad was draged
        if (trigger.gameObject == cmdPad)
        {
            // Command pad, show pads pressed
            if (uiCmdPadUpCollider.OverlapPoint(data.position))
            {
                ColorUI(false, 0); return;
            }
            if (uiCmdPadLeftCollider.OverlapPoint(data.position))
            {
                ColorUI(false, 1); return;
            }
            if (uiCmdPadDownCollider.OverlapPoint(data.position))
            {
                ColorUI(false, 2); return;
            }
            if (uiCmdPadRightCollider.OverlapPoint(data.position))
            {
                ColorUI(false, 3); return;
            }
        }
        else
        {
            // Movement pad
            // Update reticle
            Vector2 relDist = data.position - (Vector2)uiMovePadReticleCenter;
            relDist = relDist.normalized * (Mathf.Min(relDist.magnitude, 100 * uiMovePadReticle.canvas.scaleFactor));
            uiMovePadReticleTargetPos = relDist + (Vector2)uiMovePadReticleCenter;

            // Check which selection zone / button the cursor is in
            SelectionZone sz = SelectionZone.None;
            if (uiMovePadCenterCollider.OverlapPoint(data.position))
            {
                sz = SelectionZone.Center;
            }
            else if (uiMovePadUpCollider.OverlapPoint(data.position))
            {
                sz = SelectionZone.Up;
            }
            else if (uiMovePadLeftCollider.OverlapPoint(data.position))
            {
                sz = SelectionZone.Left;
            }
            else if (uiMovePadDownCollider.OverlapPoint(data.position))
            {
                sz = SelectionZone.Down;
            }
            else if (uiMovePadRightCollider.OverlapPoint(data.position))
            {
                sz = SelectionZone.Right;
            }

            // Update currently selection direction
            switch (sz)
            {
            case SelectionZone.Up:
                selectedDir = 0;
                ColorUI(true, 0);
                break;

            case SelectionZone.Left:
                selectedDir = 1;
                ColorUI(true, 1);
                break;

            case SelectionZone.Down:
                selectedDir = 2;
                ColorUI(true, 2);
                break;

            case SelectionZone.Right:
                selectedDir = 3;
                ColorUI(true, 3);
                break;

            case SelectionZone.Center:
                selectedDir = -1;
                ColorUI(true, 4);
                break;
            }

            // Update previous selection zone
            if (sz != currentZone && sz != SelectionZone.None)
            {
                previousZone         = currentZone;
                currentZone          = sz;
                previousZoneLeftTime = Time.time;
            }
        }
    }