Example #1
0
    //Depricated Function

    /*
     * public void AIMove(int id, Vector3 pos)
     * {
     *  NetworkStructs.AIMoveData msg = new NetworkStructs.AIMoveData(id, pos);
     *
     *  Send(NetworkStructs.AddTag(NetworkStructs.MessageTypes.MOVEAI, NetworkStructs.getBytes(msg)), unreliableChannel);
     * }
     */

    //if AI movement is detected that isn't local
    private void AIMoveDetected(NetworkStructs.AIMoveData data)
    {
        GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");
        foreach (GameObject enemy in enemies)
        {
            if (enemy.GetComponent <AIMineBot>().id == data.id)
            {
                enemy.GetComponent <AIMineBot>().RecieveMove(new Vector3(data.xPos, data.yPos, data.zPos));
                return;
            }
        }
    }
Example #2
0
    //update the position of the AI
    private void AIPositionUpdate()
    {
        //iterate through our dictionary to make sure we don't have any duplicates and to make sure each AI moves
        foreach (AI a in AIList.Values)
        {
            if (!a.switchBack)
            {
                //tells the AI to keep moving
                a.current = Vector3.MoveTowards(a.current, a.pos1, 0.01f);
                if (Vector3.Magnitude(a.current - a.pos1) < 0.1f)
                {
                    //tells the AI to swap directions
                    a.switchBack = true;
                }
            }
            else
            {
                //tells the AI to keep moving in the opposite direction of the above movement
                a.current = Vector3.MoveTowards(a.current, a.pos2, 0.01f);
                if (Vector3.Magnitude(a.current - a.pos2) < 0.1f)
                {
                    //tells the AI to swap directions again
                    a.switchBack = false;
                }
            }

            //send delay so we aren't sending it a shit ton of times per second
            if (sendDelay <= lastSent && clients.Count != 0)
            {
                lastSent = 0;

                NetworkStructs.AIMoveData msg = new NetworkStructs.AIMoveData(a.id, a.current);

                Send(NetworkStructs.AddTag(NetworkStructs.MessageTypes.MOVEAI, NetworkStructs.getBytes(msg)), unreliableChannel);
            }
            else
            {
                lastSent += Time.deltaTime;
            }
        }
    }
Example #3
0
    private void Update()
    {
        //make sure the player is connected to the server and if they are reveal the chatbox
        if (!isConnected)
        {
            return;
        }
        else
        {
            chatBox.SetActive(true);
        }

        //message event handlers
        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.DataEvent:
        {
            NetworkStructs.MessageTypes type = (NetworkStructs.MessageTypes)recBuffer[0];

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

            switch (type)
            {
            case NetworkStructs.MessageTypes.ASKNAME:             //get username
            {
                NetworkStructs.NameRequestData data = NetworkStructs.fromBytes <NetworkStructs.NameRequestData>(packet);
                OnAskName(data);
            }
            break;

            case NetworkStructs.MessageTypes.CNN:             //connection
            {
                NetworkStructs.NameRequestData data = NetworkStructs.fromBytes <NetworkStructs.NameRequestData>(packet);
                SpawnPlayer(data.str, data.id);
                //CallAIs();
                SetupAIs();
            }
            break;

            case NetworkStructs.MessageTypes.DC:             //disconnection
            {
                NetworkStructs.IntData data = NetworkStructs.fromBytes <NetworkStructs.IntData>(packet);
                PlayerDisconnected(data.data);
            }
            break;

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

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

            case NetworkStructs.MessageTypes.MOVEAI:
            {
                NetworkStructs.AIMoveData data = NetworkStructs.fromBytes <NetworkStructs.AIMoveData>(packet);
                AIMoveDetected(data);
            }
            break;

            case NetworkStructs.MessageTypes.MESSAGE:
            {
                NetworkStructs.StringData data = NetworkStructs.fromBytes <NetworkStructs.StringData>(packet);
                recieveMessage(data);
            }
            break;

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

            default:             //invalid key case
                //Debug.Log("INVALID CLIENT MESSAGE : " + msg);
                break;
            }
        }
        break;

        case NetworkEventType.BroadcastEvent:
        {
        }
        break;
        }
    }