Fix repair kits swapping, bad parsing

This commit is contained in:
Tyfon
2024-04-30 03:07:28 -07:00
parent d374d898dd
commit 99ddbf0fc4
2 changed files with 43 additions and 22 deletions

View File

@@ -277,7 +277,10 @@ namespace UIFixes
var match = Regex.Match(text, @" %\((.*)\)"); var match = Regex.Match(text, @" %\((.*)\)");
if (match.Success) if (match.Success)
{ {
float value = float.Parse(match.Groups[1].Value); float value;
// If this fails to parse, I don't know what it is, leave it be
if (float.TryParse(match.Groups[1].Value, out value))
{
string sign = value > 0 ? "+" : ""; string sign = value > 0 ? "+" : "";
string color = (attribute.LessIsGood && value < 0) || (!attribute.LessIsGood && value > 0) ? increasingColorHex : decreasingColorHex; string color = (attribute.LessIsGood && value < 0) || (!attribute.LessIsGood && value > 0) ? increasingColorHex : decreasingColorHex;
@@ -291,34 +294,42 @@ namespace UIFixes
text = Regex.Replace(text, @"%\(.*\)", "%<color=" + color + ">(" + sign + value.ToString("P1") + ")</color>"); text = Regex.Replace(text, @"%\(.*\)", "%<color=" + color + ">(" + sign + value.ToString("P1") + ")</color>");
} }
} }
}
else else
{ {
// Others are rendered as num + "%", so there's no space before the %. These are percents but are from 0-100, not 0-1. // Others are rendered as num + "%", so there's no space before the %. These are percents but are from 0-100, not 0-1.
match = Regex.Match(text, @"(\S)%\((.*)\)"); match = Regex.Match(text, @"(\S)%\((.*)\)");
if (match.Success) if (match.Success)
{ {
float value = float.Parse(match.Groups[2].Value); float value;
// If this fails to parse, I don't know what it is, leave it be
if (float.TryParse(match.Groups[2].Value, out value))
{
string sign = value > 0 ? "+" : ""; string sign = value > 0 ? "+" : "";
string color = (attribute.LessIsGood && value < 0) || (!attribute.LessIsGood && value > 0) ? increasingColorHex : decreasingColorHex; string color = (attribute.LessIsGood && value < 0) || (!attribute.LessIsGood && value > 0) ? increasingColorHex : decreasingColorHex;
text = Regex.Replace(text, @"(\S)%\((.*)\)", match.Groups[1].Value + "%<color=" + color + ">(" + sign + value + "%)</color>"); text = Regex.Replace(text, @"(\S)%\((.*)\)", match.Groups[1].Value + "%<color=" + color + ">(" + sign + value + "%)</color>");
} }
}
else else
{ {
// Finally the ones that aren't percents // Finally the ones that aren't percents
match = Regex.Match(text, @"\((.*)\)"); match = Regex.Match(text, @"\((.*)\)");
if (match.Success) if (match.Success)
{ {
float value = float.Parse(match.Groups[1].Value); float value;
// If this fails to parse, I don't know what it is, leave it be
if (float.TryParse(match.Groups[1].Value, out value))
{
string sign = value > 0 ? "+" : ""; string sign = value > 0 ? "+" : "";
string color = (attribute.LessIsGood && value < 0) || (!attribute.LessIsGood && value > 0) ? increasingColorHex : decreasingColorHex; string color = (attribute.LessIsGood && value < 0) || (!attribute.LessIsGood && value > 0) ? increasingColorHex : decreasingColorHex;
text = Regex.Replace(text, @"\((.*)\)", "<color=" + color + ">(" + sign + value + ")</color>"); text = Regex.Replace(text, @"\((.*)\)", "<color=" + color + ">(" + sign + value + ")</color>");
} }
} }
} }
}
// Remove trailing 0s // Remove trailing 0s
text = Regex.Replace(text, @"\.([1-9]*)0+\b", ".$1"); text = Regex.Replace(text, @"(\d)(\.[0-9]*[^0])?\.?0+\b", "$1$2");
text = Regex.Replace(text, @"\.\B", "");
// Fix spacing // Fix spacing
text = text.Replace(" %", "%"); text = text.Replace(" %", "%");

View File

@@ -160,7 +160,7 @@ namespace UIFixes
} }
[PatchPostfix] [PatchPostfix]
private static void Postfix(GridView __instance, ItemContextClass itemContext, ItemContextAbstractClass targetItemContext, ref object operation, ref bool __result) private static void Postfix(GridView __instance, ItemContextClass itemContext, ItemContextAbstractClass targetItemContext, ref object operation, ref bool __result, Dictionary<string, ItemView> ___dictionary_0)
{ {
if (!ValidPrerequisites(itemContext, targetItemContext, operation)) if (!ValidPrerequisites(itemContext, targetItemContext, operation))
{ {
@@ -177,6 +177,16 @@ namespace UIFixes
return; return;
} }
// Repair kits are special
ItemView targetItemView;
if (___dictionary_0.TryGetValue(targetItem.Id, out targetItemView))
{
if (targetItemView.CanInteract(itemContext))
{
return;
}
}
// This is the location you're dragging it over, including rotation // This is the location you're dragging it over, including rotation
LocationInGrid itemToLocation = __instance.CalculateItemLocation(itemContext); LocationInGrid itemToLocation = __instance.CalculateItemLocation(itemContext);