Skip to content
This repository was archived by the owner on Dec 21, 2019. It is now read-only.

Commit 066e115

Browse files
committed
Listen Chat messages for eval
1 parent 5c51a53 commit 066e115

File tree

7 files changed

+35
-3
lines changed

7 files changed

+35
-3
lines changed

.gitmodules

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[submodule "Rocket.Scripting.Node/Espresso"]
2+
path = Rocket.Scripting.Node/Espresso
3+
url = https://github.com/prepare/Espresso
4+
[submodule "Rocket.Scripting.Node/node"]
5+
path = Rocket.Scripting.Node/node
6+
url = https://github.com/nodejs/node

Rocket.Scripting.CSharp/CSharpScriptingProvider.cs

+5-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,11 @@ public CSharpScriptingProvider(IDependencyContainer container) : base(container)
1717

1818
public override string[] FileTypes => new[] { "cs" };
1919
public override string ScriptName => "C#";
20-
public override IEnumerable<IPlugin> Plugins { get; }
21-
private List<IPlugin> _plugins = new List<IPlugin>();
20+
21+
public override bool SupportsRepl => true;
22+
23+
public override IEnumerable<IPlugin> Plugins => _plugins;
24+
private readonly List<IPlugin> _plugins = new List<IPlugin>();
2225

2326
public override IScriptContext CreateScriptContext(IDependencyContainer container)
2427
{

Rocket.Scripting.JavaScript/JavaScriptScriptingProvider.cs

+2
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ public override void UnloadPlugins()
6161
((List<IPlugin>)Plugins).Clear();
6262
}
6363

64+
public override bool SupportsRepl => true;
65+
6466
public override ScriptResult ExecuteFile(
6567
string path,
6668
IDependencyContainer container,
0 Bytes
Binary file not shown.

Rocket.Scripting/IScriptingProvider.cs

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ public interface IScriptingProvider
1212

1313
void UnregisterContext(IScriptContext context);
1414

15+
bool SupportsRepl { get; }
16+
1517
ScriptResult ExecuteFile(
1618
string path,
1719
IDependencyContainer container,

Rocket.Scripting/ScriptingPlugin.cs

+18-1
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66
using Rocket.API.Eventing;
77
using Rocket.API.User;
88
using Rocket.Core.Commands.Events;
9+
using Rocket.Core.Player.Events;
910
using Rocket.Core.Plugins;
1011
using Rocket.Core.User;
12+
using Rocket.Core.User.Events;
1113

1214
namespace Rocket.Scripting
1315
{
14-
class ScriptingPlugin : Plugin, IEventListener<PreCommandExecutionEvent>
16+
class ScriptingPlugin : Plugin, IEventListener<PreCommandExecutionEvent>, IEventListener<UserChatEvent>
1517
{
1618
public ScriptingPlugin(IDependencyContainer container) : base("ScriptingPlugin", container)
1719
{
@@ -94,5 +96,20 @@ public void HandleEvent(IEventEmitter emitter, PreCommandExecutionEvent @event)
9496
if (result.HasReturn)
9597
console.SendMessage("> " + result.Return, ConsoleColor.Gray);
9698
}
99+
100+
public void HandleEvent(IEventEmitter emitter, UserChatEvent @event)
101+
{
102+
var session = GetScriptContext(@event.User);
103+
if (session == null)
104+
return;
105+
106+
@event.IsCancelled = true;
107+
108+
var cmd = @event.Message;
109+
var result = session.Eval(cmd);
110+
111+
if (result.HasReturn)
112+
@event.User.SendMessage("> " + result.Return, ConsoleColor.Gray);
113+
}
97114
}
98115
}

Rocket.Scripting/ScriptingProvider.cs

+2
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,8 @@ public virtual void UnregisterContext(IScriptContext context)
148148
Contexts.Remove(context);
149149
}
150150

151+
public abstract bool SupportsRepl { get; }
152+
151153
/// <summary>
152154
/// Executes the given script file
153155
/// </summary>

0 commit comments

Comments
 (0)