BITFALL/Assets/GSpawn - Level Designer/Scripts/Core/UniqueNameGen.cs

49 lines
1.5 KiB
C#

#if UNITY_EDITOR
using System.Collections.Generic;
namespace GSpawn
{
public static class UniqueNameGen
{
public static string generate(string desiredName, List<string> names)
{
if (names.Count == 0) return desiredName;
string baseName = desiredName;
string finalName = desiredName;
int suffixIndex = 0;
int lastOpenBracket = finalName.LastIndexOf('(');
if (lastOpenBracket >= 0)
{
int charCursor = lastOpenBracket + 1;
while (charCursor < finalName.Length && finalName[charCursor] == '0')
++charCursor;
string suffixString = string.Empty;
while (charCursor < finalName.Length)
{
if (char.IsDigit(finalName[charCursor])) suffixString += finalName[charCursor];
else break;
++charCursor;
}
if (charCursor < finalName.Length && finalName[charCursor] == ')')
{
baseName = finalName.Substring(0, lastOpenBracket).Trim();
suffixIndex = suffixString.Length != 0 ? int.Parse(suffixString) : 0;
}
}
while (names.Contains(finalName))
{
finalName = baseName + " (" + suffixIndex + ")";
++suffixIndex;
}
return finalName;
}
}
}
#endif