import successful, grid has visuals
cell values and grid lines are displayed. no interaction available yet.
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
/*
|
||||
------------------- 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;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace CodeMonkey.Utils {
|
||||
|
||||
/*
|
||||
* Displays text with icons in between the text
|
||||
* */
|
||||
public class UI_TextComplex {
|
||||
|
||||
private static Transform GetCanvasTransform() {
|
||||
return UtilsClass.GetCanvasTransform();
|
||||
}
|
||||
|
||||
public struct Icon {
|
||||
public Sprite sprite;
|
||||
public Vector2 size;
|
||||
public Color color;
|
||||
public Icon(Sprite sprite, Vector2 size, Color? color = null) {
|
||||
this.sprite = sprite;
|
||||
this.size = size;
|
||||
if (color == null) {
|
||||
this.color = Color.white;
|
||||
} else {
|
||||
this.color = (Color) color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public GameObject gameObject;
|
||||
private Transform transform;
|
||||
private RectTransform rectTransform;
|
||||
|
||||
// iconChar prepends the iconArr index;
|
||||
// Example using iconChar '#':
|
||||
// test #0 asdf
|
||||
// Displays "test [iconArr[0]] asdf"
|
||||
public UI_TextComplex(Transform parent, Vector2 anchoredPosition, int fontSize, char iconChar, string text, Icon[] iconArr, Font font) {
|
||||
SetupParent(parent, anchoredPosition);
|
||||
string tmp = text;
|
||||
float textPosition = 0f;
|
||||
while (tmp.IndexOf(iconChar) != -1) {
|
||||
string untilTmp = tmp.Substring(0, tmp.IndexOf(iconChar));
|
||||
string iconNumber = tmp.Substring(tmp.IndexOf(iconChar)+1);
|
||||
int indexOfSpaceAfterIconNumber = iconNumber.IndexOf(" ");
|
||||
if (indexOfSpaceAfterIconNumber != -1) {
|
||||
// Still has more space after iconNumber
|
||||
iconNumber = iconNumber.Substring(0, indexOfSpaceAfterIconNumber);
|
||||
} else {
|
||||
// No more space after iconNumber
|
||||
}
|
||||
tmp = tmp.Substring(tmp.IndexOf(iconChar+iconNumber) + (iconChar+iconNumber).Length);
|
||||
if (untilTmp.Trim() != "") {
|
||||
Text uiText = UtilsClass.DrawTextUI(untilTmp, transform, new Vector2(textPosition,0), fontSize, font);
|
||||
textPosition += uiText.preferredWidth;
|
||||
}
|
||||
// Draw Icon
|
||||
int iconIndex = UtilsClass.Parse_Int(iconNumber, 0);
|
||||
Icon icon = iconArr[iconIndex];
|
||||
UtilsClass.DrawSprite(icon.sprite, transform, new Vector2(textPosition + icon.size.x / 2f, 0), icon.size);
|
||||
textPosition += icon.size.x;
|
||||
}
|
||||
if (tmp.Trim() != "") {
|
||||
UtilsClass.DrawTextUI(tmp, transform, new Vector2(textPosition,0), fontSize, font);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetupParent(Transform parent, Vector2 anchoredPosition) {
|
||||
gameObject = new GameObject("UI_TextComplex", typeof(RectTransform));
|
||||
transform = gameObject.transform;
|
||||
rectTransform = gameObject.GetComponent<RectTransform>();
|
||||
rectTransform.SetParent(parent, false);
|
||||
rectTransform.sizeDelta = new Vector2(0, 0);
|
||||
rectTransform.anchorMin = new Vector2(0, .5f);
|
||||
rectTransform.anchorMax = new Vector2(0, .5f);
|
||||
rectTransform.pivot = new Vector2(0, .5f);
|
||||
rectTransform.anchoredPosition = anchoredPosition;
|
||||
}
|
||||
|
||||
public void SetTextColor(Color color) {
|
||||
foreach (Transform trans in transform) {
|
||||
Text text = trans.GetComponent<Text>();
|
||||
if (text != null) {
|
||||
text.color = color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public float GetTotalWidth() {
|
||||
float textPosition = 0f;
|
||||
foreach (Transform trans in transform) {
|
||||
Text text = trans.GetComponent<Text>();
|
||||
if (text != null) {
|
||||
textPosition += text.preferredWidth;
|
||||
}
|
||||
Image image = trans.GetComponent<Image>();
|
||||
if (image != null) {
|
||||
textPosition += image.GetComponent<RectTransform>().sizeDelta.x;
|
||||
}
|
||||
}
|
||||
return textPosition;
|
||||
}
|
||||
|
||||
public float GetTotalHeight() {
|
||||
foreach (Transform trans in transform) {
|
||||
Text text = trans.GetComponent<Text>();
|
||||
if (text != null) {
|
||||
return text.preferredHeight;
|
||||
}
|
||||
}
|
||||
return 0f;
|
||||
}
|
||||
|
||||
public void AddTextOutline(Color color, float size) {
|
||||
foreach (Transform textComplexTrans in transform) {
|
||||
if (textComplexTrans.GetComponent<Text>() != null) {
|
||||
Outline outline = textComplexTrans.gameObject.AddComponent<Outline>();
|
||||
outline.effectColor = color;
|
||||
outline.effectDistance = new Vector2(size, size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SetAnchorMiddle() {
|
||||
rectTransform.anchorMin = new Vector2(.5f, .5f);
|
||||
rectTransform.anchorMax = new Vector2(.5f, .5f);
|
||||
}
|
||||
|
||||
public void CenterOnPosition(Vector2 position) {
|
||||
rectTransform.anchoredPosition = position + new Vector2(-GetTotalWidth() / 2f, 0);
|
||||
}
|
||||
|
||||
public void DestroySelf() {
|
||||
Object.Destroy(gameObject);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user