summaryrefslogtreecommitdiff
path: root/Pathfinding Visualizer/Assets/CodeMonkey/Utils/World_Bar.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Pathfinding Visualizer/Assets/CodeMonkey/Utils/World_Bar.cs')
-rw-r--r--Pathfinding Visualizer/Assets/CodeMonkey/Utils/World_Bar.cs150
1 files changed, 150 insertions, 0 deletions
diff --git a/Pathfinding Visualizer/Assets/CodeMonkey/Utils/World_Bar.cs b/Pathfinding Visualizer/Assets/CodeMonkey/Utils/World_Bar.cs
new file mode 100644
index 0000000..ad1575b
--- /dev/null
+++ b/Pathfinding Visualizer/Assets/CodeMonkey/Utils/World_Bar.cs
@@ -0,0 +1,150 @@
+/*
+ ------------------- 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);
+ }
+ }
+
+ }
+
+}