Example #1
0
        public int ExitRoom(WebPlayer webPlayer)
        {
            var ret = -1;
            var rpv = webPlayer.GetIBehaviour <TeamPlayerBv>();

            if (rpv == null)
            {
                return(ret);
            }
            if (rpv.TeamId != string.Empty)
            {
                var tr = this.GetTeam(rpv.TeamId);
                if (tr == null)
                {
                    return(ret);
                }
                if (webPlayer == tr.TeamLeader) //队长退出则解散
                {
                    tr.DisBand();
                    return(ret);
                }

                ret        = tr.ExitTeam(webPlayer);
                rpv.TeamId = string.Empty;
                if (0 == tr.Dict_Rp.Count)//
                {
                    tr.CloseTeam();
                }
            }

            return(ret);
        }
Example #2
0
        protected override void Run(WebPlayer webpy, JObject message)
        {
            var enterTeam_Res = new EnterTeam_Res();
            var enterTeam_Req = message.ToObject <EnterTeam_Req>();


            var tpbv = webpy.GetIBehaviour <TeamPlayerBv>();

            if (tpbv == null)
            {
                //Log.Debug("没有加入房间");
                tpbv = new TeamPlayerBv();
                tpbv.TeamPlayer_Data = enterTeam_Req.TeamPlayer_Data;
                webpy.AddIBehaviour(tpbv);
            }
            else
            {
                tpbv.TeamPlayer_Data = enterTeam_Req.TeamPlayer_Data;
            }

            enterTeam_Res.Res = GameMainEntry.Instance.TeamModule.EnterTeam(webpy);
            if (enterTeam_Res.Res > 0)
            {
                var tr = GameMainEntry.Instance.TeamModule.GetTeam(tpbv.TeamId);
                enterTeam_Res.Ls_TeamPlayer_Data = tr.GetTeamPlayer_Data();
                enterTeam_Res.TeamId             = tr.TeamId;
            }
            webpy.SendAsync(Msg_Json.Create_Msg_Json(NetOpCode.EnterTeam_Res, enterTeam_Res));
        }
Example #3
0
        public int ExitRoom(WebPlayer webPlayer)
        {
            var ret = -1;
            var rpv = webPlayer.GetIBehaviour <RoomPlayerBv>();

            if (rpv == null)
            {
                return(ret);
            }
            if (rpv.RoomId != string.Empty)
            {
                var tr = this.GetTableRoom(rpv.RoomId);
                if (tr == null)
                {
                    return(ret);
                }
                ret        = tr.ExitRoom(webPlayer);
                rpv.RoomId = string.Empty;
                if (0 == tr.Dict_Rp.Count) //
                {
                    tr.CloseRoom();
                }
            }

            return(ret);
        }
Example #4
0
        /// <summary>
        /// -1房间不够
        /// -2必须先创建房间
        /// </summary>
        /// <param name="webPlayer"></param>
        /// <returns></returns>
        public int EnterRoom(WebPlayer webPlayer)
        {
            var ret = -1;
            var rpv = webPlayer.GetIBehaviour <RoomPlayerBv>();

            if (rpv == null)
            {
                return(ret);
            }

            TableRoom tr = null;

            if (rpv.RoomId != string.Empty)
            {
                tr = this.GetTableRoom(rpv.RoomId);
                if (tr.IsAvailable)//没人必须创建房间
                {
                    ret = -2;
                    return(ret);
                }
                ret = tr.EnterRoom(webPlayer);
                return(ret);
            }

            if (rpv.RoomPlayer_Data.RoomId == string.Empty)//创建房间
            {
                ///////////////////////////这部分用于测试,自动匹配有人的房间
                tr = this.GetCanJoinTableRoom();
                if (tr != null)
                {
                    ret = tr.EnterRoom(webPlayer);
                    return(ret);
                }
                /////////////////////////////////////////////////
                //创建新房间
                tr = this.GetAvailableTableRoom();
                if (null == tr)
                {
                    return(ret);
                }



                tr.OpenRoom();//
                ret        = tr.EnterRoom(webPlayer);
                rpv.RoomId = tr.RoomId;
            }
            else//加入别的房间
            {
                tr = this.GetTableRoom(rpv.RoomPlayer_Data.RoomId);
                if (tr.IsAvailable)//没人必须创建房间
                {
                    ret = -2;
                    return(ret);
                }
                ret        = tr.EnterRoom(webPlayer);
                rpv.RoomId = tr.RoomId;
            }
            return(ret);
        }
