public Message GuestStateChange(GuestInputChangeMessage message)
        {
            Player currentPlayer = _websocket.GetCurrentSessionPlayer();

            Assert.ThrowIfNull(currentPlayer, "requires a user session", _websocket);

            GameInstance gameInstance = _websocket.FindPlayerGameInstance(currentPlayer);

            if (gameInstance != null)
            {
                var outgoingMessage = new GuestInputChangedMessage
                {
                    Guest   = currentPlayer.Id,
                    Payload = message.Payload
                };
                _websocket.Send(outgoingMessage, gameInstance.HostPlayer.Id);
            }

            return(null);
        }
示例#2
0
    // called when the game is guest (not hosting), gathers and sends user input to host
    private void SendInputAsGuest()
    {
        bool clicked = Input.GetMouseButtonDown(0);

        if (clicked)
        {
            SendGuestGroovyCommand();
            clicked = false; // eat the click if a command is sent
        }

        var input = new GuestInput
        {
            mPos     = GetMousePoint().Convert2d(),
            mDown    = Input.GetMouseButton(0),
            mClicked = Input.GetMouseButtonDown(0),
            hArrows  = Input.GetAxis("Horizontal"),
            vArrows  = Input.GetAxis("Vertical"),
            btn1     = Input.GetButtonDown("Fire1"),
            btn2     = Input.GetButtonDown("Fire2"),
            btn3     = Input.GetButtonDown("Jump")
        };

        if (lastGuestInput.mPos == null ||
            input.mPos.X != lastGuestInput.mPos.X ||
            input.mPos.Y != lastGuestInput.mPos.Y ||
            input.mDown != lastGuestInput.mDown ||
            input.hArrows != lastGuestInput.hArrows ||
            input.vArrows != lastGuestInput.vArrows ||
            input.btn1 != lastGuestInput.btn1 ||
            input.btn2 != lastGuestInput.btn2 ||
            input.btn3 != lastGuestInput.btn3)
        {
            var message = new GuestInputChangeMessage
            {
                Payload = input
            };
            //Debug.Log($"SendInputAsGuest: {JsonConvert.SerializeObject(message)}");
            stateFluxClient.SendRequest(message);
            lastGuestInput = input;
        }
    }