Exemple #1
0
        static void QueryRoom(KcpUser linker, DataBuffer buffer)
        {
            var list = RoomManager.QueryFreeRoom();

            if (list.Count == 0)
            {
                ErrorCode.SendErrorCode(linker, ErrorCode.NoFreeRoom);
                return;
            }
            DataBuffer db   = new DataBuffer();
            FakeStruct fake = new FakeStruct(db, Req.Length);

            fake[Req.Cmd]  = QueryCmd.QueryRoom;
            fake[Req.Type] = MessageType.Query;
            db.fakeStruct  = fake;
            int             c     = list.Count;
            FakeStructArray array = new FakeStructArray(db, 3, c);

            for (int i = 0; i < c; i++)
            {
                var room = list[i];
                array[c, 0] = room.RoomId;
                array[c, 1] = room.Number;
                array.SetData(c, 2, room.Name);
            }
            fake.SetData(Req.Args, array);
            linker.Send(AES.Instance.Encrypt(db.ToBytes()), EnvelopeType.AesDataBuffer);
        }
        public static void SendErrorCode(KcpUser linker, Int32 error)
        {
            DataBuffer db   = new DataBuffer();
            var        fake = new FakeStruct(db, Req.Length);

            fake[Req.Cmd]   = RpcCmd.Login;
            fake[Req.Type]  = MessageType.Rpc;
            fake[Req.Error] = error;
            db.fakeStruct   = fake;
            linker.Send(AES.Instance.Encrypt(db.ToBytes()), EnvelopeType.AesDataBuffer);
        }
    static void GetAllServerIp(KcpUser linker, DataBuffer data)
    {
        int index = data.fakeStruct[Req.Args];
        var info  = ServerTable.GetAllServer();
        int c     = info.Count;

        if (c > 0)
        {
            DataBuffer db   = new DataBuffer();
            FakeStruct fake = new FakeStruct(db, Req.Length);
            fake[Req.Cmd]  = ProCmd.AllServer;
            fake[Req.Type] = MessageType.Pro;
            FakeStructArray array = new FakeStructArray(db, 3, c);
            for (int i = 0; i < c; i++)
            {
                array[i, 0] = info[i].ip;
                array[i, 1] = info[i].port;
                array.SetData(i, 2, info[i].name);
            }
            fake.SetData(Req.Args, array);
            db.fakeStruct = fake;
            linker.Send(AES.Instance.Encrypt(db.ToBytes()), EnvelopeType.AesDataBuffer);
        }
    }
Exemple #4
0
        public void Reconnect(KcpUser linker)
        {
            if (linker.userInfo == null)
            {
                return;
            }
            var uid = linker.userInfo.id;

            for (int i = 0; i < 3; i++)
            {
                var user = gamers[i].userInfo;
                if (user == null)
                {
                    if (user.id == uid)
                    {
                        gamers[i].userInfo = linker.userInfo;
                        gamers[i].linker   = linker;
                        DataBuffer db   = new DataBuffer();
                        var        fake = new FakeStruct(db, Req.Length);
                        fake[Req.Cmd]  = RpcCmd.JoinRoom;
                        fake[Req.Type] = MessageType.Rpc;

                        FakeStruct gamerInfo = new FakeStruct(db, 3);
                        //gamerInfo[0] = i;//seat
                        //gamerInfo[1] = user.id;//uid
                        //gamerInfo[2] = RoomId;//roomid
                        fake.SetData(Req.Args, gamerInfo);
                        db.fakeStruct = fake;

                        linker.Send(AES.Instance.Encrypt(db.ToBytes()), EnvelopeType.AesDataBuffer);
                        GetRoomDetail(linker);
                        break;
                    }
                }
            }
        }
Exemple #5
0
        public void GetRoomDetail(KcpUser linker)
        {
            DataBuffer data = new DataBuffer();
            var        fake = new FakeStruct(data, Req.Length);

            fake[Req.Cmd]  = RpcCmd.RoomDetail;
            fake[Req.Type] = MessageType.Rpc;

            FakeStructArray gs = new FakeStructArray(data, 3, 3);

            for (int i = 0; i < 3; i++)
            {
                var user = gamers[i].userInfo;
                if (user != null)
                {
                    //gs[i, 0] = user.id;
                    //gs[i, 1] = 1000;//金币
                    //gs[i, 2] = gamers[i].ready;
                }
            }
            fake.SetData(Req.Args, gs);
            data.fakeStruct = fake;
            linker.Send(AES.Instance.Encrypt(data.ToBytes()), EnvelopeType.AesDataBuffer);
        }