hellbound/Assets/Sources/Feel/MMTools/Tools/MMDebugMenu/Scripts/UIClasses/MMDebugMenuSpriteReplace.cs

113 lines
2.5 KiB
C#
Raw Permalink Normal View History

2021-11-26 11:16:25 +03:00
using UnityEngine;
using System.Collections;
using System;
using MoreMountains.Tools;
using UnityEngine.UI;
namespace MoreMountains.Tools
{
/// <summary>
/// A class to add to an image to have it act like a button with a different sprite for on and off states
/// </summary>
public class MMDebugMenuSpriteReplace : MonoBehaviour
{
/// the sprite to use when in the "on" state
public Sprite OnSprite;
/// the sprite to use when in the "off" state
public Sprite OffSprite;
/// if this is true, the button will start if "on" state
public bool StartsOn = true;
/// the current state of the button
public bool CurrentValue { get { return (_image.sprite == OnSprite); } }
protected Image _image;
protected MMTouchButton _mmTouchButton;
/// <summary>
/// On Start we initialize our button
/// </summary>
protected virtual void Awake()
{
//Initialization ();
}
/// <summary>
/// On init, we grab our image component, and set our sprite in its initial state
/// </summary>
public virtual void Initialization()
{
_image = this.gameObject.GetComponent<Image> ();
_mmTouchButton = this.gameObject.GetComponent<MMTouchButton> ();
if (_mmTouchButton != null)
{
_mmTouchButton.ReturnToInitialSpriteAutomatically = false;
}
if (_image == null) { return; }
if ((OnSprite == null) || (OffSprite == null)) { return; }
if (StartsOn)
{
_image.sprite = OnSprite;
}
else
{
_image.sprite = OffSprite;
}
}
/// <summary>
/// A public method to change the sprite
/// </summary>
public virtual void Swap()
{
if (_image.sprite != OnSprite)
{
SwitchToOnSprite ();
}
else
{
SwitchToOffSprite ();
}
}
/// <summary>
/// a public method to switch to off sprite directly
/// </summary>
public virtual void SwitchToOffSprite()
{
if (_image == null) { return; }
if (OffSprite == null) { return; }
SpriteOff ();
}
/// <summary>
/// sets the image's sprite to off
/// </summary>
protected virtual void SpriteOff()
{
_image.sprite = OffSprite;
}
/// <summary>
/// a public method to switch to on sprite directly
/// </summary>
public virtual void SwitchToOnSprite()
{
if (_image == null) { return; }
if (OnSprite == null) { return; }
SpriteOn ();
}
/// <summary>
/// sets the image's sprite to on
/// </summary>
protected virtual void SpriteOn()
{
_image.sprite = OnSprite;
}
}
}