Ejemplo n.º 1
0
    /*
     * 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);
        //結束
    }
Ejemplo n.º 2
0
    /// <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;
    }
Ejemplo n.º 3
0
    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);
    }
Ejemplo n.º 4
0
 /// <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);
     }
 }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 6
0
        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;
            }
        }