Add EventDef notices, morning and lesson bells, and info toasts.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -70,6 +70,14 @@ public static class ProtocolCodec
|
||||
return writer.Position;
|
||||
}
|
||||
|
||||
public static int WriteDismissNotice(Span<byte> destination, in ClientDismissNoticeMessage message)
|
||||
{
|
||||
var writer = new PacketWriter(destination);
|
||||
writer.WriteMessageType(MessageType.ClientDismissNotice);
|
||||
writer.WriteUInt32(message.Id);
|
||||
return writer.Position;
|
||||
}
|
||||
|
||||
public static int WriteWelcome(Span<byte> destination, in ServerWelcomeMessage message)
|
||||
{
|
||||
var writer = new PacketWriter(destination);
|
||||
@@ -271,6 +279,22 @@ public static class ProtocolCodec
|
||||
return writer.Position;
|
||||
}
|
||||
|
||||
public static int NoticeSize(in ServerNoticeMessage message) =>
|
||||
sizeof(byte) + sizeof(uint) + StringSize(message.DefName) + sizeof(byte) + sizeof(byte) + sizeof(uint) + sizeof(uint);
|
||||
|
||||
public static int WriteNotice(Span<byte> destination, in ServerNoticeMessage message)
|
||||
{
|
||||
var writer = new PacketWriter(destination);
|
||||
writer.WriteMessageType(MessageType.ServerNotice);
|
||||
writer.WriteUInt32(message.Id);
|
||||
writer.WriteString(message.DefName);
|
||||
writer.WriteByte(message.Severity);
|
||||
writer.WriteByte(message.Pause ? (byte)1 : (byte)0);
|
||||
writer.WriteUInt32(message.TtlMs);
|
||||
writer.WriteUInt32(message.PersonId);
|
||||
return writer.Position;
|
||||
}
|
||||
|
||||
public static MessageType PeekMessageType(ReadOnlySpan<byte> source) =>
|
||||
source.IsEmpty ? MessageType.None : (MessageType)source[0];
|
||||
|
||||
@@ -441,6 +465,26 @@ public static class ProtocolCodec
|
||||
return new ServerPresenceMessage(schoolId, nodes, people);
|
||||
}
|
||||
|
||||
public static ClientDismissNoticeMessage ReadDismissNotice(ReadOnlySpan<byte> source)
|
||||
{
|
||||
var reader = new PacketReader(source);
|
||||
Expect(ref reader, MessageType.ClientDismissNotice);
|
||||
return new ClientDismissNoticeMessage(reader.ReadUInt32());
|
||||
}
|
||||
|
||||
public static ServerNoticeMessage ReadNotice(ReadOnlySpan<byte> source)
|
||||
{
|
||||
var reader = new PacketReader(source);
|
||||
Expect(ref reader, MessageType.ServerNotice);
|
||||
var id = reader.ReadUInt32();
|
||||
var defName = reader.ReadString();
|
||||
var severity = reader.ReadByte();
|
||||
var pause = reader.ReadByte() != 0;
|
||||
var ttlMs = reader.ReadUInt32();
|
||||
var personId = reader.ReadUInt32();
|
||||
return new ServerNoticeMessage(id, defName, severity, pause, ttlMs, personId);
|
||||
}
|
||||
|
||||
private static bool HasPresenceActivity(PresenceNode node) =>
|
||||
node.ActivitySubject.Length > 0 || node.ActivityClass.Length > 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user