Projektdateien hinzufügen.

This commit is contained in:
2024-05-05 15:59:49 +02:00
parent 74da0c6962
commit 7c28a6ee17
242 changed files with 23697 additions and 0 deletions

View File

@@ -0,0 +1,89 @@
using System;
using Microsoft.VisualBasic.CompilerServices;
namespace SM64Lib.TextValueConverter
{
public static class TextValueConverter
{
public static event WantIntegerValueModeEventHandler WantIntegerValueMode;
public delegate void WantIntegerValueModeEventHandler(WantIntegerValueModeEventArgs e);
public static int ValueFromText(string Text, int DefaultValue = 0, int useIVM = -1)
{
return Convert.ToInt32(LongFromText(Text, DefaultValue, useIVM));
}
public static long LongFromText(string Text, long DefaultValue = 0, int useIVM = -1)
{
try
{
int IVM = useIVM > -1 ? useIVM : GetIntegerValueMode();
Text = Text?.ToLower()?.Trim();
if (string.IsNullOrWhiteSpace(Text))
return 0;
switch (true)
{
case object _ when Text.StartsWith("0x"):
case object _ when Text.StartsWith("&h"):
return Convert.ToInt32(Text.Substring(2), 16);
case object _ when Text.StartsWith("$"):
return Convert.ToInt32(Text.Substring(1), 16);
case object _ when Text.StartsWith("0b"):
case object _ when Text.StartsWith("&b"):
return Convert.ToInt32(Text.Substring(2), 2);
default:
return Convert.ToInt32(Text);
}
}
catch (Exception)
{
return DefaultValue;
}
}
public static string TextFromValue(long Value, int IVM = -1, int charCount = 0)
{
if (IVM == -1)
{
IVM = GetIntegerValueMode();
}
switch (IVM)
{
case 0:
return Value.ToString(GetCharCountAsZeroString(charCount));
case 1:
return "0x" + Value.ToString("X" + (charCount > 0 ? charCount.ToString() : ""));
case 2:
return "&H" + Value.ToString("X" + (charCount > 0 ? charCount.ToString() : ""));
case 3:
return "$" + Value.ToString("X" + (charCount > 0 ? charCount.ToString() : ""));
default:
return string.Empty;
}
}
private static string GetCharCountAsZeroString(int charCount)
{
string GetCharCountAsZeroStringRet = default;
GetCharCountAsZeroStringRet = "";
while (GetCharCountAsZeroStringRet.Length < charCount)
GetCharCountAsZeroStringRet += "0";
return GetCharCountAsZeroStringRet;
}
private static int GetIntegerValueMode()
{
var e = new WantIntegerValueModeEventArgs();
WantIntegerValueMode?.Invoke(e);
return e.IntegerValueMode;
}
}
public class WantIntegerValueModeEventArgs : EventArgs
{
public int IntegerValueMode { get; set; }
}
}