2021-12-16 17:37:00 -05:00

79 lines
2.1 KiB
C#

using OWML.Common;
using System;
using System.ComponentModel;
using UnityEngine;
namespace NewHorizons.Utility
{
public static class Logger
{
public static void LogProperties(UnityEngine.Object obj)
{
foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(obj))
{
string name = descriptor?.Name;
object value;
try
{
value = descriptor.GetValue(obj);
}
catch(Exception)
{
value = null;
}
Log($"{obj.name} {name}={value}");
}
}
public static void LogPath(GameObject go)
{
if (go == null) Log("Can't print path: GameObject is null");
else Log($"{GetPath(go.transform)}");
}
private static string GetPath(Transform current)
{
if (current.parent == null) return "/" + current.name;
return GetPath(current.parent) + "/" + current.name;
}
public static void Log(string text, LogType type)
{
Main.Instance.ModHelper.Console.WriteLine(Enum.GetName(typeof(LogType), type) + " : " + text, LogTypeToMessageType(type));
}
public static void Log(string text)
{
Log(text, LogType.Log);
}
public static void LogError(string text)
{
Log(text, LogType.Error);
}
public static void LogWarning(string text)
{
Log(text, LogType.Warning);
}
public enum LogType
{
Log,
Error,
Warning,
Todo
}
private static MessageType LogTypeToMessageType(LogType t)
{
switch(t)
{
case LogType.Error:
return MessageType.Error;
case LogType.Warning:
return MessageType.Warning;
default:
return MessageType.Info;
}
}
}
}