Skip to content

Commit 365126d

Browse files
committed
Basic support for UDP client messages using OnlineEventGenerator
1 parent b1ad848 commit 365126d

File tree

3 files changed

+6
-3
lines changed

3 files changed

+6
-3
lines changed

AssettoServer/Network/ClientMessages/OnlineEventAttribute.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ namespace AssettoServer.Network.ClientMessages;
88
public class OnlineEventAttribute : Attribute
99
{
1010
public string? Key { get; set; }
11+
public bool Udp { get; set; }
1112
}

AssettoServer/Network/ClientMessages/OnlineEventGenerator.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ private static bool IsArrayLikeType(Type type)
9696

9797
internal static OnlineEventInfo ParseClientMessage(Type messageType)
9898
{
99-
var mainAttr = messageType.GetCustomAttribute<OnlineEventAttribute>();
100-
var key = mainAttr?.Key;
99+
var mainAttr = messageType.GetCustomAttribute<OnlineEventAttribute>() ?? new OnlineEventAttribute();
100+
var key = mainAttr.Key;
101101

102102
var ordered = new List<OnlineEventFieldInfo?>();
103103

@@ -158,6 +158,7 @@ internal static OnlineEventInfo ParseClientMessage(Type messageType)
158158
var ret = new OnlineEventInfo
159159
{
160160
Key = key,
161+
Udp = mainAttr.Udp,
161162
Fields = reordered,
162163
Structure = structure,
163164
PacketType = GenerateKey(structure)
@@ -238,7 +239,7 @@ internal static OnlineEvent<TMessage>.ToWriterDelegate GenerateWriterMethod<TMes
238239
emitter.Call(writeByteMethod);
239240

240241
emitter.LoadArgument(1);
241-
emitter.LoadConstant((int)CSPMessageTypeTcp.ClientMessage);
242+
emitter.LoadConstant(message.Udp ? (int)CSPMessageTypeUdp.ClientMessage : (int)CSPMessageTypeTcp.ClientMessage);
242243
emitter.Call(writeByteMethod);
243244

244245
emitter.LoadArgument(1);

AssettoServer/Network/ClientMessages/OnlineEventInfo.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ namespace AssettoServer.Network.ClientMessages;
55
internal class OnlineEventInfo
66
{
77
public string? Key { get; init; }
8+
public bool Udp { get; init; }
89
public required List<OnlineEventFieldInfo> Fields { get; init; }
910
public uint PacketType { get; init; }
1011
public required string Structure { get; init; }

0 commit comments

Comments
 (0)