﻿using UnityEngine;
using UnityEngine.UI;

namespace JLGames.RocketDriver.Actions.Utils
{
    public static class DebugUtil
    {
        private static Text m_Text;

        public static void SetLogText(Text text)
        {
            m_Text = text;
        }

        public static void Log(string str, params object[] args)
        {
            var s = InnerConcat(str, args);
            LogToText($"[Log] {s}");
#if UNITY_EDITOR
            Debug.Log(s);
#elif UNITY_WEBGL
            Debug.Log(s);
#endif
        }

        public static void LogWarning(string str, params object[] args)
        {
            var s = InnerConcat(str, args);
            LogToText($"[Warn] {s}");
#if UNITY_EDITOR
            Debug.LogWarning(s);
#elif UNITY_WEBGL
            Debug.LogWarning(s);
#endif
        }

        public static void LogError(string str, params object[] args)
        {
            var s = InnerConcat(str, args);
            LogToText($"[Error] {s}");
#if UNITY_EDITOR
            Debug.LogError(s);
#endif
        }

        private static void LogToText(string str)
        {
            if (m_Text != null && !m_Text.IsDestroyed() && m_Text.transform.parent != null)
                m_Text.text = $"{m_Text.text}\n{str}";
        }

        private static string InnerConcat(string str, object[] args)
        {
            if (null == args || 0 == args.Length)
            {
                return str;
            }

            for (var i = 0; i < args.Length; i++)
            {
                str = string.Concat(str, " " + args[i]);
            }

            return str;
        }
    }
}