using System;
using System.Threading;
using System.Windows.Forms;

namespace ETDiscordPresence
{
	internal class Program
	{
		private static readonly Mutex Mutex = new Mutex(false, "Adawolfa.ETDiscordPresence");
		
		[STAThread]
		public static void Main(string[] args)
		{
			if (!Mutex.WaitOne(TimeSpan.FromSeconds(3), false))
			{
				return;
			}

			try
			{
				using (var presenceChanger = new PresenceChanger())
				using (var gameWatcher = new GameWatcher())
				using (var tray = new Tray())
				{
					gameWatcher.EnterServer = presenceChanger.SetPresence;
					gameWatcher.LeaveServer = presenceChanger.RemovePresence;

					tray.Exit = Application.Exit;
					tray.Visible = true;

					gameWatcher.Start();

					Application.Run();
				}
			}
			finally
			{
				Mutex.ReleaseMutex();
			}
		}
	}
}