internal CustomRpc(TPlugin plugin, Action <MessageWriter, TData> serializeRpc, Func <MessageReader, TData> deserializeRpc, Action <PlayerControl, TData> handleRpc, RpcLocalHandling localHandling = RpcLocalHandling.None) : base(plugin) { SerializeRpc = serializeRpc; DeserializeRpc = deserializeRpc; HandleRpc = handleRpc; _localHandling = localHandling; }
public static RpcHandler <TPlugin, TData> RegisterHandler <TPlugin, TData>(TPlugin plugin, Action <PlayerControl, object> handleRpc, RpcLocalHandling localHandling = RpcLocalHandling.None) where TPlugin : BasePlugin { return(Register(plugin, Serialize, Deserialize <TData>, handleRpc, localHandling)); }
private static RpcHandler <TPlugin, TData> Register <TPlugin, TData>(TPlugin plugin, Action <MessageWriter, TData> serializeRpc, Func <MessageReader, TData> deserializeRpc, Action <PlayerControl, object> handleRpc, RpcLocalHandling localHandling = RpcLocalHandling.None) where TPlugin : BasePlugin { if (handleRpc == null) { throw new ArgumentNullException(nameof(handleRpc), "Method must be specified."); } return(Register(plugin, serializeRpc, deserializeRpc, new Action <PlayerControl, TData>((sender, data) => handleRpc(sender, data)), localHandling)); }
public static RpcHandler <TPlugin, TData> Register <TPlugin, TData>(TPlugin plugin, Action <MessageWriter, object> serializeRpc, Func <MessageReader, Type, object> deserializeRpc, Action <PlayerControl, object> handleRpc, RpcLocalHandling localHandling = RpcLocalHandling.None) where TPlugin : BasePlugin { if (serializeRpc == null) { throw new ArgumentNullException(nameof(serializeRpc), "Serialization method must be specified."); } if (deserializeRpc == null) { throw new ArgumentNullException(nameof(deserializeRpc), "Deserialization method must be specified."); } if (handleRpc == null) { throw new ArgumentNullException(nameof(handleRpc), "Method must be specified."); } return(Register(plugin, new Action <MessageWriter, TData>((writer, data) => serializeRpc(writer, data)), new Func <MessageReader, TData>((reader) => (TData)deserializeRpc(reader, typeof(TData))), new Action <PlayerControl, TData>((sender, data) => handleRpc(sender, data)), localHandling)); }
public static RpcHandler <TPlugin, TData> Register <TPlugin, TData>(TPlugin plugin, IRpcType <TData> rpcType, RpcLocalHandling localHandling = RpcLocalHandling.None) where TPlugin : BasePlugin { return(Register(plugin, rpcType.SerializeRpc, rpcType.DeserializeRpc, rpcType.HandleRpc, localHandling)); }
public static RpcHandler <TPlugin, TData> Register <TPlugin, TData>(TPlugin plugin, Action <MessageWriter, TData> serializeRpc, Func <MessageReader, TData> deserializeRpc, Action <PlayerControl, TData> handleRpc, RpcLocalHandling localHandling = RpcLocalHandling.None) where TPlugin : BasePlugin { if (plugin == null) { throw new ArgumentNullException(nameof(plugin), "Plugin must be specified."); } if (serializeRpc == null) { throw new ArgumentNullException(nameof(serializeRpc), "Serialization method must be specified."); } if (deserializeRpc == null) { throw new ArgumentNullException(nameof(deserializeRpc), "Deserialization method must be specified."); } if (handleRpc == null) { throw new ArgumentNullException(nameof(handleRpc), "Method must be specified."); } RpcHandler <TPlugin, TData> customRpc = new RpcHandler <TPlugin, TData>(plugin, serializeRpc, deserializeRpc, handleRpc, localHandling); customRpc.Register(); return(customRpc); }