private static void SetBadge(HoverData hoverData, Entity targetEntity)
 {
     if (targetEntity != null && targetEntity.SubclassIndex == TypeIndex.Character)
     {
         hoverData.AddCommand(new BadgeCommand(targetEntity));
     }
 }
        private static Boolean OnHoverPrefix(Action action, HoverData hoverData, GameModeProcessor __instance)
        {
            if (!(__instance is PeaceModeProcessor))
            {
                return(HarmonyPrefix.CallOriginal);
            }

            Boolean flag = action.Data.IsPossible();

            if (flag)
            {
                if (action.Ability != null)
                {
                    hoverData.CursorType = action.Data.GetCursor(action.BlockReasons);
                }
                else if (action.Tool != null)
                {
                    hoverData.CursorType = CursorType.Variants;
                }
            }

            SetSilhouette(hoverData, action.Data);

            if (action.TargetEntity != null)
            {
                SetBadge(hoverData, action.TargetEntity);
                if (flag && action.Ability != null)
                {
                    hoverData.AddCommand(ActionTooltipBuilder.GetBanner(action, RestrictionStrategy.DefaultTooltip));
                }
            }

            return(HarmonyPrefix.SkipOriginal);
        }
Beispiel #3
0
    public bool CloseToEndPoints(ref HoverData hoverData)
    {
        Vector2 mousePosition = Program.Instance.GetMouseCanvasPosition();

        BezierSegment first = BezierCurve[0];
        BezierSegment last  = BezierCurve[BezierCurve.Count - 1];

        //CloseToLast
        if (Vector2.Distance(mousePosition, last.Point) <= 5.5f)
        {
            last.PointHovered = true;

            UpdateHoverData(ref hoverData, last, BezierCurve.Count - 1);
            return(true);
        }
        //CloseToFirst
        if (Vector2.Distance(mousePosition, first.Point) <= 5.5f)
        {
            first.PointHovered = true;

            UpdateHoverData(ref hoverData, first, 0);
            return(true);
        }
        return(false);
    }
Beispiel #4
0
    void UpdateHoverData(ref HoverData hoverData, BezierSegment segment, int index)
    {
        if (hoverData.HoveredBeziersegment == segment)
        {
            return;
        }

        hoverData.HoveredSegmentIndex = index;
        hoverData.UpdateBezierSegment(segment);
    }
 void SetBezierSegmentData(HoverData data)
 {
     if (data.HoveredBeziersegment == null)
     {
         UnhoverCurrentData();
     }
     else
     {
         _currentHoverData      = data;
         _currentHoveredSegment = _currentHoverData.HoveredBeziersegment;
     }
 }
Beispiel #6
0
    public bool MouseOverPathHandles(ref HoverData hoverData)
    {
        Vector2 mousePosition = Program.Instance.GetMouseCanvasPosition();

        for (int i = 0; i < BezierCurve.Count; i++)
        {
            if (BezierCurve[i].MouseOverPathHandles(mousePosition, ref hoverData))
            {
                return(true);
            }
        }
        return(false);
    }
Beispiel #7
0
    /// <summary>
    /// All Conditions and Actions are set in Init
    /// </summary>
    /// <param name="hoverData">Program is handing over hoverdata</param>
    public virtual void Init(HoverData hoverData)
    {
        _hoverData = hoverData;

        AddListenerToToggle();
        CastEditmodeList();
        SetCollectionUpdater();
        SetEditmodeActions();

        AddPathObjectHoverConditions();
        AddKeyboardEventsListener();

        _isInitialized = true;
    }
Beispiel #8
0
    public bool MouseOverPath(ref HoverData hoverData)
    {
        Vector2 mousePosition = Program.Instance.GetMouseCanvasPosition();

        for (int i = 0; i < BezierCurve.Count; i++)
        {
            if (BezierCurve[i].MouseOverSegmentPoints(mousePosition, ref hoverData))
            {
                hoverData.HoveredSegmentIndex = i;
                return(true);
            }
        }
        return(false);
    }
    public bool MouseOverPathHandles(Vector2 mousePosition, ref HoverData hoverData)
    {
        bool isSecondHandle = Vector2.Distance(mousePosition, SecondHandle) <= 6.5f;

        if (isSecondHandle ||
            Vector2.Distance(mousePosition, FirstHandle) <= 6.5f)
        {
            hoverData.IsSecondHandleHovered = isSecondHandle;
            hoverData.UpdateBezierSegment(this);

            FirstHandleHovered  = !isSecondHandle;
            SecondHandleHovered = isSecondHandle;
            return(true);
        }
        return(false);
    }
