/
ServerEvents.cs
89 lines (75 loc) · 4.01 KB
/
ServerEvents.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
Copyright 2011 MCForge
Dual-licensed under the Educational Community License, Version 2.0 and
the GNU General Public License, Version 3 (the "Licenses"); you may
not use this file except in compliance with the Licenses. You may
obtain a copy of the Licenses at
http://www.opensource.org/licenses/ecl2.php
http://www.gnu.org/licenses/gpl-3.0.html
Unless required by applicable law or agreed to in writing,
software distributed under the Licenses are distributed on an "AS IS"
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or implied. See the Licenses for the specific language governing
permissions and limitations under the Licenses.
*/
using System;
using System.Collections.Generic;
using MCGalaxy.Network;
namespace MCGalaxy.Events.ServerEvents {
public delegate void OnSendingHeartbeat(Heartbeat service, ref string name);
/// <summary> Called when a heartbeat is being sent out. </summary>
public sealed class OnSendingHeartbeatEvent : IEvent<OnSendingHeartbeat> {
public static void Call(Heartbeat service, ref string name) {
IEvent<OnSendingHeartbeat>[] items = handlers.Items;
// Can't use CallCommon because we need to pass arguments by ref
for (int i = 0; i < items.Length; i++) {
try { items[i].method(service, ref name); }
catch (Exception ex) { LogHandlerException(ex, items[i]); }
}
}
}
public delegate void OnShuttingDown(bool restarting, string reason);
/// <summary> Called when the server is shutting down or restarting. </summary>
public sealed class OnShuttingDownEvent : IEvent<OnShuttingDown> {
public static void Call(bool restarting, string reason) {
if (handlers.Count == 0) return;
CallCommon(pl => pl(restarting, reason));
}
}
public delegate void OnChatSys(ChatScope scope, string msg, object arg,
ref ChatMessageFilter filter, bool irc);
public sealed class OnChatSysEvent : IEvent<OnChatSys> {
public static void Call(ChatScope scope, string msg, object arg,
ref ChatMessageFilter filter, bool irc) {
IEvent<OnChatSys>[] items = handlers.Items;
for (int i = 0; i < items.Length; i++) {
try { items[i].method(scope, msg, arg, ref filter, irc); }
catch (Exception ex) { LogHandlerException(ex, items[i]); }
}
}
}
public delegate void OnChatFrom(ChatScope scope, Player source, string msg,
object arg, ref ChatMessageFilter filter, bool irc);
public sealed class OnChatFromEvent : IEvent<OnChatFrom> {
public static void Call(ChatScope scope,Player source, string msg,
object arg, ref ChatMessageFilter filter, bool irc) {
IEvent<OnChatFrom>[] items = handlers.Items;
for (int i = 0; i < items.Length; i++) {
try { items[i].method(scope, source, msg, arg, ref filter, irc); }
catch (Exception ex) { LogHandlerException(ex, items[i]); }
}
}
}
public delegate void OnChat(ChatScope scope, Player source, string msg,
object arg, ref ChatMessageFilter filter, bool irc);
public sealed class OnChatEvent : IEvent<OnChat> {
public static void Call(ChatScope scope, Player source, string msg,
object arg, ref ChatMessageFilter filter, bool irc) {
IEvent<OnChat>[] items = handlers.Items;
for (int i = 0; i < items.Length; i++) {
try { items[i].method(scope, source, msg, arg, ref filter, irc); }
catch (Exception ex) { LogHandlerException(ex, items[i]); }
}
}
}
}