52 lines
1.6 KiB
C#
52 lines
1.6 KiB
C#
using System;
|
|
using System.Reflection;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Immutable;
|
|
using System.Linq;
|
|
using System.IO;
|
|
|
|
using Barotrauma;
|
|
using HarmonyLib;
|
|
using Microsoft.Xna.Framework;
|
|
using QIDependencyInjection;
|
|
using System.Runtime.CompilerServices;
|
|
|
|
namespace QuickInteractions
|
|
{
|
|
// I think is is unnecessary
|
|
// All this stuff is inherently static, why is it injected instance?
|
|
// And debugger probably also should be static
|
|
// Lets say i was just testing dependency injection system
|
|
[Singleton]
|
|
public class Logger
|
|
{
|
|
[QIDependencyInjection.Dependency] public Debugger Debugger { get; set; }
|
|
public Color BaseColor { get; set; } = Color.Cyan;
|
|
|
|
public string WrapInColor(object msg, string color) => $"‖color:{color}‖{msg}‖end‖";
|
|
public string GetCallerFolderPath([CallerFilePath] string source = "") => Path.GetDirectoryName(source);
|
|
public void Log(object msg, Color? color = null)
|
|
{
|
|
color ??= BaseColor;
|
|
LuaCsLogger.LogMessage($"{msg ?? "null"}", color * 0.8f, color);
|
|
}
|
|
|
|
public void Warning(object msg) => Log(msg, Color.Yellow);
|
|
|
|
public void Info(object msg, [CallerFilePath] string source = "", [CallerLineNumber] int lineNumber = 0)
|
|
{
|
|
if (Debugger?.Debug == true) Log(msg);
|
|
}
|
|
|
|
public void Error(object msg, [CallerFilePath] string source = "", [CallerLineNumber] int lineNumber = 0)
|
|
{
|
|
if (Debugger?.Debug == true)
|
|
{
|
|
var fi = new FileInfo(source);
|
|
|
|
Log($"{fi.Directory.Name}/{fi.Name}:{lineNumber}", Color.Orange * 0.5f);
|
|
Log(msg, Color.Orange);
|
|
}
|
|
}
|
|
}
|
|
} |