Files

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);
}
}
}
}