Ejemplo n.º 1
0
    /// <summary>
    /// (For use when an oculus rift player discovers something)
    /// Sends the results to the server, which broadcasts the results to ALL
    /// clients (even the client who found the phenomena)
    /// </summary>
    /// <param name="resultName">Result name.</param>
    public void SendResults(string resultName)
    {
        EventResultMessage msg = new EventResultMessage();

        msg.phenomenaName  = resultName;
        msg.sourceClientID = -1;

        myClient.Send(MyMessageTypes.EventResultID, msg);
    }
Ejemplo n.º 2
0
    /// <summary>
    /// Broadcasts a result received from a client to all other clients, including the original sending client
    /// </summary>
    /// <param name="netMsg">Net message.</param>
    void ServerHandleResult(NetworkMessage netMsg)
    {
        Debug.Log("Server received result from a client");
        EventResultMessage msg = netMsg.ReadMessage <EventResultMessage> ();

        msg.sourceClientID = netMsg.conn.connectionId;

        Debug.Log("Server sent the result to ALL clients");
        NetworkServer.SendToAll(MyMessageTypes.EventResultID, msg);
    }
        public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand)
        {
            var commandRenderTemplate = receivedCommand as RenderTemplateMessage;

            this.entityIds = new HashSet <string>();
            var result    = Regex.Replace(commandRenderTemplate.Template, @"{{ (.*) }}", this.RenderTemplateValue);
            var listeners = new ListenersTemplateInfo()
            {
                All  = false,
                Time = false,
            };

            listeners.Entities = this.entityIds.ToArray();
            listeners.Domains  = listeners.Entities.Select(x => x.GetDomain()).ToArray();
            this.entityIds     = null;

            var renderTemplateEvent = new TemplateEventInfo()
            {
                Result    = result,
                Listeners = listeners,
            };

            var eventMsg = new EventResultMessage()
            {
                Id    = commandRenderTemplate.Id,
                Event = new JRaw(HassSerializer.SerializeObject(renderTemplateEvent))
            };

            Task.Factory.StartNew(async() =>
            {
                await Task.Delay(40);
                await context.SendMessageAsync(eventMsg, CancellationToken.None);
            });

            return(this.CreateResultMessageWithResult(null));
        }
Ejemplo n.º 4
0
    /// <summary>
    /// Handler for when a client recieves a message stating a phenomena was found.
    /// Used in case we want to flash something on screen, like "A black hole was found by player X!"
    /// </summary>
    /// <param name="netMsg">Net message.</param>
    public void ClientResultReceived(NetworkMessage netMsg)
    {
        EventResultMessage msg = netMsg.ReadMessage <EventResultMessage> ();

        Debug.Log("Hurray, client " + msg.sourceClientID + " found a " + msg.phenomenaName + "!");
    }