Ejemplo n.º 1
0
    public static CustomSyncMsg DSerializeData(MemoryStream ms, BinaryReader br)
    {
        int player_id = br.ReadInt32();
        int msg_type  = br.ReadInt32();

        if (msg_type == (int)RequestType.ENTERAREA)
        {
            int   id         = br.ReadInt32();
            int   health     = br.ReadInt32();
            float positionx  = br.ReadSingle();
            float positiony  = br.ReadSingle();
            float positionz  = br.ReadSingle();
            float directionx = br.ReadSingle();
            float directiony = br.ReadSingle();
            float directionz = br.ReadSingle();
            float rotationx  = br.ReadSingle();
            float rotationy  = br.ReadSingle();

            var msg = new EnterAreaMessage(player_id, health,
                                           new Vector2(rotationx, rotationy),
                                           new Vector3(directionx, directiony, directionz),
                                           new Vector3(positionx, positiony, positionx));

            // msg.id = id;
            return(msg);
        }
        else if (msg_type == (int)RequestType.INPUT)
        {
            int   id  = br.ReadInt32();
            float x   = br.ReadSingle();
            float y   = br.ReadSingle();
            float z   = br.ReadSingle();
            var   msg = new InputMessage(player_id, new Vector3(x, y, z));
            //  msg.id = id;
            return(msg);
        }
        else if (msg_type == (int)RequestType.LEAVEAREA)
        {
            int id  = br.ReadInt32();
            var msg = new LeaveAreaMessage(player_id);
            // msg.id = id;
            return(msg);
        }
        else if (msg_type == (int)RequestType.ROTATE)
        {
            int   id = br.ReadInt32();
            float x  = br.ReadSingle();
            float y  = br.ReadSingle();

            var msg = new RotateMessage(player_id, new Vector2(x, y));
            // msg.id = id;
            return(msg);
        }
        else if (msg_type == (int)RequestType.POSITION)
        {
            int   id  = br.ReadInt32();
            float x   = br.ReadSingle();
            float y   = br.ReadSingle();
            var   msg = new PositionMessage(player_id, new Vector2(x, y));
            // msg.id = id;
            return(msg);
        }
        else if (msg_type == (int)RequestType.SPAWN)
        {
            int   id  = br.ReadInt32();
            float x   = br.ReadSingle();
            float y   = br.ReadSingle();
            float z   = br.ReadSingle();
            var   msg = new SpawnMessage(player_id, new Vector3(x, y, z));

            // msg.id = id;
            return(msg);
        }
        else
        {
            return(null);
        }
    }
