Пример #1
0
    SyncFrame LocalFrameRecord(Player TPlayer)
    {
        var moving = ControlDirecton(TPlayer);

        var rotation = RotMove();

        var syncFrame = new SyncFrame(0, TPlayer.get_area_id());

        //var InputSyncMsg = new InputMessage(player_id, moving); //TODO :改为发送位置!

        // syncFrame.dump_actions(InputSyncMsg);

        //         var RotateSyncMsg = new RotateMessage(player_id, rotation);
        //         syncFrame.dump_actions(RotateSyncMsg);
        TPlayer.move(moving);//本地move,获取新的位置

        sysTime++;
        if (sysTime > 3)
        {
            var thePos = TPlayer.get_position();

            var Tmsg = new PositionMessage(player_id, new Vector2(thePos.x, thePos.z));
            Console.Write("LocalFrameRecord posioin" + thePos.x, "," + thePos.z);
            syncFrame.dump_actions(Tmsg);
            sysTime = 0;
        }


        if (bSYN)
        {
            Dictionary <int, Vector2> TPlayers = new Dictionary <int, Vector2>();

            for (int n = 0; n < areaManager.areas.Count; ++n)
            {
                Area TArea = areaManager.areas[n];

                for (int np = 0; np < TArea.logic_mgr.player_list.Count; ++np)
                {
                    var Tlogic_mgr = TArea.logic_mgr.player_list[np];

                    if (!TPlayers.ContainsKey(Tlogic_mgr.get_id()))
                    {
                        TPlayers[Tlogic_mgr.get_id()] = new Vector2(Tlogic_mgr.position.x, Tlogic_mgr.position.z);
                    }
                    else
                    {
                    }
                }
            }

            var Tms = new SYNMessage(player_id, TPlayers);

            syncFrame.dump_actions(Tms);
        }



        return(syncFrame);
    }
Пример #2
0
    public static void SerializeData(BinaryWriter br, CustomSyncMsg msg)
    {
        br.Write((short)msg.player_id);
        br.Write((char)msg.msg_type);

        if (msg.msg_type == (int)RequestType.ENTERAREA)
        {
            EnterAreaMessage enterArea = msg as EnterAreaMessage;
            // br.Write(enterArea.id);
            br.Write(enterArea.health);;
            br.Write(enterArea.position.x);
            br.Write(enterArea.position.y);
            br.Write(enterArea.position.z);
            br.Write(enterArea.direction.x);
            br.Write(enterArea.direction.y);
            br.Write(enterArea.direction.z);
            //br.Write(enterArea.rotation.x);
            //br.Write(enterArea.rotation.y);
        }
        else if (msg.msg_type == (int)RequestType.INPUT)
        {
            InputMessage input = msg as InputMessage;
            // br.Write(input.id);
            br.Write(input.moving.x);
            // br.Write(input.moving.y);
            br.Write(input.moving.z);
        }
        else if (msg.msg_type == (int)RequestType.LEAVEAREA)
        {
            LeaveAreaMessage leaveArea = msg as LeaveAreaMessage;
            //br.Write(leaveArea.id);
        }
        else if (msg.msg_type == (int)RequestType.ROTATE)
        {
            RotateMessage rotate = msg as RotateMessage;
            //br.Write(rotate.id);
            br.Write(rotate.delta.x);
            br.Write(rotate.delta.y);
        }
        else if (msg.msg_type == (int)RequestType.POSITION)
        {
            PositionMessage rotate = msg as PositionMessage;
            //br.Write(rotate.id);
            br.Write(rotate.delta.x);
            br.Write(rotate.delta.y);
        }
        else if (msg.msg_type == (int)RequestType.SPAWN)
        {
            SpawnMessage spawn = msg as SpawnMessage;
            // br.Write(spawn.id);
            br.Write(spawn.position.x);
            br.Write(spawn.position.y);
            br.Write(spawn.position.z);
        }
        else if (msg.msg_type == (int)RequestType.SYNPOS)
        {
            SYNMessage spawn = msg as SYNMessage;
            br.Write(spawn.Players.Count);

            foreach (var item in spawn.Players)
            {
                br.Write(item.Key);
                br.Write(item.Value.x);
                br.Write(item.Value.y);
            }
        }
    }