Beispiel #10
0
    public bool MouseOverPathPoints(ref HoverData hoverData)
    {
        Vector2 mousePosition = Program.Instance.GetMouseCanvasPosition();

        for (int i = 0; i < BezierCurve.Count; i++)
        {
            if (BezierCurve[i].MouseOverPathPoint(mousePosition))
            {
                BezierCurve[i].PointHovered = true;

                UpdateHoverData(ref hoverData, BezierCurve[i], i);
                return(true);
            }
        }
        return(false);
    }
    public bool MouseOverSegmentPoints(Vector2 mousePosition, ref HoverData hoverData)
    {
        for (int i = 0; i < SegmentPoints.Count; i++)
        {
            if (Vector2.Distance(mousePosition, SegmentPoints[i]) <= 3f)
            {
                if (hoverData.HoveredBeziersegment != null &&
                    hoverData.HoveredBeziersegment.PointHovered)
                {
                    hoverData.HoveredBeziersegment.PointHovered = false;
                }

                hoverData.HoveredSegmentPointIndex = i + 1;
                hoverData.UpdateBezierSegment(this);
                return(true);
            }
        }
        return(false);
    }
    public void Awake()
    {
        HoverData _hoverData = new HoverData();

        foreach (var item in _editModes)
        {
            item.Init(_hoverData);
        }

        _colorSelector.Init(_colorPicker);

        _layout.childControlHeight = false;
        _layout.childControlWidth  = false;

        if (_colorPicker == null)
        {
            _colorPicker = FindObjectOfType <Colorpicker>();
        }
        _colorPicker.Init();
    }
        private static void SetSilhouette(HoverData hoverData, ActionData actionData)
        {
            SilhouetteMaker maker = new SilhouetteMaker(hoverData, actionData);

            maker.Hover();
        }
 public SilhouetteMaker(HoverData hoverData, ActionData actionData)
 {
     _hoverData  = hoverData;
     _actionData = actionData;
 }
Beispiel #15
0
        // This implementation assumes a single hover is active at a time.
        public virtual void AddAndSortHoveredItem(Interactable interactable)
        {
            //if (interactable.GetComponent<InteractableUi>() != null) {
            //    Debug.Log("Add and sort: " + interactable.name);
            //}
                        #if UNITY_EDITOR
            if (debugInteractor)
            {
                Debug.Log("Add and sort hovered item: " + interactable.name);
            }
                        #endif

            // First calculate the distance from the interaction source position
            // (such as the center of the controller tip)
            //
            float distance = interactable.DistanceFromController(this);

            // Store the object and distance into a HoverData structure
            var newHoverData = new HoverData();
            newHoverData.interactable = interactable;
            newHoverData.distance     = distance;

                        #if UNITY_EDITOR
            if (debugInteractor)
            {
                Debug.Log("Distance for " + interactable.name + " = " + distance);
            }
                        #endif

            // This ensures that the closest item is at the head of the stack
            var insertionIndex = 0;
            foreach (var storedHoverData in sortedHoveredObjects)
            {
                if (storedHoverData.distance > newHoverData.distance)
                {
                    break;
                }
                else
                {
                    insertionIndex++;
                }
            }

            // If the index has exceeded the stack, add object at the end
            if (insertionIndex > sortedHoveredObjects.Count)
            {
                                #if UNITY_EDITOR
                if (debugInteractor)
                {
                    Debug.Log(name + ": Adding sorted hovered item: " + interactable.name);
                }
                                #endif
                sortedHoveredObjects.Add(newHoverData);
            }
            else
            {
                                #if UNITY_EDITOR
                if (debugInteractor)
                {
                    Debug.Log(name + ": Inserting sorted hovered item: " + interactable.name);
                }
                                #endif
                // Otherwise insert it at the index
                sortedHoveredObjects.Insert(insertionIndex, newHoverData);
            }

            //			GetTopHoveredItem ();

                        #if UNITY_EDITOR
            // Add the interactable to the hovered list
            if (!rawHoveredObjects.Contains(interactable))
            {
                rawHoveredObjects.Add(interactable);
            }
                        #endif
        }
Beispiel #16
0
 void SetBezierSegmentData(HoverData data)
 {
     UnhoverCurrentData();
     _currentHoverData      = data;
     _currentHoveredSegment = data.HoveredBeziersegment;
 }