5f9e8f979d
cell values and grid lines are displayed. no interaction available yet.
151 lines
6.2 KiB
C#
151 lines
6.2 KiB
C#
/*
|
|
------------------- Code Monkey -------------------
|
|
|
|
Thank you for downloading the Code Monkey Utilities
|
|
I hope you find them useful in your projects
|
|
If you have any questions use the contact form
|
|
Cheers!
|
|
|
|
unitycodemonkey.com
|
|
--------------------------------------------------
|
|
*/
|
|
|
|
using UnityEngine;
|
|
|
|
namespace CodeMonkey.Utils {
|
|
|
|
/*
|
|
* Bar in the World, great for quickly making a health bar
|
|
* */
|
|
public class World_Bar {
|
|
|
|
private Outline outline;
|
|
private GameObject gameObject;
|
|
private Transform transform;
|
|
private Transform background;
|
|
private Transform bar;
|
|
|
|
public static int GetSortingOrder(Vector3 position, int offset, int baseSortingOrder = 5000) {
|
|
return (int)(baseSortingOrder - position.y) + offset;
|
|
}
|
|
|
|
public class Outline {
|
|
public float size = 1f;
|
|
public Color color = Color.black;
|
|
}
|
|
|
|
public static World_Bar Create(Vector3 localPosition, Vector3 localScale, Color? backgroundColor, Color barColor, float sizeRatio, Outline outline = null) {
|
|
return Create(null, localPosition, localScale, backgroundColor, barColor, sizeRatio, 0, outline);
|
|
}
|
|
|
|
public static World_Bar Create(Transform parent, Vector3 localPosition, Vector3 localScale, Color? backgroundColor, Color barColor, float sizeRatio, int sortingOrder, Outline outline = null) {
|
|
return new World_Bar(parent, localPosition, localScale, backgroundColor, barColor, sizeRatio, sortingOrder, outline);
|
|
}
|
|
|
|
public World_Bar(Transform parent, Vector3 localPosition, Vector3 localScale, Color? backgroundColor, Color barColor, float sizeRatio, int sortingOrder, Outline outline = null) {
|
|
this.outline = outline;
|
|
SetupParent(parent, localPosition);
|
|
if (outline != null) SetupOutline(outline, localScale, sortingOrder - 1);
|
|
if (backgroundColor != null) SetupBackground((Color)backgroundColor, localScale, sortingOrder);
|
|
SetupBar(barColor, localScale, sortingOrder + 1);
|
|
SetSize(sizeRatio);
|
|
}
|
|
|
|
private void SetupParent(Transform parent, Vector3 localPosition) {
|
|
gameObject = new GameObject("World_Bar");
|
|
transform = gameObject.transform;
|
|
transform.SetParent(parent);
|
|
transform.localPosition = localPosition;
|
|
}
|
|
|
|
private void SetupOutline(Outline outline, Vector3 localScale, int sortingOrder) {
|
|
UtilsClass.CreateWorldSprite(transform, "Outline", Assets.i.s_White, new Vector3(0,0), localScale + new Vector3(outline.size, outline.size), sortingOrder, outline.color);
|
|
}
|
|
|
|
private void SetupBackground(Color backgroundColor, Vector3 localScale, int sortingOrder) {
|
|
background = UtilsClass.CreateWorldSprite(transform, "Background", Assets.i.s_White, new Vector3(0,0), localScale, sortingOrder, backgroundColor).transform;
|
|
}
|
|
|
|
private void SetupBar(Color barColor, Vector3 localScale, int sortingOrder) {
|
|
GameObject barGO = new GameObject("Bar");
|
|
bar = barGO.transform;
|
|
bar.SetParent(transform);
|
|
bar.localPosition = new Vector3(-localScale.x / 2f, 0, 0);
|
|
bar.localScale = new Vector3(1,1,1);
|
|
Transform barIn = UtilsClass.CreateWorldSprite(bar, "BarIn", Assets.i.s_White, new Vector3(localScale.x / 2f, 0), localScale, sortingOrder, barColor).transform;
|
|
}
|
|
|
|
public void SetLocalScale(Vector3 localScale) {
|
|
// Outline
|
|
if (transform.Find("Outline") != null) {
|
|
// Has outline
|
|
transform.Find("Outline").localScale = localScale + new Vector3(outline.size, outline.size);
|
|
}
|
|
|
|
//Background
|
|
background.localScale = localScale;
|
|
|
|
// Set Bar Scale
|
|
bar.localPosition = new Vector3(-localScale.x / 2f, 0, 0);
|
|
Transform barIn = bar.Find("BarIn");
|
|
barIn.localScale = localScale;
|
|
barIn.localPosition = new Vector3(localScale.x / 2f, 0);
|
|
}
|
|
|
|
public void SetSortingOrder(int sortingOrder) {
|
|
bar.Find("BarIn").GetComponent<SpriteRenderer>().sortingOrder = sortingOrder;
|
|
if (background != null) background.GetComponent<SpriteRenderer>().sortingOrder = sortingOrder - 1;
|
|
if (transform.Find("Outline") != null) transform.Find("Outline").GetComponent<SpriteRenderer>().sortingOrder = sortingOrder - 2;
|
|
}
|
|
|
|
public void SetSortingLayerName(string sortingLayerName) {
|
|
bar.Find("BarIn").GetComponent<SpriteRenderer>().sortingLayerName = sortingLayerName;
|
|
if (background != null) background.GetComponent<SpriteRenderer>().sortingLayerName = sortingLayerName;
|
|
if (transform.Find("Outline") != null) transform.Find("Outline").GetComponent<SpriteRenderer>().sortingLayerName = sortingLayerName;
|
|
}
|
|
|
|
public void SetRotation(float rotation) {
|
|
transform.localEulerAngles = new Vector3(0, 0, rotation);
|
|
}
|
|
|
|
public void SetSize(float sizeRatio) {
|
|
bar.localScale = new Vector3(sizeRatio, 1, 1);
|
|
}
|
|
|
|
public void SetColor(Color color) {
|
|
bar.Find("BarIn").GetComponent<SpriteRenderer>().color = color;
|
|
}
|
|
|
|
public void SetActive(bool isActive) {
|
|
gameObject.SetActive(isActive);
|
|
}
|
|
|
|
public void Show() {
|
|
gameObject.SetActive(true);
|
|
}
|
|
|
|
public void Hide() {
|
|
gameObject.SetActive(false);
|
|
}
|
|
|
|
public Button_Sprite AddButton(System.Action ClickFunc, System.Action MouseOverOnceFunc, System.Action MouseOutOnceFunc) {
|
|
Button_Sprite buttonSprite = gameObject.AddComponent<Button_Sprite>();
|
|
if (ClickFunc != null)
|
|
buttonSprite.ClickFunc = ClickFunc;
|
|
if (MouseOverOnceFunc != null)
|
|
buttonSprite.MouseOverOnceFunc = MouseOverOnceFunc;
|
|
if (MouseOutOnceFunc != null)
|
|
buttonSprite.MouseOutOnceFunc = MouseOutOnceFunc;
|
|
return buttonSprite;
|
|
}
|
|
|
|
public void DestroySelf() {
|
|
if (gameObject != null) {
|
|
Object.Destroy(gameObject);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|