Ejemplo n.º 2
0
    public void execute_frames(List <SyncFrame> syncFrames)
    {
        foreach (SyncFrame syncFrame in syncFrames)
        {
            if (syncFrame.msg_list == null)
            {
                Debug.Log("executing frame----" + syncFrame.frame_count + "no msg_list");
                continue;
            }
            foreach (CustomSyncMsg msg in syncFrame.msg_list)
            {
                int clientID = msg.player_id;
                //Debug.Log("executing frame----" + syncFrame.frame_count + "clientID = " + clientID + "msg.type=" + msg.msg_type);
                ViewPlayer viewPlayer;
                if (viewPlayers.ContainsKey(clientID))
                {
                    viewPlayer = viewPlayers[clientID];
                }
                else
                {
                    viewPlayer = generate_other_viewPlayer(clientID);
                    viewPlayer.Start();
                    viewPlayer.connectID = clientID;
                }


                if (msg.msg_type == (int)RequestType.INPUT)
                {
                    InputMessage Input_msg = msg as InputMessage;
                    viewPlayer.Move(Input_msg.moving_x, Input_msg.moving_z);//接收到的都是非零的x,z


                    Debug.Log("executing frame----" + syncFrame.frame_count + " clientID " + clientID.ToString() + "..........is moving..."
                              + " dist_x =  " + Input_msg.moving_x * viewPlayer.get_speed() * Time.deltaTime + " dist_z= " + Input_msg.moving_z * viewPlayer.get_speed() * Time.deltaTime
                              + "y = " + Input_msg.moving_y);
                }
                else if (msg.msg_type == (int)RequestType.ROTATE)
                {
                    RotateMessage rot_msg = msg as RotateMessage;
                    viewPlayer.Rotate(rot_msg.delta_x, rot_msg.delta_y);
                }
                else if (msg.msg_type == (int)RequestType.SHOOT)
                {
                    ShootMessage shoot_msg = msg as ShootMessage;
                    Ray          shootRay  = new Ray(new Vector3(shoot_msg.origin_x, shoot_msg.origin_y, shoot_msg.origin_z), new Vector3(shoot_msg.direction_x, shoot_msg.direction_y, shoot_msg.direction_z));


                    OnShootJudging(viewPlayer, shootRay);
                }

                else if (msg.msg_type == (int)RequestType.SPAWN)
                {
                }
                //如果是currentPlayer -->cameraFolllow
                if (viewPlayer.connectID == currentPlayer.connectID)
                {
                    viewPlayer.camera.CameraUpdate();
                    InGameGUI.show_infotext("currentHealth:" + viewPlayer.currentHealth);
                    currentPlayerHealthSlider.value = viewPlayer.currentHealth;//只有currentPlayer才显示healthSlider
                }
            }
        }
    }
Ejemplo n.º 3
0
    public static List <CustomSyncMsg> extract_msg(List <DS_protocol.p_CustomSyncMsg> p_msg_list)
    {
        List <CustomSyncMsg> msg_list = new List <CustomSyncMsg>();
        CustomSyncMsg        msg;

        if (p_msg_list != null)
        {
            foreach (DS_protocol.p_CustomSyncMsg p_msg in p_msg_list)
            {
                if (p_msg.msg_type == (int)RequestType.INPUT)
                {
                    DS_protocol.p_InputMessage i_msg = p_msg.Input;
                    int   player_id = p_msg.player_id;
                    float moving_x  = i_msg.moving_x;
                    float moving_y  = i_msg.moving_y;
                    float moving_z  = i_msg.moving_z;
                    //Console.WriteLine("get input info: " + player_id +" " + moving_x+" " + moving_y + " " + moving_z);
                    msg = new InputMessage(player_id, new Vector3(moving_x, moving_y, moving_z));
                    msg_list.Add(msg);
                }
                else if (p_msg.msg_type == (int)RequestType.ROTATE)
                {
                    DS_protocol.p_RotateMessage r_msg = p_msg.Rotate;
                    int   player_id  = p_msg.player_id;
                    float rotation_x = r_msg.delta_x;
                    float rotation_y = r_msg.delta_y;
                    //Console.WriteLine("get rotate info: " + player_id + "rotation_x-- " + rotation_x + "rotation_y-- " + rotation_y);
                    msg = new RotateMessage(player_id, new Vector2(rotation_x, rotation_y));
                    msg_list.Add(msg);
                }
                else if (p_msg.msg_type == (int)RequestType.SPAWN)
                {
                    DS_protocol.p_SpawnMessage s_msg = p_msg.Spawn;
                    int   player_id  = p_msg.player_id;
                    float position_x = s_msg.position_x;
                    float position_y = s_msg.position_y;
                    float position_z = s_msg.position_z;
                    //Console.WriteLine("get spawn info: " + player_id + "position_x-- " + position_x + "position_y-- " + position_y + "position_z--" + position_z);
                    msg = new SpawnMessage(player_id, new Vector3(position_x, position_y, position_z));
                    msg_list.Add(msg);
                }
                else if (p_msg.msg_type == (int)RequestType.ENTERAREA)
                {
                    DS_protocol.p_EnterAreaMessage e_msg = p_msg.EnterArea;
                    int   player_id  = p_msg.player_id;
                    int   health     = e_msg.health;
                    float position_x = e_msg.position_x;
                    float position_y = e_msg.position_y;
                    float position_z = e_msg.position_z;

                    float direction_x = e_msg.direction_x;
                    float direction_y = e_msg.direction_y;
                    float direction_z = e_msg.direction_z;

                    float rotation_x = e_msg.rotation_x;
                    float rotation_y = e_msg.rotation_y;
                    //Console.WriteLine("get enterArea info: " + player_id + "position_x-- " + position_x + "position_y-- " + position_y + "position_z--" + position_z);
                    msg = new EnterAreaMessage(player_id, health, new Vector2(rotation_x, rotation_y), new Vector3(direction_x, direction_y, direction_z),
                                               new Vector3(position_x, position_y, position_z));
                    msg_list.Add(msg);
                }
                else if (p_msg.msg_type == (int)RequestType.LEAVEAREA)
                {
                    int player_id = p_msg.player_id;
                    msg = new LeaveAreaMessage(player_id);
                    msg_list.Add(msg);
                }
            }
        }
        return(msg_list);
    }
