using System;
using System.Windows.Forms;
using AGVSimulator.Forms;

namespace AGVSimulator
{
    /// <summary>
    /// AGV 시뮬레이터 프로그램 진입점
    /// </summary>
    static class Program
    {
        /// <summary>
        /// 콘솔 출력 (타임스탬프 포함)
        /// </summary>
        public static void WriteLine(string message)
        {
            string timestampedMessage = $"[{DateTime.Now:HH:mm:ss.fff}] {message}";
            Console.WriteLine(timestampedMessage);
        }

        /// <summary>
        /// 애플리케이션의 주 진입점입니다.
        /// </summary>
        /// <param name="args">명령줄 인수</param>
        [STAThread]
        static void Main(string[] args)
        {
            try
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new SimulatorForm());
            }
            catch (Exception ex)
            {
                Console.WriteLine($"[ERROR] 시뮬레이터 실행 중 오류: {ex.Message}");
                Console.WriteLine($"[ERROR] 스택 트레이스: {ex.StackTrace}");
                
                MessageBox.Show($"시뮬레이터 실행 중 오류가 발생했습니다:\n{ex.Message}", 
                              "시스템 오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}