#region Copyright & License Information
/*
 * Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
 * This file is part of OpenRA, which is free software. It is made
 * available to you under the terms of the GNU General Public License
 * as published by the Free Software Foundation. For more information,
 * see COPYING.
 */
#endregion

using System;
using System.Drawing;
using Eluant;
using OpenRA.Scripting;

namespace OpenRA.Mods.Common.Scripting
{
	[ScriptGlobal("Media")]
	public class MediaGlobal : ScriptGlobal
	{
		World world;
		public MediaGlobal(ScriptContext context) : base(context)
		{
			world = context.World;
		}

		[Desc("Play an announcer voice listed in notifications.yaml")]
		public void PlaySpeechNotification(Player player, string notification)
		{
			Sound.PlayNotification(world.Map.Rules, player, "Speech", notification, player != null ? player.Country.Race : null);
		}

		[Desc("Play a sound listed in notifications.yaml")]
		public void PlaySoundNotification(Player player, string notification)
		{
			Sound.PlayNotification(world.Map.Rules, player, "Sounds", notification, player != null ? player.Country.Race : null);
		}

		Action onComplete;
		[Desc("Play a VQA video including the file extension.")]
		public void PlayMovieFullscreen(string movie, LuaFunction func = null)
		{
			if (func != null)
			{
				var f = func.CopyReference() as LuaFunction;
				onComplete = () =>
				{
					try
					{
						using (f)
							f.Call();
					}
					catch (LuaException e)
					{
						context.FatalError(e.Message);
					}
				};
			}
			else
				onComplete = () => { };

			Media.PlayFMVFullscreen(world, movie, onComplete);
		}

		[Desc("Display a text message to the player.")]
		public void DisplayMessage(string text, string prefix = "Mission") // TODO: expose HSLColor to Lua and add as parameter
		{
			if (string.IsNullOrEmpty(text))
				return;

			Game.AddChatLine(Color.White, prefix, text);
		}
	}
}