Ejemplo n.º 4
0
    public static List <p_AllMsg.p_CustomSyncMsg> Buffer_SyncFrame_msg_list(List <CustomSyncMsg> msg_list)
    {
        List <p_AllMsg.p_CustomSyncMsg> p_msg_list = new List <p_AllMsg.p_CustomSyncMsg>();

        foreach (CustomSyncMsg msg in msg_list)
        {
            if (msg.msg_type == (int)RequestType.ENTERAREA)
            {
                EnterAreaMessage            enterArea = msg as EnterAreaMessage;
                p_AllMsg.p_EnterAreaMessage p_msg     = new p_AllMsg.p_EnterAreaMessage();
                p_msg.id         = enterArea.id;
                p_msg.health     = enterArea.health;;
                p_msg.position_x = enterArea.position.x;
                p_msg.position_y = enterArea.position.y;
                p_msg.position_z = enterArea.position.z;

                p_msg.direction_x = enterArea.direction.x;
                p_msg.direction_y = enterArea.direction.y;
                p_msg.direction_z = enterArea.direction.z;

                p_msg.rotation_x = enterArea.rotation.x;
                p_msg.rotation_y = enterArea.rotation.y;

                p_msg.msg_type  = enterArea.msg_type;
                p_msg.player_id = enterArea.player_id;
                p_msg.area_id   = enterArea.area_id;
                p_msg_list.Add(p_msg);
            }
            if (msg.msg_type == (int)RequestType.INPUT)
            {
                InputMessage            input = msg as InputMessage;
                p_AllMsg.p_InputMessage p_msg = new p_AllMsg.p_InputMessage();
                p_msg.id       = input.id;
                p_msg.moving_x = input.moving.x;
                p_msg.moving_y = input.moving.y;
                p_msg.moving_z = input.moving.z;

                p_msg.msg_type  = input.msg_type;
                p_msg.player_id = input.player_id;
                p_msg.area_id   = input.area_id;

                p_msg_list.Add(p_msg);
            }
            if (msg.msg_type == (int)RequestType.LEAVEAREA)
            {
                LeaveAreaMessage            leaveArea = msg as LeaveAreaMessage;
                p_AllMsg.p_LeaveAreaMessage p_msg     = new p_AllMsg.p_LeaveAreaMessage();

                p_msg.id = leaveArea.id;

                p_msg.msg_type  = leaveArea.msg_type;
                p_msg.player_id = leaveArea.player_id;
                p_msg.area_id   = leaveArea.area_id;
                p_msg_list.Add(p_msg);
            }
            if (msg.msg_type == (int)RequestType.ROTATE)
            {
                RotateMessage            rotate = msg as RotateMessage;
                p_AllMsg.p_RotateMessage p_msg  = new p_AllMsg.p_RotateMessage();

                p_msg.id      = rotate.id;
                p_msg.delta_x = rotate.delta.x;
                p_msg.delta_y = rotate.delta.y;

                p_msg.msg_type  = rotate.msg_type;
                p_msg.player_id = rotate.player_id;
                p_msg.area_id   = rotate.area_id;
                p_msg_list.Add(p_msg);
            }
            if (msg.msg_type == (int)RequestType.SPAWN)
            {
                SpawnMessage            spawn = msg as SpawnMessage;
                p_AllMsg.p_SpawnMessage p_msg = new p_AllMsg.p_SpawnMessage();

                p_msg.id         = spawn.id;
                p_msg.position_x = spawn.position.x;
                p_msg.position_y = spawn.position.y;
                p_msg.position_z = spawn.position.z;

                p_msg.msg_type  = spawn.msg_type;
                p_msg.player_id = spawn.player_id;
                p_msg.area_id   = spawn.area_id;
                p_msg_list.Add(p_msg);
            }
        }

        return(p_msg_list);
    }
