~ruther/NosSmooth

ref: 0c354626c569c8d1fdfe97d6b5706db22168fb47 NosSmooth/Packets/NosSmooth.Packets/Server/Raids/RaidPacket.cs -rw-r--r-- 1.8 KiB
0c354626 — Rutherther feat(packets): add raid packets 2 years ago
                                                                                
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
//
//  RaidPacket.cs
//
//  Copyright (c) František Boháček. All rights reserved.
//  Licensed under the MIT license. See LICENSE file in the project root for full license information.

using NosSmooth.Packets.Enums.Raids;
using NosSmooth.PacketSerializer.Abstractions.Attributes;

namespace NosSmooth.Packets.Server.Raids;

/// <summary>
/// Raid status packet. Sent for various raid operations.
/// </summary>
/// <remarks>
/// For every type the rest of the packet is different.
/// Fields start with the type they are present for.
/// </remarks>
/// <param name="Type">The status type.</param>
/// <param name="LeaderId">The id of the leader, null if leaving. Present only for Leader type.</param>
/// <param name="LeaveType">The type of the leave type. Present only for Leave  type.</param>
/// <param name="ListMembersPlayerIds">The ids of players in the raid. Present only for ListMembers.</param>
/// <param name="PlayerHealths">Health of the players. Present only for PlayerHealths.</param>
[PacketHeader("raid", PacketSource.Server)]
[PacketHeader("raidf", PacketSource.Server)]
[GenerateSerializer(true)]
public record RaidPacket
(
    [PacketIndex(0)]
    RaidPacketType Type,
    [PacketConditionalIndex(1, "Type", false, RaidPacketType.Leader, IsOptional = true)]
    long? LeaderId,
    [PacketConditionalIndex(2, "Type", false, RaidPacketType.Leave, IsOptional = true)]
    RaidLeaveType? LeaveType,
    [PacketConditionalListIndex(3, "Type", false, RaidPacketType.ListMembers, ListSeparator = ' ', IsOptional = true)]
    IReadOnlyList<long>? ListMembersPlayerIds,
    [PacketConditionalListIndex(4, "Type", false, RaidPacketType.PlayerHealths, InnerSeparator = '.', ListSeparator = ' ', IsOptional = true)]
    IReadOnlyList<RaidPlayerHealthsSubPacket>? PlayerHealths
) : IPacket;
Do not follow this link