Archived
Private
Public Access
1
0
This repository has been archived on 2026-02-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
ProjectBackup/C#/FiveM/Framework/Framework.Shared/Abstraction/EventHelper.cs
2023-07-31 21:20:56 +02:00

51 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Dynamic;
namespace Framework.Shared.Abstraction {
public static class EventHelper {
public static Action<ExpandoObject> CreateHandler<T1>(Action<T1> handler) where T1 : Packet, new() {
return (obj1) => {
handler.Invoke(ConvertToPacket<T1>(obj1));
};
}
public static Action<List<object>> CreateHandlerList<T1>(Action<List<T1>> handler) where T1 : Packet, new() {
return (obj1) => {
handler.Invoke(ConvertToPacketList<T1>(obj1));
};
}
public static Action<T1, ExpandoObject> CreateHandler<T1, T2>(Action<T1, T2> handler) where T2 : Packet, new() {
return (obj1, obj2) => {
handler.Invoke(obj1, ConvertToPacket<T2>(obj2));
};
}
public static Action<T1, List<object>> CreateHandlerList<T1, T2>(Action<T1, List<T2>> handler) where T2 : Packet, new() {
return (obj1, obj2) => {
handler.Invoke(obj1, ConvertToPacketList<T2>(obj2));
};
}
private static T ConvertToPacket<T>(ExpandoObject data) where T : Packet, new() {
var packet = new T();
packet.LoadData(data);
return packet;
}
private static List<T> ConvertToPacketList<T>(List<object> data) where T : Packet, new() {
var packets = new List<T>();
foreach (var element in data) {
var packet = new T();
packet.LoadData((ExpandoObject)element);
packets.Add(packet);
}
return packets;
}
}
}