diff --git a/OpenRA.Game/Graphics/HSLColor.cs b/OpenRA.Game/Graphics/HSLColor.cs
index ec5ca86e3b..c6fa0d9520 100644
--- a/OpenRA.Game/Graphics/HSLColor.cs
+++ b/OpenRA.Game/Graphics/HSLColor.cs
@@ -9,10 +9,11 @@
#endregion
using System.Drawing;
+using OpenRA.Scripting;
namespace OpenRA.Graphics
{
- public struct HSLColor
+ public struct HSLColor : IScriptBindable
{
public readonly byte H;
public readonly byte S;
diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
index f26d16d56b..4049908978 100644
--- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
+++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
@@ -176,6 +176,8 @@
+
+
diff --git a/OpenRA.Mods.Common/Scripting/Global/HSLColorGlobal.cs b/OpenRA.Mods.Common/Scripting/Global/HSLColorGlobal.cs
new file mode 100644
index 0000000000..5328f62c2f
--- /dev/null
+++ b/OpenRA.Mods.Common/Scripting/Global/HSLColorGlobal.cs
@@ -0,0 +1,32 @@
+#region Copyright & License Information
+/*
+ * Copyright 2007-2015 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 OpenRA.Graphics;
+using OpenRA.Scripting;
+
+namespace OpenRA.Mods.Common.Scripting.Global
+{
+ [ScriptGlobal("HSLColor")]
+ public class HSLColorGlobal : ScriptGlobal
+ {
+ public HSLColorGlobal(ScriptContext context)
+ : base(context) { }
+
+ [Desc("Create a new HSL color with the specified hue/saturation/luminosity.")]
+ public HSLColor New(int hue, int saturation, int luminosity)
+ {
+ var h = (byte)hue.Clamp(0, 255);
+ var s = (byte)saturation.Clamp(0, 255);
+ var l = (byte)luminosity.Clamp(0, 255);
+
+ return new HSLColor(h, s, l);
+ }
+ }
+}
diff --git a/OpenRA.Mods.Common/Scripting/Global/UserInterfaceGlobal.cs b/OpenRA.Mods.Common/Scripting/Global/UserInterfaceGlobal.cs
new file mode 100644
index 0000000000..2c7bee9744
--- /dev/null
+++ b/OpenRA.Mods.Common/Scripting/Global/UserInterfaceGlobal.cs
@@ -0,0 +1,35 @@
+#region Copyright & License Information
+/*
+ * Copyright 2007-2015 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.Drawing;
+using OpenRA.Graphics;
+using OpenRA.Mods.Common.Widgets;
+using OpenRA.Scripting;
+using OpenRA.Widgets;
+
+namespace OpenRA.Mods.Common.Scripting.Global
+{
+ [ScriptGlobal("UserInterface")]
+ public class UserInterfaceGlobal : ScriptGlobal
+ {
+ public UserInterfaceGlobal(ScriptContext context)
+ : base(context) { }
+
+ [Desc("Displays a text message at the top center of the screen.")]
+ public void SetMissionText(string text, HSLColor? color = null)
+ {
+ var luaLabel = Ui.Root.Get("INGAME_ROOT").Get("MISSION_TEXT");
+ luaLabel.GetText = () => text;
+
+ Color c = color.HasValue ? HSLColor.RGBFromHSL(color.Value.H / 255f, color.Value.S / 255f, color.Value.L / 255f) : Color.White;
+ luaLabel.GetColor = () => c;
+ }
+ }
+}
diff --git a/mods/cnc/chrome/ingame.yaml b/mods/cnc/chrome/ingame.yaml
index 4c9d25a42b..e890e2ee6a 100644
--- a/mods/cnc/chrome/ingame.yaml
+++ b/mods/cnc/chrome/ingame.yaml
@@ -39,6 +39,14 @@ Container@INGAME_ROOT:
Container@PLAYER_ROOT:
Container@MENU_ROOT:
TooltipContainer@TOOLTIP_CONTAINER:
+ Label@MISSION_TEXT:
+ X: WINDOW_RIGHT/2 - 256
+ Y: 22
+ Width: 512
+ Height: 25
+ Font: Bold
+ Align: Center
+ Contrast: true
Container@PERF_WIDGETS:
Logic: PerfDebugLogic
diff --git a/mods/d2k/chrome/ingame.yaml b/mods/d2k/chrome/ingame.yaml
index e8e2bc69bd..dab27e3ff6 100644
--- a/mods/d2k/chrome/ingame.yaml
+++ b/mods/d2k/chrome/ingame.yaml
@@ -46,3 +46,11 @@ Container@INGAME_ROOT:
Contrast: true
Container@MENU_ROOT:
TooltipContainer@TOOLTIP_CONTAINER:
+ Label@MISSION_TEXT:
+ X: WINDOW_RIGHT/2 - 256
+ Y: 22
+ Width: 512
+ Height: 25
+ Font: Bold
+ Align: Center
+ Contrast: true
diff --git a/mods/ra/chrome/ingame.yaml b/mods/ra/chrome/ingame.yaml
index 89cc43c27f..2d5d659857 100644
--- a/mods/ra/chrome/ingame.yaml
+++ b/mods/ra/chrome/ingame.yaml
@@ -27,3 +27,11 @@ Container@INGAME_ROOT:
Container@PERF_ROOT:
Container@MENU_ROOT:
TooltipContainer@TOOLTIP_CONTAINER:
+ Label@MISSION_TEXT:
+ X: WINDOW_RIGHT/2 - 256
+ Y: 22
+ Width: 512
+ Height: 25
+ Font: Bold
+ Align: Center
+ Contrast: true