Exemple #1
0
    //how to handle setting up the AI
    private void OnAISetup(NetworkStructs.AIInitialMoveData data)
    {
        //make sure we don't add any of the AI more than once
        if (AIList.ContainsKey(data.id))
        {
            return;
        }

        //create struct for each ai
        AI ai = new AI();

        ai.id      = data.id;
        ai.pos1    = new Vector3(data.xPos1, data.yPos1, data.zPos1);
        ai.pos2    = new Vector3(data.xPos2, data.yPos2, data.zPos2);
        ai.current = ai.pos2;

        //add it to the dictionary
        AIList.Add(data.id, ai);
    }
Exemple #2
0
    private void Update()
    {
        if (!isStarted)
        {
            return;
        }

        int recHostId;
        int connectionId;
        int channelId;

        byte[]           recBuffer  = new byte[1024];
        int              bufferSize = 1024;
        int              dataSize;
        byte             error;
        NetworkEventType recData = NetworkTransport.Receive(out recHostId, out connectionId, out channelId, recBuffer, bufferSize, out dataSize, out error);

        switch (recData)
        {
        //case NetworkEventType.Nothing: break;

        case NetworkEventType.ConnectEvent:
        {
            //Debug.Log("Player " + connectionId + " has connected");
            serverConsole.AddToConsole("Player " + connectionId + " has connected");
            OnConnection(connectionId);
        }
        break;

        case NetworkEventType.DataEvent:
        {
            NetworkStructs.MessageTypes type = (NetworkStructs.MessageTypes)recBuffer[0];

            //string msg = Encoding.Unicode.GetString(recBuffer, 0, dataSize);
            //Debug.Log("Receiving from " + connectionId + " : " + msg);
            //serverConsole.AddToConsole("Receiving from " + connectionId + " : " + msg);

            byte[] packet = new byte[1024];
            Array.Copy(recBuffer, 1, packet, 0, bufferSize - 1);

            switch (type)
            {
            case NetworkStructs.MessageTypes.NAMEIS:
            {
                NetworkStructs.StringData data = NetworkStructs.fromBytes <NetworkStructs.StringData>(packet);
                OnNameIs(connectionId, data.str);
            }
            break;

            case NetworkStructs.MessageTypes.ROT:
            {
                NetworkStructs.RotationData data = NetworkStructs.fromBytes <NetworkStructs.RotationData>(packet);
                OnRotationChange(connectionId, data);
            }
            break;

            case NetworkStructs.MessageTypes.MOVE:
            {
                NetworkStructs.PositionVelocityData data = NetworkStructs.fromBytes <NetworkStructs.PositionVelocityData>(packet);
                OnMovement(connectionId, data);
            }
            break;

            case NetworkStructs.MessageTypes.SETUPAI:
            {
                NetworkStructs.AIInitialMoveData data = NetworkStructs.fromBytes <NetworkStructs.AIInitialMoveData>(packet);
                OnAISetup(data);
            }
            break;

            case NetworkStructs.MessageTypes.MESSAGE:
                Send(recBuffer, reliableChannel);
                break;

            case NetworkStructs.MessageTypes.ADMIN:
            {
                NetworkStructs.StringData data = NetworkStructs.fromBytes <NetworkStructs.StringData>(packet);
                adminCommands(data.str, connectionId);
            }
            break;

            default:             //invalid key case
                //Debug.Log("INVALID SERVER MESSAGE : ");
                serverConsole.AddToConsole("INVALID SERVER MESSAGE : ");
                break;
            }
        }
        break;

        case NetworkEventType.DisconnectEvent:
        {
            //Debug.Log("Player " + connectionId + " has disconnected");
            serverConsole.AddToConsole("Player " + connectionId + " has disconnected");
            OnDisconnection(connectionId);
        }
        break;

        case NetworkEventType.BroadcastEvent:
        {
        }
        break;
        }

        AIPositionUpdate();
    }
Exemple #3
0
    //setup the AI that are running on the local machine
    public void SetupAI(int id, Vector3 pos1, Vector3 pos2)
    {
        NetworkStructs.AIInitialMoveData msg = new NetworkStructs.AIInitialMoveData(id, pos1, pos2);

        Send(NetworkStructs.AddTag(NetworkStructs.MessageTypes.SETUPAI, NetworkStructs.getBytes(msg)), reliableChannel);
    }