Ejemplo n.º 5
0
    public static CustomSyncMsg DSerializeData(BinaryReader br, int areaid)
    {
        int player_id = br.ReadInt16();
        int msg_type  = br.ReadChar();

        if (msg_type == (int)RequestType.ENTERAREA)
        {
            //int id = br.ReadInt32();
            int   health     = br.ReadInt32();
            float positionx  = br.ReadSingle();
            float positiony  = br.ReadSingle();
            float positionz  = br.ReadSingle();
            float directionx = br.ReadSingle();
            float directiony = br.ReadSingle();
            float directionz = br.ReadSingle();
            // float rotationx = br.ReadSingle();
            // float rotationy = br.ReadSingle();

            var msg = new EnterAreaMessage(player_id, health,
                                           new Vector2(0, 0),
                                           new Vector3(directionx, directiony, directionz),
                                           new Vector3(positionx, positiony, positionz));

            // msg.id = id;
            return(msg);
        }
        else if (msg_type == (int)RequestType.INPUT)
        {
            // int id = br.ReadInt32();
            float x = br.ReadSingle();
            // float y = br.ReadSingle();
            float z   = br.ReadSingle();
            var   msg = new InputMessage(player_id, new Vector3(x, 0, z));
            //  msg.id = id;
            return(msg);
        }
        else if (msg_type == (int)RequestType.LEAVEAREA)
        {
            //int id = br.ReadInt32();
            var msg = new LeaveAreaMessage(player_id);
            // msg.id = id;
            return(msg);
        }
        else if (msg_type == (int)RequestType.ROTATE)
        {
            //int id = br.ReadInt32();
            float x = br.ReadSingle();
            float y = br.ReadSingle();

            var msg = new RotateMessage(player_id, new Vector2(x, y));
            // msg.id = id;
            return(msg);
        }
        else if (msg_type == (int)RequestType.POSITION)
        {
            float x   = br.ReadSingle();
            float y   = br.ReadSingle();
            var   msg = new PositionMessage(player_id, new Vector2(x, y));
            // msg.id = id;
            gameServer.SetPlayerPosition(player_id, areaid, new UnityEngine.Vector2(x, y));
            return(msg);
        }
        else if (msg_type == (int)RequestType.SPAWN)
        {
            //int id = br.ReadInt32();
            float x   = br.ReadSingle();
            float y   = br.ReadSingle();
            float z   = br.ReadSingle();
            var   msg = new SpawnMessage(player_id, new Vector3(x, y, z));

            // msg.id = id;
            return(msg);
        }
        else if (msg_type == (int)RequestType.SYNPOS)
        {
            int Count = br.ReadInt32();

            for (int n = 0; n < Count; ++n)
            {
                int   TPlayerid = br.ReadInt32();
                float x         = br.ReadSingle();
                float y         = br.ReadSingle();

                gameServer.SetSYNPlayerPosition(player_id, TPlayerid, new UnityEngine.Vector2(x, y));
            }


            // msg.id = id;
            return(null);
        }
        else
        {
            return(null);
        }
    }