Example #5
0
        public int EnterRoom(WebPlayer webPlayer)
        {
            var ret = -1;
            var py  = this.GetPlayer(webPlayer.Id);

            if (py != null)
            {
                ret = 2;//已经在房间中
                return(ret);
            }
            //广播加入
            var rpd = webPlayer.GetIBehaviour <RoomPlayerBv>();

            rpd.RoomId = this.RoomId;
            rpd.RoomPlayer_Data.RoomId = this.RoomId;
            SendToAllPlayer(Msg_Json.Create_Msg_Json(NetOpCode.RoomPlayerJoin_Msg, new RoomPlayerJoin_Msg {
                RoomPlayer_Data = rpd.RoomPlayer_Data
            }));


            Dict_Rp.Add(webPlayer.Id, webPlayer);
            Log.Debug($"{webPlayer.Id}加入房间:{RoomId}");

            ret = 1;
            return(ret);
        }
Example #6
0
        public int ExitRoom(WebPlayer webPlayer)
        {
            var ret = -1;
            var py  = this.GetPlayer(webPlayer.Id);

            if (py == null)
            {
                return(ret);
            }

            ret = 1;
            RemovePlayer(webPlayer.Id);
            Log.Debug($"{webPlayer.Id}退出房间:{RoomId}");
            var rpd = webPlayer.GetIBehaviour <RoomPlayerBv>();

            SendToAllPlayer(Msg_Json.Create_Msg_Json(NetOpCode.RoomPlayerLeave_Msg, new RoomPlayerLeave_Msg {
                RoomPlayer_Data = rpd.RoomPlayer_Data
            }));
            {
                //广播消息
                //SendToAllPlayer()
            }


            return(ret);
        }
Example #7
0
        public int EnterTeam(WebPlayer webPlayer)
        {
            var ret = -1;
            var py  = this.GetPlayer(webPlayer.Id);

            if (py != null)
            {
                ret = 2;//已经在房间中
                return(ret);
            }
            //广播加入
            var tpb = webPlayer.GetIBehaviour <TeamPlayerBv>();

            tpb.TeamId = this.TeamId;
            tpb.TeamPlayer_Data.TeamId = this.TeamId;

            SendToAllPlayer(Msg_Json.Create_Msg_Json(NetOpCode.TeamPlayerJoin_Msg, new TeamPlayerJoin_Msg {
                TeamPlayer_Data = tpb.TeamPlayer_Data
            }));


            Dict_Rp.Add(webPlayer.Id, webPlayer);
            Log.Debug($"{webPlayer.Id}加入队伍:{TeamId}");

            ret = 1;
            return(ret);
        }
Example #8
0
        /// <summary>
        /// -1房间不够
        /// -2必须先创建房间
        /// </summary>
        /// <param name="webPlayer"></param>
        /// <returns></returns>
        public int EnterTeam(WebPlayer webPlayer)
        {
            var ret  = -1;
            var tpbv = webPlayer.GetIBehaviour <TeamPlayerBv>();

            if (tpbv == null)
            {
                return(ret);
            }

            Team tr = null;

            if (tpbv.TeamId != string.Empty)
            {
                tr = this.GetTeam(tpbv.TeamId);
                if (tr.IsAvailable)//没人必须创建房间
                {
                    ret = -2;
                    return(ret);
                }
                ret = tr.EnterTeam(webPlayer);
                return(ret);
            }

            if (tpbv.TeamPlayer_Data.TeamId == string.Empty)//创建房间
            {
                /////////////////////////////////////////////////
                //创建新房间
                tr = this.GetAvailableTeam();
                if (null == tr)
                {
                    return(ret);
                }

                tr.OpenTeam();//
                tr.TeamLeader = webPlayer;
                ret           = tr.EnterTeam(webPlayer);
                tpbv.TeamId   = tr.TeamId;
            }
            else//加入别的房间
            {
                tr = this.GetTeam(tpbv.TeamPlayer_Data.TeamId);
                if (tr.IsAvailable)//没人必须创建房间
                {
                    ret = -2;
                    return(ret);
                }
                ret         = tr.EnterTeam(webPlayer);
                tpbv.TeamId = tr.TeamId;
            }
            return(ret);
        }
