From b2197e3b94f3865ba3927a4aaaf38cffe141cd72 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 21 May 2010 23:37:05 +0100
Subject: Apply http://opensimulator.org/mantis/view.php?id=4632 Adds dialog
methods for MRM. Thanks ziah.
---
.../Scripting/Minimodule/Interfaces/IObject.cs | 18 ++++++++-
.../Scripting/Minimodule/SOPObject.cs | 44 +++++++++++++++++++++-
2 files changed, 60 insertions(+), 2 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
index 29f7f68..e189489 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
@@ -189,9 +189,25 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
///
/// The message to send to the user
void Say(string msg);
-
+
+ ///
+ /// Causes the object to speak to on a specific channel,
+ /// equivilent to LSL/OSSL llSay
+ ///
+ /// The message to send to the user
+ /// The channel on which to send the message
void Say(string msg,int channel);
+ ///
+ /// Opens a Dialog Panel in the Users Viewer,
+ /// equivilent to LSL/OSSL llDialog
+ ///
+ /// The UUID of the Avatar to which the Dialog should be send
+ /// The Message to display at the top of the Dialog
+ /// The Strings that act as label/value of the Bottons in the Dialog
+ /// The channel on which to send the response
+ void Dialog(UUID avatar, string message, string[] buttons, int chat_channel);
+
////
/// Grants access to the objects inventory
///
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs
index f51498c..96cccb7 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs
@@ -31,6 +31,7 @@ using System.Security;
using OpenMetaverse;
using OpenMetaverse.Packets;
using OpenSim.Framework;
+using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.OptionalModules.Scripting.Minimodule.Object;
using OpenSim.Region.Physics.Manager;
@@ -402,7 +403,48 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
SceneObjectPart sop = GetSOP();
m_rootScene.SimChat(Utils.StringToBytes(msg), ChatTypeEnum.Say,channel, sop.AbsolutePosition, sop.Name, sop.UUID, false);
}
-
+
+ public void Dialog(UUID avatar, string message, string[] buttons, int chat_channel)
+ {
+ if (!CanEdit())
+ return;
+
+ IDialogModule dm = m_rootScene.RequestModuleInterface();
+
+ if (dm == null)
+ return;
+
+ if (buttons.Length < 1)
+ {
+ Say("ERROR: No less than 1 button can be shown",2147483647);
+ return;
+ }
+ if (buttons.Length > 12)
+ {
+ Say("ERROR: No more than 12 buttons can be shown",2147483647);
+ return;
+ }
+
+ foreach(string button in buttons)
+ {
+ if (button == String.Empty)
+ {
+ Say("ERROR: button label cannot be blank",2147483647);
+ return;
+ }
+ if (button.Length > 24)
+ {
+ Say("ERROR: button label cannot be longer than 24 characters",2147483647);
+ return;
+ }
+ }
+
+ dm.SendDialogToUser(
+ avatar, GetSOP().Name, GetSOP().UUID, GetSOP().OwnerID,
+ message, new UUID("00000000-0000-2222-3333-100000001000"), chat_channel, buttons);
+
+ }
+
#endregion
--
cgit v1.1