Example #1
0
    /// <summary>
    /// 玩家上线的处理
    /// </summary>
    /// <param name="response"></param>
    public override void OnOperationResponse(OperationResponse response)
    {
        // 获取角色数据
        DtoPlayer dtoPlayer = JsonMapper.ToObject <DtoPlayer>
                                  (response.Parameters.ExTryGet((byte)ParameterCode.DtoPlayer) as string);

        GameData.Player = dtoPlayer;
        m_MainPanel.OnOnline(dtoPlayer);
    }
Example #2
0
    /// <summary>
    /// 获取玩家数据 处理玩家上线 主要是主界面的初始化工作
    /// </summary>
    /// <param name="dtoPlayer"></param>
    public void OnOnline(DtoPlayer dtoPlayer)
    {
        TextName.text  = dtoPlayer.Name;
        TextLv.text    = dtoPlayer.Lv.ToString();
        TextPower.text = dtoPlayer.Power.ToString();

        // 加载子界面
        m_FriendListPanel  = UIManager.Instance.LoadPanel(UIPanelType.FriendList) as FriendListPanel;
        m_AddRequestPanel  = UIManager.Instance.LoadPanel(UIPanelType.AddRequest) as AddRequestPanel;
        m_AddToClientPanel = UIManager.Instance.LoadPanel(UIPanelType.AddToClient) as AddToClientPanel;
        m_MatchPanel       = UIManager.Instance.LoadPanel(UIPanelType.Match) as MatchPanel;

        // 关闭遮罩面板
        UIManager.Instance.PopPanel();
    }
Example #3
0
        public override void OnOperationRequest(OperationRequest request, SendParameters sendParameters, MobaPeer peer)
        {
            MobaServer.LogInfo("处理是否添加好友的反馈");

            // 是否同意
            bool isAccept = (bool)request.Parameters.ExTryGet((byte)ParameterCode.AcceptAddFriend);
            // 请求添加的玩家数据
            int    fromId   = (int)request.Parameters.ExTryGet((byte)ParameterCode.PlayerId);
            string fromName = (string)request.Parameters.ExTryGet((byte)ParameterCode.PlayerName);

            // 请求的客户端
            MobaPeer fromPeer = Caches.Player.GetPeer(fromId);

            OperationResponse response = new OperationResponse((byte)OperationCode.PlayerAddResult);

            if (isAccept)
            {
                response.ReturnCode = (short)ReturnCode.Suceess;

                // 自身的数据
                DataBase.Model.Player player = UserManager.GetPlayer(peer.Username);
                // 好友的数据
                DataBase.Model.Player friend = PlayerManager.GetById(fromId);

                // 添加好友
                PlayerManager.AddFriend(player.Identification, fromId);

                // 发送更新后的数据
                DtoPlayer dtoPlayer = player.ConvertToDot();
                response.Parameters = new Dictionary <byte, object>();
                response[(byte)ParameterCode.DtoFriend] = JsonMapper.ToJson(dtoPlayer.Friends.Last());
                peer.SendOperationResponse(response, sendParameters);

                dtoPlayer           = friend.ConvertToDot();
                response.Parameters = new Dictionary <byte, object>();
                response[(byte)ParameterCode.DtoFriend] = JsonMapper.ToJson(dtoPlayer.Friends.Last());
                fromPeer.SendOperationResponse(response, sendParameters);

                return;
            }
            else
            {
                response.ReturnCode   = (short)ReturnCode.Falied;
                response.DebugMessage = fromName + " 拒绝添加你为好友";
            }

            fromPeer.SendOperationResponse(response, sendParameters);
        }
Example #4
0
        // 获得数据传输对象
        public virtual DtoPlayer ConvertToDot()
        {
            DtoPlayer dtoPlayer = new DtoPlayer()
            {
                Id        = this.Identification,
                Name      = this.Name,
                Lv        = this.Lv,
                Exp       = this.Exp,
                Power     = this.Power,
                RunCount  = this.RunCount,
                WinCount  = this.WinCount,
                LostCount = this.LostCount,
            };

            // 复制英雄列表
            string[] heros = this.HeroIdList.Split(',');
            foreach (string hero in heros)
            {
                dtoPlayer.HeroIds.Add(int.Parse(hero));
            }

            // 复制好友列表
            string[] friends = this.FriendIdList.Split(',');
            foreach (string friend in friends)
            {
                if (string.IsNullOrEmpty(friend))
                {
                    continue;
                }

                int    id       = int.Parse(friend);
                string name     = PlayerManager.GetById(id).Name;
                bool   isOnline = Caches.Player.IsOnline(id);
                dtoPlayer.Friends.Add(new DtoFriend(id, name, isOnline));
            }
            return(dtoPlayer);
        }