|
|
@@ -14,13 +14,20 @@ namespace CLre.Fixes |
|
|
|
class Float_TryParse_Patch |
|
|
|
{ |
|
|
|
[HarmonyPostfix] |
|
|
|
public static void BeforeMethodCall(string s, ref float result, ref bool __result) |
|
|
|
public static void AfterMethodCall(string s, ref float result, ref bool __result) |
|
|
|
{ |
|
|
|
if (__result) return; |
|
|
|
#if DEBUG |
|
|
|
API.Utility.Logging.Log($"Replacing float.TryParse method call with invariant call. Parsing: \"{s}\""); |
|
|
|
#endif |
|
|
|
__result = float.TryParse(s, |
|
|
|
NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingSign | |
|
|
|
NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands | NumberStyles.AllowExponent, |
|
|
|
NumberFormatInfo.InvariantInfo, out result); |
|
|
|
|
|
|
|
#if DEBUG |
|
|
|
API.Utility.Logging.Log($"Parsed \"{s}\" into {result}"); |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|
[HarmonyTargetMethod] |
|
|
@@ -29,4 +36,24 @@ namespace CLre.Fixes |
|
|
|
return AccessTools.Method(typeof(float), "TryParse", new []{typeof(string), typeof(float).MakeByRefType()}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[HarmonyPatch(typeof(float), "Parse", new Type[] {typeof(string)})] |
|
|
|
class Float_Parse_Patch |
|
|
|
{ |
|
|
|
[HarmonyPrefix] |
|
|
|
public static bool BeforeMethodCall(string s, ref float __result) |
|
|
|
{ |
|
|
|
#if DEBUG |
|
|
|
API.Utility.Logging.Log($"Replacing float.Parse method call with invariant call. Parsing: \"{s}\""); |
|
|
|
#endif |
|
|
|
bool success = float.TryParse(s, |
|
|
|
NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingSign | |
|
|
|
NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands | NumberStyles.AllowExponent, |
|
|
|
NumberFormatInfo.InvariantInfo, out __result); |
|
|
|
#if DEBUG |
|
|
|
API.Utility.Logging.Log($"Parsed \"{s}\" into {__result}"); |
|
|
|
#endif |
|
|
|
return !success; |
|
|
|
} |
|
|
|
} |
|
|
|
} |