Example #9
0
        protected override void Run(WebPlayer webpy, JObject message)
        {
            var rpbv = webpy.GetIBehaviour <RoomPlayerBv>();

            if (rpbv == null)
            {
                webpy.SendAsync(Msg_Json.Create_Msg_Json(NetOpCode.NeedEnterRoom_Msg, new NeedEnterRoom_Msg()));
                return;
            }
            var tr = GameMainEntry.Instance.RoomModule.GetTableRoom(rpbv.RoomId);

            if (tr == null)
            {
                Log.Debug("没有房间");
                webpy.SendAsync(Msg_Json.Create_Msg_Json(NetOpCode.NeedEnterRoom_Msg, new NeedEnterRoom_Msg()));
                return;
            }
            this.Run(webpy, rpbv, tr, message);
        }
Example #10
0
        public int ExitTeam(WebPlayer webPlayer)
        {
            var ret = -1;
            var py  = this.GetPlayer(webPlayer.Id);

            if (py == null)
            {
                return(ret);
            }
            ret = 1;
            RemovePlayer(webPlayer.Id);
            Log.Debug($"{webPlayer.Id}退出队伍:{TeamId}");
            var tpb = webPlayer.GetIBehaviour <TeamPlayerBv>();

            SendToAllPlayer(Msg_Json.Create_Msg_Json(NetOpCode.TeamPlayerLeave_Msg, new TeamPlayerLeave_Msg {
                TeamPlayer_Data = tpb.TeamPlayer_Data
            }));
            return(ret);
        }
Example #11
0
        protected override void Run(WebPlayer webpy, JObject message)
        {
            var tpbv = webpy.GetIBehaviour <TeamPlayerBv>();

            if (tpbv == null)
            {
                webpy.SendAsync(Msg_Json.Create_Msg_Json(NetOpCode.NeedTeam_Msg, new NeedEnterRoom_Msg()));
                return;
            }
            var team = GameMainEntry.Instance.TeamModule.GetTeam(tpbv.TeamId);

            if (team == null)
            {
                webpy.SendAsync(Msg_Json.Create_Msg_Json(NetOpCode.NeedTeam_Msg, new NeedEnterRoom_Msg()));
                return;
            }
            var matchStart_Res = new MatchStart_Res()
            {
                Res = -1
            };
            var matchStart_Req = message.ToObject <MatchStart_Req>();

            if (matchStart_Req.MatchingType == (int)EMatchingType.Matching_Friend)//好友对战
            {
                if (team.Dict_Rp.Count == GameConstant.FriendsBattlePlayerNub)
                {
                    var tr = GameMainEntry.Instance.RoomModule.GetAvailableTableRoom();
                    if (tr != null)
                    {
                        foreach (var vk in team.Dict_Rp)
                        {
                            var rpbv2 = vk.Value.GetIBehaviour <RoomPlayerBv>();
                            var tpbv2 = vk.Value.GetIBehaviour <TeamPlayerBv>();

                            tr.EnterRoom(vk.Value);
                        }
                    }
                }
                webpy.SendAsync(Msg_Json.Create_Msg_Json(NetOpCode.MatchStart_Res, matchStart_Res));
                return;
            }
        }