private void InviteFightAgain(object data) { FightAgainData againData = data as FightAgainData; var req = new ZonePvp1v1InviteReq(); req.friend_gid = againData.player_id; req.friend_zone = againData.zoneid; req.invite = true; req.plat_friend = false; req.fight_again = true; req.pvp_type = againData.pvp_type; 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; } else { ErrorCodeCenter.DefaultProcError(resp.ret_info); _CloseWindow(null); } }, false, timeoutCallback => { UIAPI.ShowMsgTip("邀请再来一战超时"); _CloseWindow(null); }); }
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); }
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); }