public DragAxisInfo(string handleName, DragAxis axis, Vector3 direction, Color axisColor)
 {
     _handleHash = handleName.GetHashCode();
     _dragAxis   = axis;
     _direction  = direction;
     _axisColor  = axisColor;
 }
예제 #2
0
        public Dragger(IntVector2 surfaceDimensions, DragAxis dragAxis)
        {
            SurfaceDimensions = surfaceDimensions;
            DraggingAxis      = dragAxis;

            Type = DragType.Translate;
        }
예제 #3
0
        public Dragger(IntVector2 surfaceDimensions)
        {
            _surfaceDimensions = surfaceDimensions;

            _dragAxis = DragAxis.X;
            _dragType = DragType.Translate;
        }
 public override void OnLeftClickUp(Vector3 cursor_pos)
 {
     cursor_pos -= placementPivot;
     KScreenManager.Instance.SetEventSystemEnabled(true);
     dragAxis = DragAxis.Invalid;
     if (dragging)
     {
         dragging = false;
         Mode mode = GetMode();
         if (areaVisualizerText != Guid.Empty)
         {
             NameDisplayScreen.Instance.RemoveWorldText(areaVisualizerText);
             areaVisualizerText = Guid.Empty;
         }
         if (mode == Mode.Box && (UnityEngine.Object)areaVisualizer != (UnityEngine.Object)null)
         {
             areaVisualizer.SetActive(false);
             Grid.PosToXY(downPos, out int x, out int y);
             int num  = x;
             int num2 = y;
             Grid.PosToXY(cursor_pos, out int x2, out int y2);
             if (x2 < x)
             {
                 Util.Swap(ref x, ref x2);
             }
             if (y2 < y)
             {
                 Util.Swap(ref y, ref y2);
             }
             for (int i = y; i <= y2; i++)
             {
                 for (int j = x; j <= x2; j++)
                 {
                     int cell = Grid.XYToCell(j, i);
                     if (Grid.IsValidCell(cell) && Grid.IsVisible(cell))
                     {
                         int value  = i - num2;
                         int value2 = j - num;
                         value  = Mathf.Abs(value);
                         value2 = Mathf.Abs(value2);
                         OnDragTool(cell, value + value2);
                     }
                 }
             }
             string sound = GlobalAssets.GetSound(GetConfirmSound(), false);
             KMonoBehaviour.PlaySound(sound);
             OnDragComplete(downPos, cursor_pos);
         }
     }
 }
 public override void OnKeyUp(KButtonEvent e)
 {
     if (e.TryConsume(Action.DragStraight))
     {
         dragAxis = DragAxis.Invalid;
     }
     else if (interceptNumberKeysForPriority)
     {
         HandlePriorityKeysUp(e);
     }
     if (!e.Consumed)
     {
         base.OnKeyUp(e);
     }
 }
    public override void OnLeftClickUp(Vector3 cursor_pos)
    {
        cursor_pos -= placementPivot;
        KScreenManager.Instance.SetEventSystemEnabled(true);
        if (dragging)
        {
            dragging = false;
            switch (dragAxis)
            {
            case DragAxis.Horizontal:
                cursor_pos.y = downPos.y;
                dragAxis     = DragAxis.None;
                break;

            case DragAxis.Vertical:
                cursor_pos.x = downPos.x;
                dragAxis     = DragAxis.None;
                break;
            }
        }
    }
    public override void OnMouseMove(Vector3 cursorPos)
    {
        if (dragging)
        {
            if (Input.GetKey((KeyCode)Global.Instance.GetInputManager().GetDefaultController().GetInputForAction(Action.DragStraight)))
            {
                Vector3 vector = cursorPos - downPos;
                if ((canChangeDragAxis || dragAxis == DragAxis.Invalid) && vector.sqrMagnitude > 0.707f)
                {
                    if (Mathf.Abs(vector.x) < Mathf.Abs(vector.y))
                    {
                        dragAxis = DragAxis.Vertical;
                    }
                    else
                    {
                        dragAxis = DragAxis.Horizontal;
                    }
                }
            }
            else
            {
                dragAxis = DragAxis.Invalid;
            }
            switch (dragAxis)
            {
            case DragAxis.Horizontal:
                cursorPos.y = downPos.y;
                break;

            case DragAxis.Vertical:
                cursorPos.x = downPos.x;
                break;
            }
        }
        base.OnMouseMove(cursorPos);
        if (dragging)
        {
            switch (GetMode())
            {
            case Mode.Brush:
                AddDragPoints(cursorPos, previousCursorPos);
                if (areaVisualizerText != Guid.Empty)
                {
                    int        dragLength = GetDragLength();
                    GameObject worldText2 = NameDisplayScreen.Instance.GetWorldText(areaVisualizerText);
                    LocText    component2 = worldText2.GetComponent <LocText>();
                    component2.text = string.Format(UI.TOOLS.TOOL_LENGTH_FMT, dragLength);
                    Vector3 a = Grid.CellToPos(Grid.PosToCell(cursorPos));
                    a += new Vector3(0f, 1f, 0f);
                    component2.transform.SetPosition(a);
                }
                break;

            case Mode.Box:
            {
                Vector2 input  = Vector3.Max(downPos, cursorPos);
                Vector2 input2 = Vector3.Min(downPos, cursorPos);
                input  = GetRegularizedPos(input, false);
                input2 = GetRegularizedPos(input2, true);
                Vector2 vector2 = input - input2;
                Vector2 vector3 = (input + input2) * 0.5f;
                areaVisualizer.transform.SetPosition(new Vector2(vector3.x, vector3.y));
                int num = (int)(input.x - input2.x + (input.y - input2.y) - 1f);
                if (areaVisualizerSpriteRenderer.size != vector2)
                {
                    string sound = GlobalAssets.GetSound(GetDragSound(), false);
                    if (sound != null)
                    {
                        EventInstance instance = SoundEvent.BeginOneShot(sound, areaVisualizer.transform.GetPosition());
                        instance.setParameterValue("tileCount", (float)num);
                        SoundEvent.EndOneShot(instance);
                    }
                }
                areaVisualizerSpriteRenderer.size = vector2;
                if (areaVisualizerText != Guid.Empty)
                {
                    Vector2I   vector2I  = new Vector2I(Mathf.RoundToInt(vector2.x), Mathf.RoundToInt(vector2.y));
                    GameObject worldText = NameDisplayScreen.Instance.GetWorldText(areaVisualizerText);
                    LocText    component = worldText.GetComponent <LocText>();
                    component.text = string.Format(UI.TOOLS.TOOL_AREA_FMT, vector2I.x, vector2I.y);
                    Vector2 v = vector3;
                    component.transform.SetPosition(v);
                }
                break;
            }
            }
            previousCursorPos = cursorPos;
        }
    }
예제 #8
0
 public Dragger(IntVector2 surfaceDimensions, DragAxis dragAxis, DragType dragType)
 {
     SurfaceDimensions = surfaceDimensions;
     DraggingAxis      = dragAxis;
     Type = dragType;
 }