using System;
using UnityEngine;

namespace UnityEditor.U2D.Animation
{
    internal class DefaultPreviewBehaviour : IMeshPreviewBehaviour
    {
        public float GetWeightMapOpacity(SpriteCache sprite)
        {
            return 0f;
        }

        public bool DrawWireframe(SpriteCache sprite)
        {
            return false;
        }

        public bool Overlay(SpriteCache sprite)
        {
            return false;
        }

        public bool OverlayWireframe(SpriteCache sprite)
        {
            return sprite.IsVisible() && sprite.skinningCache.selectedSprite == sprite;
        }
    }

    internal class MeshPreviewBehaviour : IMeshPreviewBehaviour
    {
        public bool showWeightMap { get; set; }
        public bool drawWireframe { get; set; }
        public bool overlaySelected { get; set; }

        public float GetWeightMapOpacity(SpriteCache sprite)
        {
            var skinningCache = sprite.skinningCache;

            if (showWeightMap)
            {
                if (skinningCache.selectedSprite == sprite || skinningCache.selectedSprite == null)
                    return VisibilityToolSettings.meshOpacity;
            }

            return 0f;
        }

        public bool DrawWireframe(SpriteCache sprite)
        {
            var skinningCache = sprite.skinningCache;

            if (drawWireframe)
                return skinningCache.selectedSprite == null;

            return false;
        }

        public bool Overlay(SpriteCache sprite)
        {
            var skinningCache = sprite.skinningCache;

            if (overlaySelected && skinningCache.selectedSprite == sprite)
                return true;

            return false;
        }

        public bool OverlayWireframe(SpriteCache sprite)
        {
            return sprite.IsVisible() && sprite.skinningCache.selectedSprite == sprite;
        }
    }
}