Started with ServerEvent for clientside

This commit is contained in:
EntenKoeniq
2022-04-11 16:38:16 +02:00
parent 80b0a2311b
commit c3614abe5f

View File

@ -135,6 +135,14 @@ namespace CoopClient
_scriptEngines.ForEach(engine => engine.Script.API.InvokeChatMessage(from, message)); _scriptEngines.ForEach(engine => engine.Script.API.InvokeChatMessage(from, message));
} }
} }
internal static void InvokeServerEvent(string eventName, params object[] args)
{
lock (_scriptEngines)
{
_scriptEngines.ForEach(engine => engine.Script.API.InvokeServerEvent(eventName, args));
}
}
} }
internal class ScriptContext internal class ScriptContext
@ -146,6 +154,7 @@ namespace CoopClient
#endregion #endregion
#region EVENTS #region EVENTS
private Dictionary<string, Action<object[]>> _serverEvents = new Dictionary<string, Action<object[]>>();
public event EmptyEvent OnStart, OnStop, OnTick; public event EmptyEvent OnStart, OnStop, OnTick;
public event PlayerConnectEvent OnPlayerConnect, OnPlayerDisconnect; public event PlayerConnectEvent OnPlayerConnect, OnPlayerDisconnect;
public event ChatMessageEvent OnChatMessage; public event ChatMessageEvent OnChatMessage;
@ -179,6 +188,11 @@ namespace CoopClient
{ {
OnChatMessage?.Invoke(from, message); OnChatMessage?.Invoke(from, message);
} }
public void InvokeServerEvent(string eventName, params object[] args)
{
_serverEvents.FirstOrDefault(x => x.Key == eventName).Value?.Invoke(args);
}
#endregion #endregion
/* ===== PLAYER STUFF ===== */ /* ===== PLAYER STUFF ===== */
@ -438,6 +452,18 @@ namespace CoopClient
MapLoader.DeleteMap(); MapLoader.DeleteMap();
} }
private void AddServerEvent(string eventName, Action<object[]> action)
{
if (!_serverEvents.ContainsKey(eventName))
{
_serverEvents.Add(eventName, action);
}
}
public void AddServerEvent(string eventName, dynamic action)
{
AddServerEvent(eventName, arg => action(arg));
}
public void TriggerServerEvent(string eventName, params object[] args) public void TriggerServerEvent(string eventName, params object[] args)
{ {
// TODO // TODO