Example #1
0
    private void SendMatchEnemyReq(object data)
    {
        PVPRealTimeMainUIModel.MatchType = PVPMatchType.Enemy;
        MatchEnemyData     tmpData = data as MatchEnemyData;
        ZonePvp1v1MatchReq req     = new ZonePvp1v1MatchReq();
        int state = KHUtil.GetInt(UISettingMoreView.OnlyReal, 0);

        req.only_real_player = state == 1;
        NetworkManager.Instance.Send((uint)ZoneCmd.ZONE_PVP_1V1_MATCH, req, (object fullInfo) => {
            ZonePvp1v1MatchResp resp = fullInfo as ZonePvp1v1MatchResp;
            if (resp.ret_info.ret_code == 0)
            {
                tmpData.expectSeconds   = (int)resp.expect_wait_second;
                EstimatedTimeLabel.text = tmpData.expectSeconds + "秒";
                NGUITools.SetActive(EstimatedContainer.gameObject, true);
                isStarted = true;
            }
            else
            {
                ErrorCodeCenter.DefaultProcError(resp.ret_info);
                _CloseWindow(null);
            }
        }, false, onTimeout => {
            UIAPI.ShowMsgTip("匹配请求超时");
            _CloseWindow(null);
        });
    }
Example #2
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);
    }
Example #3
0
    private void OnDisable()
    {
        if (data.isFriend)
        {
            NetworkManager.Instance.RemoveMessageCallback((int)ZoneCmd.ZONE_PVP_1V1_ACCEPT_NTF, OnFriendAccept);
        }
        data = null;
        NetworkManager.Instance.RemoveMessageCallback((int)ZoneCmd.ZONE_PVP_1V1_ENTER_GAME_NTF, MatchSuccNtf);
        NetworkManager.Instance.RemoveMessageCallback((int)ZoneCmdLua.ZONE_LUA_JDC_PVP_BAN_PICK_ROOM_MATCH_NTF, BanMatchSuccNtf);
        NetworkManager.Instance.RemoveMessageCallback((int)ZoneCmdLua.ZONE_LUA_JDC_PVP_BAN_PICK_ROOM_MATCH_NTF, FightAgainBanMatchSuccNtf);

        BindingTargetHelper.RemoveListen(this);
        isStarted = false;
    }
Example #4
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);
    }