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); } }
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; } } } }
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); }