PC-20230316NUNE\Administrator 2b467e56ad no message
2024-02-20 18:39:12 +08:00

80 lines
2.2 KiB
C#

using HPJ.Simulation.Enums;
using System.Collections;
using System.Collections.Generic;
namespace HPJ.Simulation.Utilities
{
public static class Extensions
{
public static float Distance(this IntVector2 vector)
{
return (float)System.Math.Sqrt(vector.x * vector.x + vector.y * vector.y);
}
public static int SqrDistance(this IntVector2 vector)
{
return vector.x * vector.x + vector.y * vector.y;
}
public static string TilesToString(this TileTypes[] Tiles)
{
if (Tiles.Length == 0)
{
return "";
}
string ReturnString = "";
for(int i = 0; i < Tiles.Length - 1; i++)
{
ReturnString += $"{Tiles[i]}.";
}
ReturnString += $"{Tiles[Tiles.Length - 1]}.";
return ReturnString;
}
public static string TilesToString(this List<TileTypes> Tiles)
{
if (Tiles.Count == 0)
{
return "";
}
string ReturnString = "";
for (int i = 0; i < Tiles.Count - 1; i++)
{
ReturnString += $"{Tiles[i]}.";
}
ReturnString += $"{Tiles[Tiles.Count - 1]}.";
return ReturnString;
}
public static TileTypes[] StringToTilesArray(this string TilesStringArray)
{
string[] Split = TilesStringArray.Split('.');
if (Split.Length == 0)
{
return new TileTypes[1] { TileTypes.Free };
}
TileTypes[] ReturnArr = new TileTypes[Split.Length];
string[] EnumNames = System.Enum.GetNames(typeof(TileTypes));
for (int splitIndex = 0; splitIndex < Split.Length; splitIndex++)
{
for(int enumIndex = 0; enumIndex < EnumNames.Length; enumIndex++)
{
if (EnumNames[enumIndex] == Split[splitIndex])
{
ReturnArr[splitIndex] = (TileTypes)enumIndex;
}
}
}
return ReturnArr;
}
}
}