コード例 #1
0
            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;
            }
コード例 #2
0
 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));
 }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
 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));
 }
コード例 #6
0
        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);
        }