Initial release: HSUI v1.0.0.0 - HUD replacement with configurable hotbars
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+139
@@ -0,0 +1,139 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using Dalamud.Game.ClientState.Objects.Types;
|
||||
using Dalamud.Game.Text.SeStringHandling;
|
||||
using HSUI.Config;
|
||||
using HSUI.Interface.Bars;
|
||||
using FFXIVClientStructs.FFXIV.Client.System.String;
|
||||
using static System.Globalization.CultureInfo;
|
||||
|
||||
namespace HSUI
|
||||
{
|
||||
public static class Extensions
|
||||
{
|
||||
public static string Abbreviate(this string str)
|
||||
{
|
||||
if (str.Length > 20) {
|
||||
string[] splits = str.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
for (int i = 0; i < splits.Length - 1; i++)
|
||||
{
|
||||
splits[i] = splits[i][0].ToString();
|
||||
}
|
||||
|
||||
return string.Join(". ", splits).ToString();
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
public static string FirstName(this string str)
|
||||
{
|
||||
string[] splits = str.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
return splits.Length > 0 ? splits[0] : "";
|
||||
}
|
||||
|
||||
public static string LastName(this string str)
|
||||
{
|
||||
string[] splits = str.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
return splits.Length > 1 ? splits[^1] : "";
|
||||
}
|
||||
|
||||
public static string Initials(this string str)
|
||||
{
|
||||
var initials = "";
|
||||
var firstName = FirstName(str);
|
||||
var lastName = LastName(str);
|
||||
|
||||
if (firstName.Length > 0)
|
||||
{
|
||||
initials = firstName[0] + ".";
|
||||
}
|
||||
|
||||
if (lastName.Length > 0)
|
||||
{
|
||||
initials += " " + lastName[0] + ".";
|
||||
}
|
||||
|
||||
return initials;
|
||||
}
|
||||
|
||||
public static string Truncated(this string str, int length = 0)
|
||||
{
|
||||
return length > 0 ? str.Substring(0, Math.Min(str.Length, length)) : str;
|
||||
}
|
||||
|
||||
public static Vector4 AdjustColor(this Vector4 vec, float correctionFactor)
|
||||
{
|
||||
float red = vec.X;
|
||||
float green = vec.Y;
|
||||
float blue = vec.Z;
|
||||
|
||||
if (correctionFactor < 0)
|
||||
{
|
||||
correctionFactor = 1 + correctionFactor;
|
||||
red *= correctionFactor;
|
||||
green *= correctionFactor;
|
||||
blue *= correctionFactor;
|
||||
}
|
||||
else
|
||||
{
|
||||
red = (1 - red) * correctionFactor + red;
|
||||
green = (1 - green) * correctionFactor + green;
|
||||
blue = (1 - blue) * correctionFactor + blue;
|
||||
}
|
||||
|
||||
return new Vector4(red, green, blue, vec.W);
|
||||
}
|
||||
|
||||
public static Vector4 WithNewAlpha(this Vector4 vec, float alpha)
|
||||
{
|
||||
return new Vector4(vec.X, vec.Y, vec.Z, alpha);
|
||||
}
|
||||
|
||||
public static string KiloFormat(this uint num)
|
||||
{
|
||||
return num switch
|
||||
{
|
||||
>= 100000000 => (num / 1000000.0).ToString("#,0M", ConfigurationManager.Instance.ActiveCultreInfo),
|
||||
>= 1000000 => (num / 1000000.0).ToString("0.0", ConfigurationManager.Instance.ActiveCultreInfo) + "M",
|
||||
>= 100000 => (num / 1000.0).ToString("#,0K", ConfigurationManager.Instance.ActiveCultreInfo),
|
||||
>= 10000 => (num / 1000.0).ToString("0.0", ConfigurationManager.Instance.ActiveCultreInfo) + "K",
|
||||
_ => num.ToString("#,0", ConfigurationManager.Instance.ActiveCultreInfo)
|
||||
};
|
||||
}
|
||||
|
||||
public static bool IsHorizontal(this BarDirection direction)
|
||||
{
|
||||
return direction == BarDirection.Right || direction == BarDirection.Left;
|
||||
}
|
||||
|
||||
public static bool IsInverted(this BarDirection direction)
|
||||
{
|
||||
return direction == BarDirection.Left || direction == BarDirection.Up;
|
||||
}
|
||||
|
||||
public static void Draw(this BarHud[] bars, Vector2 origin)
|
||||
{
|
||||
foreach (BarHud bar in bars)
|
||||
{
|
||||
bar.Draw(origin);
|
||||
}
|
||||
}
|
||||
|
||||
public static string CheckForUpperCase(this string str)
|
||||
{
|
||||
var culture = CurrentCulture.TextInfo;
|
||||
if (!string.IsNullOrEmpty(str) && char.IsLetter(str[0]) && !char.IsUpper(str[0]))
|
||||
{
|
||||
str = culture.ToTitleCase(str);
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
public static string Repeat(this string s, int n)
|
||||
=> new StringBuilder(s.Length * n).Insert(0, s, n).ToString();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user