5f9e8f979d
cell values and grid lines are displayed. no interaction available yet.
105 lines
3.7 KiB
C#
105 lines
3.7 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 System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace CodeMonkey.Utils {
|
|
|
|
/*
|
|
* UI Container with multiple bars, useful for displaying one bar with multiple inner bars like success chance and failure chance
|
|
* */
|
|
public class UI_BarMultiple {
|
|
|
|
private GameObject gameObject;
|
|
private RectTransform rectTransform;
|
|
private RectTransform[] barArr;
|
|
private Image[] barImageArr;
|
|
private Vector2 size;
|
|
|
|
public class Outline {
|
|
public float size = 1f;
|
|
public Color color = Color.black;
|
|
public Outline(float size, Color color) {
|
|
this.size = size;
|
|
this.color = color;
|
|
}
|
|
}
|
|
|
|
public UI_BarMultiple(Transform parent, Vector2 anchoredPosition, Vector2 size, Color[] barColorArr, Outline outline) {
|
|
this.size = size;
|
|
SetupParent(parent, anchoredPosition, size);
|
|
if (outline != null) SetupOutline(outline, size);
|
|
List<RectTransform> barList = new List<RectTransform>();
|
|
List<Image> barImageList = new List<Image>();
|
|
List<float> defaultSizeList = new List<float>();
|
|
foreach (Color color in barColorArr) {
|
|
barList.Add(SetupBar(color));
|
|
defaultSizeList.Add(1f / barColorArr.Length);
|
|
}
|
|
barArr = barList.ToArray();
|
|
barImageArr = barImageList.ToArray();
|
|
SetSizes(defaultSizeList.ToArray());
|
|
}
|
|
|
|
private void SetupParent(Transform parent, Vector2 anchoredPosition, Vector2 size) {
|
|
gameObject = new GameObject("UI_BarMultiple", typeof(RectTransform));
|
|
rectTransform = gameObject.GetComponent<RectTransform>();
|
|
rectTransform.SetParent(parent, false);
|
|
rectTransform.sizeDelta = size;
|
|
rectTransform.anchorMin = new Vector2(0, .5f);
|
|
rectTransform.anchorMax = new Vector2(0, .5f);
|
|
rectTransform.pivot = new Vector2(0, .5f);
|
|
rectTransform.anchoredPosition = anchoredPosition;
|
|
}
|
|
|
|
private void SetupOutline(Outline outline, Vector2 size) {
|
|
UtilsClass.DrawSprite(outline.color, gameObject.transform, Vector2.zero, size + new Vector2(outline.size, outline.size), "Outline");
|
|
}
|
|
|
|
private RectTransform SetupBar(Color barColor) {
|
|
RectTransform bar = UtilsClass.DrawSprite(barColor, gameObject.transform, Vector2.zero, Vector2.zero, "Bar");
|
|
bar.anchorMin = new Vector2(0,0);
|
|
bar.anchorMax = new Vector2(0,1f);
|
|
bar.pivot = new Vector2(0,.5f);
|
|
return bar;
|
|
}
|
|
|
|
public void SetSizes(float[] sizeArr) {
|
|
if (sizeArr.Length != barArr.Length) {
|
|
throw new System.Exception("Length doesn't match!");
|
|
}
|
|
Vector2 pos = Vector2.zero;
|
|
for (int i=0; i<sizeArr.Length; i++) {
|
|
float scaledSize = sizeArr[i] * size.x;
|
|
barArr[i].anchoredPosition = pos;
|
|
barArr[i].sizeDelta = new Vector2(scaledSize, 0f);
|
|
pos.x += scaledSize;
|
|
}
|
|
}
|
|
|
|
public RectTransform GetBar(int index) {
|
|
return barArr[index];
|
|
}
|
|
|
|
public Vector2 GetSize() {
|
|
return size;
|
|
}
|
|
|
|
public void DestroySelf() {
|
|
UnityEngine.Object.Destroy(gameObject);
|
|
}
|
|
|
|
}
|
|
}
|