private ConversationBubbleOrientation(BubbleOrientation orientation)
 {
     BubbleOrientation    = orientation;
     SpriteForOrientation = ConversationBubbleOrientationManager.GetSpriteForOrientation(orientation);
     TmpEulers            = ConversationBubbleOrientationManager.GetTmpEulersForOrientation(orientation);
     TmpLocalPosition     = ConversationBubbleOrientationManager.GetTmpPositionForOrientation(orientation);
     pivotForOrientation  = ConversationBubbleOrientationManager.GetPivotForOrientation(orientation);
 }
    internal static Vector2 GetPivotForOrientation(BubbleOrientation orientation)
    {
        if (!(orientation == BubbleOrientation.CENTER || orientation == BubbleOrientation.NONE))
        {
            return(orientation == BubbleOrientation.LEFT ? leftAlignedPivot : rightAlignedPivot);
        }

        return(centerAlignedPivot);
    }
    internal static Vector3 GetTmpPositionForOrientation(BubbleOrientation orientation)
    {
        if (!(orientation == BubbleOrientation.CENTER || orientation == BubbleOrientation.NONE))
        {
            return(orientation == BubbleOrientation.LEFT ? leftAlignedTmpPosition : rightAlignedTmpPosition);
        }

        return(centerAlignedTmpPosition);
    }
    internal static Vector3 GetTmpEulersForOrientation(BubbleOrientation orientation)
    {
        float zRotationFactor = 0;

        if (!(orientation == BubbleOrientation.CENTER || orientation == BubbleOrientation.NONE))
        {
            zRotationFactor = orientation == BubbleOrientation.LEFT ? -1 : 1;
        }

        return(tmpZRotation * zRotationFactor * Vector3.forward);
    }
    private static ConversationBubbleOrientation GetOpposite(BubbleOrientation orientation)
    {
        if (orientation.Equals(BubbleOrientation.LEFT))
        {
            return(ConversationBubbleOrientation.Right);
        }
        else if (orientation.Equals(BubbleOrientation.RIGHT))
        {
            return(ConversationBubbleOrientation.Left);
        }

        return(ConversationBubbleOrientation.Center);
    }
    internal static Sprite GetSpriteForOrientation(BubbleOrientation orientation)
    {
        switch (orientation)
        {
        case BubbleOrientation.LEFT:
            return(leftSprite);

        case BubbleOrientation.CENTER:
            return(centeredSprite);

        case BubbleOrientation.RIGHT:
            return(rightSprite);

        case BubbleOrientation.NONE:
        default:
            return(null);
        }
    }
 private static ConversationBubbleOrientation[] MoveTowardsOrientation(BubbleOrientation start, BubbleOrientation desired)
 {
     if (start.Equals(desired))
     {
         return(Array.Empty <ConversationBubbleOrientation>());
     }
     else
     {
         ConversationBubbleOrientation opposite = GetOpposite(start);
         return(start.Equals(BubbleOrientation.CENTER)
             ? new ConversationBubbleOrientation[]
         {
             opposite
         }
             : new ConversationBubbleOrientation[]
         {
             ConversationBubbleOrientation.Center,
             opposite
         });
     }
 }
 public static ConversationBubbleOrientation[] MoveToLeft(BubbleOrientation start)
 {
     return(MoveTowardsOrientation(start, BubbleOrientation.LEFT));
 }
 public static ConversationBubbleOrientation[] MoveToRight(BubbleOrientation start)
 {
     return(MoveTowardsOrientation(start, BubbleOrientation.RIGHT));
 }