Skip to content

Commit

Permalink
feat(Menu): added description in render
Browse files Browse the repository at this point in the history
  • Loading branch information
Iam1337 committed Jan 17, 2022
1 parent 4c365ae commit 708288b
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 37 deletions.
63 changes: 32 additions & 31 deletions Assets/extDebug.UGUI/Scripts/Menu/MenuRender.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,13 @@ namespace extDebug.Menu.UGUI
public class MenuRender : IDMRender, IDMRender_Update
{
#region Private Vars

private readonly StringBuilder _builder = new StringBuilder();

private string _text;

private GameObject _menuObject;
private readonly StringBuilder _builder = new StringBuilder();

private GameObject _menuObject;

private Text _label_Text;

private TextMeshPro _label_TextMeshPro;

#endregion
Expand All @@ -31,36 +29,42 @@ public class MenuRender : IDMRender, IDMRender_Update

public MenuRender(GameObject menuObject, Text menuLabel) : this(menuObject) => _label_Text = menuLabel;

public MenuRender(GameObject menuObject, TextMeshPro menuLabel) : this(menuObject) => _label_TextMeshPro = menuLabel;
public MenuRender(GameObject menuObject, TextMeshPro menuLabel) : this(menuObject) =>
_label_TextMeshPro = menuLabel;

#endregion

#region IDMRender Methods

void IDMRender.Repaint(DMBranch branch, IReadOnlyList<DMItem> items)
{
const string kSuffix = " ";
const string kPrefix = " ";
const string kPrefix_Selected = ">";
const string kSpace = " ";
const char kHorizontalChar = '─';

CalculateLengths(branch, items, kSpace.Length, out var fullLength, out var maxNameLength, out var maxValueLength);
CalculateLengths(branch, items, kSpace.Length,
out var fullLength,
out var maxNameLength,
out var maxValueLength,
out var maxDescriptionLength);

var order = -1;
var lineLength = fullLength + kSuffix.Length + kPrefix.Length;
var lineLength = fullLength + kPrefix.Length;
var lineEmpty = new string(kHorizontalChar, lineLength);

// header
_builder.Clear();
_builder.AppendFormat($"{kPrefix}<color=#{ColorUtility.ToHtmlStringRGB(branch.NameColor)}>{{0,{-fullLength}}}</color>{kSuffix}{Environment.NewLine}", branch.Name);
_builder.AppendFormat($"{kPrefix}<color=#{ColorUtility.ToHtmlStringRGB(branch.NameColor)}>{{0,{-fullLength}}}</color>{Environment.NewLine}", branch.Name);
_builder.AppendLine(lineEmpty);

// items
for (var i = 0; i < items.Count; i++)
{
var item = items[i];
var prefix = item == branch.Current ? kPrefix_Selected : kPrefix;
var selected = item == branch.Current;
var prefix = selected ? kPrefix_Selected : kPrefix;
var alpha = selected ? 1 : 0.75f;

// items separator
if (order >= 0 && Math.Abs(order - item.Order) > 1)
Expand All @@ -70,24 +74,19 @@ void IDMRender.Repaint(DMBranch branch, IReadOnlyList<DMItem> items)

var name = item.Name;
var value = item.Value;
var description = item.Description;

if (item is DMBranch)
name += "...";

if (string.IsNullOrEmpty(value))
{
// only name
_builder.AppendFormat($"{prefix}<color=#{ColorUtility.ToHtmlStringRGB(item.NameColor)}>{{0,-{fullLength}}}</color>{kSuffix}{Environment.NewLine}", name);
}
else
{
// with value
_builder.AppendFormat($"{prefix}<color=#{ColorUtility.ToHtmlStringRGB(item.NameColor)}>{{0,-{maxNameLength}}}</color>{kSpace}<color=#{ColorUtility.ToHtmlStringRGB(item.ValueColor)}>{{1,-{maxValueLength}}}</color>{kSuffix}{Environment.NewLine}", name, value);
}
_builder.AppendFormat($"{prefix}<color=#{ColorUtility.ToHtmlStringRGB(item.NameColor * alpha)}>{{0,{-maxNameLength}}}</color>", name);
_builder.AppendFormat($"{kSpace}<color=#{ColorUtility.ToHtmlStringRGB(item.ValueColor * alpha)}>{{0,{maxValueLength}}}</color>", value);
_builder.AppendFormat($"{kSpace}<color=#{ColorUtility.ToHtmlStringRGB(item.DescriptionColor * alpha)}>{{0,{-maxDescriptionLength}}}</color>", description);
_builder.Append(Environment.NewLine);
}

_builder.Remove(_builder.Length - Environment.NewLine.Length, Environment.NewLine.Length);

// set value in text components
if (_label_TextMeshPro != null)
_label_TextMeshPro.text = _builder.ToString();
Expand All @@ -99,36 +98,38 @@ void IDMRender_Update.Update(bool isVisible)
{
_menuObject.SetActive(isVisible);
}

#endregion

#region Private Methods

private MenuRender(GameObject menuObject) => _menuObject = menuObject;
private void CalculateLengths(DMBranch branch, IReadOnlyList<DMItem> items, int space, out int fullLength, out int maxNameLength, out int maxValueLength)

private void CalculateLengths(DMBranch branch, IReadOnlyList<DMItem> items, int spaceLength, out int fullLength, out int maxNameLength, out int maxValueLength, out int maxDescriptionLength)
{
maxNameLength = 0;
maxValueLength = 0;
maxDescriptionLength = 0;
fullLength = branch.Name.Length;

for (var i = 0; i < items.Count; i++)
{
var item = items[i];
var nameLength = item.Name.Length;
var valueLength = item.Value.Length;
var descriptionLength = item.Description.Length;

if (item is DMBranch)
nameLength += 3;

maxNameLength = Math.Max(maxNameLength, nameLength);
maxValueLength = Math.Max(maxValueLength, valueLength);
maxDescriptionLength = Math.Max(maxDescriptionLength, descriptionLength);
}

fullLength = Math.Max(fullLength, maxNameLength + maxValueLength + space);
maxNameLength = Math.Max(maxNameLength, fullLength - maxValueLength - space);
fullLength = Math.Max(fullLength, maxNameLength + spaceLength + maxValueLength + spaceLength + maxDescriptionLength);
}

#endregion
}
}
9 changes: 5 additions & 4 deletions Packages/manifest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"dependencies": {
"com.iam1337.extdebug": "1.12.1",
"com.iam1337.extdebug": "1.12.4",
"com.unity.ide.rider": "3.0.9",
"com.unity.ide.visualstudio": "2.0.12",
"com.unity.ide.vscode": "1.2.4",
Expand Down Expand Up @@ -42,10 +42,11 @@
"scopedRegistries": [
{
"name": "package.openupm.com",
"url": "https://package.openupm.com",
"url": "http://package.openupm.com",
"scopes": [
"com.iam1337.extdebug"
"com.iam1337.extdebug",
"com.openupm"
]
}
]
}
}
4 changes: 2 additions & 2 deletions Packages/packages-lock.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"dependencies": {
"com.iam1337.extdebug": {
"version": "1.12.1",
"version": "1.12.4",
"depth": 0,
"source": "registry",
"dependencies": {},
"url": "https://package.openupm.com"
"url": "http://package.openupm.com"
},
"com.unity.ext.nunit": {
"version": "1.0.6",
Expand Down

0 comments on commit 708288b

Please sign in to comment.