示例#1
0
    public void ShowForFightAgain(FightAgainData againData)
    {
        // 构造friend, 取消邀请的时候要用
        friend           = new BriefRoleInfo();
        friend.player_id = againData.player_id;
        friend.zoneid    = againData.zoneid;
        // 构造matchEnemyData
        data = new MatchEnemyData();
        data.isFightAgain  = true;
        data.lastSeconds   = 0;
        data.expectSeconds = -1;
        data.isFriend      = true; // 这里要设置为true, 如果为false, 则取消的时候会发送取消匹配的协议
        data.friendName    = againData.name;
        data.matchType     = PvpMatchType.Entertainment;
        NetworkManager.Instance.AddMessageCallback((int)ZoneCmd.ZONE_PVP_1V1_ACCEPT_NTF, OnFightAgainAccept);
        InviteFightAgain(againData);

        NetworkManager.Instance.AddMessageCallback((int)ZoneCmd.ZONE_PVP_1V1_ENTER_GAME_NTF, MatchSuccNtf);
        NetworkManager.Instance.AddMessageCallback((int)ZoneCmdLua.ZONE_LUA_JDC_PVP_BAN_PICK_ROOM_MATCH_NTF, FightAgainBanMatchSuccNtf);
        NGUITools.SetActive(EstimatedContainer.gameObject, false);
        DescLabel.text   = "正在邀请 " + data.friendName + " 再来一战";
        CancelLabel.text = "取消邀请";
        NGUITools.SetActive(Button, false);
        BindingTargetHelper.AddListen(this);
    }
示例#2
0
    public override void OnInitData(object _data)
    {
        isExiting     = false;
        isMatchReturn = false;
        actData       = null;
        plugin        = KHPluginManager.Instance.GetPluginByName(PVPRealTimeMainUIPlugin.PluginName) as PVPRealTimeMainUIPlugin;
        model         = plugin.Model as PVPRealTimeMainUIModel;
        data          = _data as MatchEnemyData;

        /// _data可能有三种含义: MatchEnemyData(正常匹配), FightAgainData(与其再战), BriefRoleInfo(好友切磋)
        /// 这里写的太乱了, 有空的时候重构下
        FightAgainData againData = _data as FightAgainData;

        if (againData != null)
        {
            ShowForFightAgain(againData);
            return;
        }

        if (data == null)
        {
            friend = _data as BriefRoleInfo;
            if (friend == null)
            {
                // 用于活动主播接受队列某个玩家的挑战, 也是用邀请好友这一套
                actData = _data as MatchPvPAct;
                friend  = new BriefRoleInfo();

                friend.name = actData.name;
                ulong player_id = 0;
                ulong.TryParse(actData.player_id, out player_id);
                friend.player_id = player_id;
                friend.zoneid    = actData.zoneid;
            }
            data = new MatchEnemyData();
            data.isFightAgain  = false;
            data.lastSeconds   = 0;
            data.isFriend      = true;
            data.expectSeconds = -1;
            data.friendName    = friend.name;
            data.matchType     = PvpMatchType.Entertainment;
            NetworkManager.Instance.AddMessageCallback((int)ZoneCmd.ZONE_PVP_1V1_ACCEPT_NTF, OnFriendAccept);
            InviteFriend(friend);
        }
        else
        {
            SendMatchEnemyReq(data);
        }
        NetworkManager.Instance.AddMessageCallback((int)ZoneCmd.ZONE_PVP_1V1_ENTER_GAME_NTF, MatchSuccNtf);
        NetworkManager.Instance.AddMessageCallback((int)ZoneCmdLua.ZONE_LUA_JDC_PVP_BAN_PICK_ROOM_MATCH_NTF, BanMatchSuccNtf);
        if (!data.isFriend)
        {
            NGUITools.SetActive(EstimatedContainer.gameObject, false);
            //EstimatedTimeLabel.text = data.expectSeconds + "秒";
            DescLabel.text   = "正在寻找旗鼓相当的对手...";
            CancelLabel.text = "取消匹配";
            NGUITools.SetActive(Button, false);
        }
        else
        {
            NGUITools.SetActive(EstimatedContainer.gameObject, false);
            DescLabel.text   = "正在邀请 " + data.friendName + " 进行切磋";
            CancelLabel.text = "取消邀请";
            NGUITools.SetActive(Button, false);
        }
        BindingTargetHelper.AddListen(this);
    }
示例#3
0
    //先进界面再发请求,以防止未打开界面时,就已经匹配了。
    private void InviteFriend(object data)
    {
        BriefRoleInfo friend = data as BriefRoleInfo;
        var           req    = new ZonePvp1v1InviteReq();

        req.friend_gid  = friend.player_id;
        req.friend_zone = friend.zoneid;
        req.invite      = true;
        var friendModel = KHPluginManager.Instance.GetModel(PVPRealTimeFriendPlugin.PluginName) as PVPRealTimeFriendModel;

        if (actData != null)
        {
            req.pvp_type = actData.pvp_type;
        }
        else
        {
            req.pvp_type = friendModel.banMode ? 1u : 0u;
        }


        if (friendModel.platformFriendList.Contains(friend))
        {
            req.plat_friend = true;
        }
        else
        {
            req.plat_friend = false;
        }
        NetworkManager.Instance.Send <ZonePvp1v1InviteReq>((uint)ZoneCmd.ZONE_PVP_1V1_INVITE, req, (object fullInfo) =>
        {
            ZonePvp1v1InviteResp resp = fullInfo as ZonePvp1v1InviteResp;
            if (resp.ret_info.ret_code == 0)
            {
                isStarted = true;
                if (actData == null)
                {
                    NGUITools.SetActive(Button, true);
                }
            }
            else
            {
                ErrorCodeCenter.DefaultProcError(resp.ret_info);

                if (actData != null && actData.remain_times > 0)
                {
                    ActCenterPlugin plugin = KH.KHPluginManager.Instance.GetPluginByName(KH.Plugins.ActCenterPlugin.NAME) as KH.Plugins.ActCenterPlugin;
                    plugin.InvokeActFun((uint)actData.act_id, "ReqCmd7");
                }
                else
                {
                    _CloseWindow(null);
                }
            }
            if (resp.refresh)
            {
                var model = plugin.Model as PVPRealTimeMainUIModel;
                model.TriggerBinding("RefreshFriendList");
            }
        }, false, timeoutCallback => {
            UIAPI.ShowMsgTip("邀请好友比试超时");

            if (actData != null && actData.remain_times > 0)
            {
                ActCenterPlugin plugin = KH.KHPluginManager.Instance.GetPluginByName(KH.Plugins.ActCenterPlugin.NAME) as KH.Plugins.ActCenterPlugin;
                plugin.InvokeActFun((uint)actData.act_id, "ReqCmd7");
            }
            else
            {
                _CloseWindow(null);
            }
        });
    }