Пример #1
0
        /// <summary>
        /// invoke a remote precedure call.
        /// </summary>
        /// <param name="rpcMethodName">method name</param>
        /// <param name="targets"> <see cref="PlayRPCTargets"/>.</param>
        /// <param name="rpcParameters"></param>
        public static void RPC(string rpcMethodName, PlayRPCTargets targets, params object[] rpcParameters)
        {
            var rpcMessage = new PlayRpcMessage();

            rpcMessage.MethodName = rpcMethodName;
            rpcMessage.Paramters  = rpcParameters;

            if (targets.IsIn(PlayRPCTargets.All, PlayRPCTargets.AllBuffered))
            {
                rpcMessage.Echo = true;
            }

            if (targets.IsIn(PlayRPCTargets.OthersBuffered, PlayRPCTargets.AllBuffered))
            {
                rpcMessage.Cached = true;
            }

            if (targets.IsIn(PlayRPCTargets.MasterClient))
            {
                rpcMessage.ToPeers = new List <string>()
                {
                    Room.MasterClientId,
                };
                if (Play.Player.UserID == Play.Room.MasterClientId)
                {
                    rpcMessage.Echo = true;
                }
            }

            Play.ExecuteRPC(rpcMessage);
        }
Пример #2
0
        /// <summary>
        /// call
        /// </summary>
        /// <param name="rpcMethodName"></param>
        /// <param name="userIds"></param>
        /// <param name="rpcParameters"></param>
        public static void RPC(string rpcMethodName, IEnumerable <string> userIds, params object[] rpcParameters)
        {
            var rpcMessage = new PlayRpcMessage();

            rpcMessage.MethodName = rpcMethodName;
            rpcMessage.Paramters  = rpcParameters;
            rpcMessage.ToPeers    = new List <string>(userIds);
            Play.ExecuteRPC(rpcMessage);
        }