/* * public void OnEnterRoomLoaded() * { * roomID = int.Parse(roomidStr); * SendAddRoom addRoom = SendAddRoom.CreateBuilder() * .SetRoomID(roomID) * .SetOpenid(GameInfo.OpenID) * .Build(); * byte[] body = addRoom.ToByteArray(); * byte[] data = CreateHead.CreateMessage(CreateHead.CSXYNUM + 2003, body.Length, 0, body); * Debug.Log("jiaru" + roomID + ",id:" + GameInfo.OpenID); * GameInfo.cs.Send(data); * * GameInfo.MJplayers.Clear();//加入房间时,清空字典,以免加入别的房间,数据不对 * roomidStr = null; * }*/ //message SendAddRoomOne{ //required string openid = 1;//用户OPENID //required int32 RoomID=2;//房间号} /// <summary> /// /// </summary> /// <param name="i"></param> public void OnEnterRoomClick() { if (GameInfo.isScoketClose) { GameInfo.cs.Closed(); } GameInfo.cs.serverType = ServerType.ListServer; roomID = int.Parse(roomidStr); GameInfo.room_id = roomID; //2017.8.2添加劉磊 開始 GameInfo.operation = 2; //SendGameOperation sendGameOperation = SendGameOperation.CreateBuilder() // .SetOpenid(GameInfo.OpenID) // .SetUnionid(GameInfo.unionid) // .SetOperation(GameInfo.operation) // .SetRoomID(GameInfo.room_id.ToString()) // .Build(); //byte[] body = sendGameOperation.ToByteArray(); SendGameOperation sendGameOperation = new SendGameOperation(); sendGameOperation.openid = GameInfo.OpenID; sendGameOperation.unionid = GameInfo.unionid; sendGameOperation.Operation = GameInfo.operation; sendGameOperation.RoomID = GameInfo.room_id.ToString(); sendGameOperation.GroupID = (int)GameInfo.GroupID; byte[] body = ProtobufUtility.GetByteFromProtoBuf(sendGameOperation); byte[] data = CreateHead.CreateMessage(CreateHead.CSXYNUM + 1020, body.Length, 0, body); GameInfo.cs.Send(data); GameInfo.isScoketClose = true; DebugLog(body); //結束 }
/// <summary> /// 发送创建房间信息 /// </summary> public void OnCreatRoomClick() { if (GameInfo.isScoketClose) { GameInfo.cs.Closed(); } GameInfo.cs.serverType = ServerType.ListServer; GameInfo.room_peo = room_peo; GameInfo.gameCount = count; GameInfo.operation = 1; //SendGameOperation sendGameOperation = SendGameOperation.CreateBuilder() // .SetOpenid(GameInfo.OpenID) // .SetUnionid(GameInfo.unionid) // .SetOperation(GameInfo.operation) // .SetRoomID(GameInfo.room_id.ToString()) // .Build(); //byte[] body = sendGameOperation.ToByteArray(); SendGameOperation sendGameOperation = new SendGameOperation(); sendGameOperation.openid = GameInfo.OpenID; sendGameOperation.unionid = GameInfo.unionid; sendGameOperation.Operation = GameInfo.operation; sendGameOperation.RoomID = GameInfo.room_id.ToString(); sendGameOperation.GroupID = (int)GameInfo.GroupID; byte[] body = ProtobufUtility.GetByteFromProtoBuf(sendGameOperation); byte[] data = CreateHead.CreateMessage(CreateHead.CSXYNUM + 1020, body.Length, 0, body); GameInfo.cs.Send(data); GameInfo.isScoketClose = true; createRoomButton.enabled = false; }
private void DebugLog(byte[] body) { SendGameOperation ope = ProtobufUtility.DeserializeProtobuf <SendGameOperation>(body); Debug.Log("加入房间,游戏openid" + ope.openid); Debug.Log("加入房间,游戏unionid" + ope.unionid); Debug.Log("加入房间,游戏operation" + ope.Operation); Debug.Log("加入房间,游戏roomid" + ope.RoomID); }
/// <summary> /// 判断用户是否是圈子成员 /// </summary> /// <param name="gameOperation"></param> /// <returns></returns> private bool ISUserInGruop(SendGameOperation gameOperation) { if (gameOperation.HasGroupID) { return(Gongyong.userlist.Find(w => w.unionid.Equals(gameOperation.Unionid) && w.GroupID.Any(q => q == gameOperation.GroupID)) != null); } else { return(true); } }
/// <summary> /// 发送创建房间信息 /// </summary> /// <param name="sc"></param> /// <param name="openid"></param> /// <param name="operation">操作//1创建房间,2加入房间</param> /// <param name="room_id"></param> public void OnCreatRoomClick(Socket sc, string openid, int operation, int room_id) { SendGameOperation sendGameOperation = SendGameOperation.CreateBuilder() .SetOpenid(openid) .SetUnionid(openid) .SetOperation(operation) .SetRoomID(room_id.ToString()) .Build(); byte[] body = sendGameOperation.ToByteArray(); byte[] data = CreateHead.CreateMessage(CreateHead.CSXYNUM + 1020, body.Length, 0, body); sc.Send(data); ReceiveMessage(sc, openid); }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { var gameOperation = SendGameOperation.ParseFrom(requestInfo.Body); RedisLoginModel olduser = RedisUtility.Get <RedisLoginModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERLIST, gameOperation.Openid, gameOperation.Unionid)); if (olduser == null) { return; } int GroupID = gameOperation.HasGroupID ? gameOperation.GroupID : 0; var serverGameOperation = ReturnGameOperation.CreateBuilder(); UserInfo user = Gongyong.userlist.Find(u => u.openid == olduser.Openid); switch (gameOperation.Operation) { //1創建房間/2加入房間 case 1: //if (ISUserInGruop(gameOperation)) if (gameOperation.GroupID != 0) { GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); var creategroupuderid = groupInfoDAL.GetUserIDByGuoupID(GroupID); var roomcardCount = RoomCardUtility.GetRoomCard(creategroupuderid); if (roomcardCount - GameInformationBase.createRoomCard < 0) { var data = serverGameOperation.SetUnionid(gameOperation.Unionid).SetOpenid(gameOperation.Openid).SetStatus(-3).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1021, data.Length, requestInfo.MessageNum, data))); return; } else { RedisUtility.GetServerIP(GameInformationBase.DEFAULTGAMESERVERNAME, requestInfo.MessageNum, session, 1, gameOperation.Openid, gameOperation.Unionid); } var reslut = RedisUtility.GetServerIP(GameInformationBase.DEFAULTGAMESERVERNAME, requestInfo.MessageNum, session, 1, gameOperation.Openid, gameOperation.Unionid); if (reslut == true) { //根据groupid来查找所有在线的圈子session var groupList = Gongyong.userlist.FindAll(w => { return(w.GroupID.Contains(GroupID) && w.session != session); }); for (var i = 0; i < groupList.Count; i++) { Console.WriteLine("get : " + groupList[i].nickname + " , ", groupList[i]); } ////向日志里面添加朋友圈耗卡信息 //GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); //var userInfo = Gongyong.userlist.Find(w => { return w.session.Equals(session); }); //var listRecord = groupInfoDAL.AddCreateRoomRecord(userInfo.UserID, GroupID,); } } else //不是在圈子里进行创建房间的 { //检测是否满足开房的条件 var roomcardCount = RoomCardUtility.GetRoomCard(user.UserID); if (roomcardCount - GameInformationBase.createRoomCard < 0) { var data = serverGameOperation.SetUnionid(gameOperation.Unionid).SetOpenid(gameOperation.Openid).SetStatus(-1).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1021, data.Length, requestInfo.MessageNum, data))); return; } else { RedisUtility.GetServerIP(GameInformationBase.DEFAULTGAMESERVERNAME, requestInfo.MessageNum, session, 1, gameOperation.Openid, gameOperation.Unionid); } } break; case 2: if (!gameOperation.HasRoomID) { return; } var roomInfo = RedisUtility.Get <RedisGameRoomInfo>(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, gameOperation.RoomID, string.Empty)); var ddzRoomInfo = RedisUtility.Get <RedisDDZGameRoomInfo>(RedisUtility.GetKey(GameInformationBase.COMMUNITYDDZROOMINFO, gameOperation.RoomID, string.Empty)); var status = 0; if (roomInfo == null && ddzRoomInfo == null) { status = 3; } else if ((roomInfo != null && roomInfo.room.listOpenid.Count >= roomInfo.room.room_peo) || (ddzRoomInfo != null && ddzRoomInfo.room.listOpenid.Count >= 3)) { status = 2; } else { if (ISUserInGruop(gameOperation)) { status = 1; //1:加入成功 RedisUtility.GetServerIP(roomInfo.ServerName, requestInfo.MessageNum, session, 1, gameOperation.Openid, gameOperation.Unionid, false, 0, status, roomInfo == null ? 1 : 0); } else //不是圈内成员 { var data = serverGameOperation.SetUnionid(gameOperation.Unionid).SetOpenid(gameOperation.Openid).SetStatus(-2).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1021, data.Length, requestInfo.MessageNum, data))); } } if (status != 1) { var data = ReturnRoomAdd.CreateBuilder().SetStart(status).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7090, data.Length, requestInfo.MessageNum, data))); } break; } }