using UnityEngine;
using System.Collections.Generic;
namespace XDebug
{
public static class Log
{
public struct LogInfo
{
public string str;
public Color color;
}
public static Color BLUE = new Color(0, 0, 1);
public static Color RED = new Color(1, 0, 0);
public static Color YELLOW = new Color(1, 1, 0);
public static Color WHITE = new Color(1, 1, 1);
public static Color GREEN = new Color(0, 1, 0);
public static Color BLACK = new Color(0, 0, 0);
///
/// 控制是否开启debug, -1禁用Unity log, -2完全禁用
///
public static int isEnabled = 1;
public static int maxCount = int.MaxValue; //50000;
public static List logList = new List();
private static bool mIsDownOpenDebug = false;
private static float mDownY = 0;
private static bool mIsHideUILog = false;
static Log()
{
GameLogic.GameManager.Instance.AddUpdateEvent(UpdateLog);
}
private static string getFormatStr(object[] args)
{
if (args == null)
return "[NULL] ";
string str = "";
for (int i = 0; i < args.Length; i++)
{
if (args[i] == null)
str += "[NULL] , ";
else
str += args[i] + " , ";
}
return str;
}
public static void error(params object[] args)
{
GameCore.BaseLogger.LogError(getFormatStr(args));
}
public static void warning(params object[] args)
{
GameCore.BaseLogger.LogWarning(getFormatStr(args));
}
public static void l(params object[] args)
{
l(WHITE, args);
}
public static void lHide(params object[] args)
{
if (isEnabled == -2) return;
if (logList.Count > maxCount)
clear();
string str = getFormatStr(args);
str = "[" + System.DateTime.Now.ToString("hh:mm:ss:ffff") + "] : " + str.Substring(0, str.Length - 3);
logList.Add(new LogInfo() {str = str, color = WHITE});
}
public static void l(Color color, params object[] args)
{
if (isEnabled == -2) return;
if (logList.Count > maxCount)
clear();
string str = getFormatStr(args);
str = "[" + System.DateTime.Now.ToString("HH:mm:ss:ffff") + "] : " + str.Substring(0, str.Length - 3);
logList.Add(new LogInfo() {str = str, color = color});
if (isEnabled >= 0)
GameCore.BaseLogger.Log(str);
}
public static void clear()
{
logList.Clear();
}
public static void UpdateLog()
{
////////手势控制开启关闭, 左下角滑到右上角开启,再次关闭
if (isEnabled != -2)
{
Vector3 mousePos = Input.mousePosition;
mousePos.y = Screen.height - mousePos.y;
if (Input.GetMouseButtonDown(0) && mousePos.x / Screen.width < 0.1f && mousePos.y / Screen.height > 0.9f)
{
mIsDownOpenDebug = true;
}
if (Input.GetMouseButtonUp(0))
{
if (mousePos.x / Screen.width > 0.9f && mousePos.y / Screen.height < 0.1f && mIsDownOpenDebug)
{
isEnabled += 1;
if (isEnabled == 2)
{
isEnabled = -2;
}
}
mIsDownOpenDebug = false;
}
}
}
}
}