using System;

namespace StardewModdingAPI
{
    /// <summary>A message queued for log output.</summary>
    public struct LogInfo
    {
        /*********
        ** Accessors
        *********/
        /// <summary>The message to log.</summary>
        public string Message { get; set; }

        /// <summary>The log date.</summary>
        public string LogDate { get; set; }

        /// <summary>The log time.</summary>
        public string LogTime { get; set; }

        /// <summary>The message color.</summary>
        public ConsoleColor Colour { get; set; }

        /// <summary>Whether the message should be printed to the console.</summary>
        internal bool PrintConsole { get; set; }


        /*********
        ** Public methods
        *********/
        /// <summary>Construct an instance.</summary>
        /// <param name="message">The message to log.</param>
        /// <param name="color">The message color.</param>
        public LogInfo(string message, ConsoleColor color = ConsoleColor.Gray)
        {
            if (string.IsNullOrEmpty(message))
                message = "[null]";
            this.Message = message;
            this.LogDate = DateTime.Now.ToString("yyyy-MM-dd");
            this.LogTime = DateTime.Now.ToString("HH:mm:ss");
            this.Colour = color;
            this.PrintConsole = true;
        }
    }
}