コード例 #1
0
    public void tempQueueMove()
    {
        var moveMessage = new MoveRequestMessage();

        // moveMessage.movement = new Vector3(UnityEngine.Random.value * 3, 0, UnityEngine.Random.value * 3);
        client.Send(CustomNetMsg.MoveRequest, moveMessage);
    }
コード例 #2
0
    public void QueueMove(int direction)
    {
        BasePlayer player = GamePlayManagerAR.instance.localPlayer;
        VRAR_Tile  tile   = GameStateManager.getInstance().getCurrentLevel().getAdjacentTile(player.GetCurrentVec().x, player.GetCurrentVec().y, VRAR_Level.getCounterTile(direction));

        if (tile == null || !tile.walkable)
        {
            return;
        }

        var moveMessage = new MoveRequestMessage();

        moveMessage.direction = direction;
        client.Send(CustomNetMsg.MoveRequest, moveMessage);
    }
コード例 #3
0
    public void Update()
    {
        networkJobHandle.Complete();

        for (int i = 0; i < connections.Length; ++i)
        {
            if (!connections[i].IsCreated)
            {
                connections.RemoveAtSwapBack(i);
                --i;
            }
        }

        NetworkConnection c;

        while (!serverManager.game.started && serverManager.lobby.players.Count < ServerManager.maxPlayers && (c = networkDriver.Accept()) != default)
        {
            connections.Add(c);
            Debug.Log("Accepted connection");
            serverManager.HandleNewConnection(c.InternalId);
        }

        DataStreamReader reader;

        for (int i = 0; i < connections.Length; ++i)
        {
            if (!connections[i].IsCreated)
            {
                continue;
            }

            NetworkEvent.Type cmd;
            while ((cmd = networkDriver.PopEventForConnection(connections[i], out reader)) != NetworkEvent.Type.Empty)
            {
                if (cmd == NetworkEvent.Type.Data)
                {
                    var messageType = (Message.MessageType)reader.ReadUShort();
                    Debug.Log("Host Received: " + messageType + " from " + connections[i].InternalId);

                    Message message = null;
                    switch (messageType)
                    {
                    case Message.MessageType.None: break;     //stay alive

                    case Message.MessageType.SetName: message = new SetNameMessage(); break;

                    case Message.MessageType.MoveRequest: message = new MoveRequestMessage(); break;

                    case Message.MessageType.AttackRequest: message = new AttackRequestMessage(); break;

                    case Message.MessageType.DefendRequest: message = new DefendRequestMessage(); break;

                    case Message.MessageType.ClaimTreasureRequest: message = new ClaimTreasureRequestMessage(); break;

                    case Message.MessageType.LeaveDungeonRequest: message = new LeaveDungeonRequestMessage(); break;

                    default: break;
                    }
                    if (message != null)
                    {
                        message.DeserializeObject(ref reader);
                        receivedMessagesQueue.Enqueue(new AdressedMessage(message, connections[i].InternalId));
                    }
                }
                else if (cmd == NetworkEvent.Type.Disconnect)
                {
                    Debug.Log("Client disconnected");
                    serverManager.HandleDisconnect(connections[i].InternalId);
                    connections[i] = default;
                }
            }
        }

        ProcessMessagesQueue();

        //order slightly wrong but will be sent next cycle
        foreach (KeyValuePair <int, float> lastSendTime in lastSendTimes)
        {
            if (Time.time - lastSendTime.Value > STAY_ALIVE_AFTER_SECONDS)
            {
                QeueMessage(new AdressedMessage(new NoneMessage(), lastSendTime.Key));
            }
        }
        networkJobHandle = networkDriver.ScheduleUpdate();
    }