Example #1
0
 /// <summary>
 /// Register a packet for the given ID.
 /// </summary>
 /// <param name="packetId">The server packet ID.</param>
 /// <param name="handler">The handler for the data.</param>
 /// <typeparam name="T">The type of the packet data passed as parameter to the handler.</typeparam>
 public void RegisterServerPacketHandler <T>(
     ServerPacketId packetId,
     GenericServerPacketHandler <T> handler
     ) where T : IPacketData => RegisterServerPacketHandler(
     packetId,
     (id, iPacket) => handler(id, (T)iPacket)
     );
Example #2
0
        public void RegisterServerPacketHandler <T>(ServerPacketId packetId, GenericServerPacketHandler <T> packetHandler)
            where T : IPacketData
        {
            if (_serverPacketHandlers.ContainsKey(packetId))
            {
                Logger.Get().Error(this, $"Tried to register already existing server packet handler: {packetId}");
                return;
            }

            // We can't store these kinds of generic delegates in a dictionary,
            // so we wrap it in a function that casts it
            _serverPacketHandlers[packetId] = (id, iPacket) => { packetHandler(id, (T)iPacket); };
        }
Example #3
0
        /// <inheritdoc/>
        public void RegisterPacketHandler <TPacketData>(TPacketId packetId, GenericServerPacketHandler <TPacketData> handler) where TPacketData : IPacketData
        {
            if (!PacketIdLookup.TryGetValue(packetId, out var idValue))
            {
                throw new InvalidOperationException(
                          InvalidPacketIdMsg);
            }

            if (!_serverAddon.Id.HasValue)
            {
                throw new InvalidOperationException(NoAddonIdMsg);
            }

            _packetManager.RegisterServerAddonPacketHandler(
                _serverAddon.Id.Value,
                idValue,
                (id, iPacketData) => handler(id, (TPacketData)iPacketData)
                );
        }