123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335 |
- ---@class KLFriendOperatePanel:UIKmlLuaPanelBase
- ---@field view KLFriendOperatePanelView
- ---@field friendInfo FriendProto.FriendInfo
- ---@field role UserProtos.RoleInfo
- ---@field uiType number @ 1:通用 2:组队
- local KLFriendOperatePanel = class(UIKmlLuaPanelBase)
- local this =KLFriendOperatePanel
- ---创建时调用一次
- function this:Init()
- if self.args.pos then
- GUI:SetWorldPosition(self.view.BgBor,self.args.pos.x,self.args.pos.y,self.args.pos.z)
- end
- self.rid = self.args.rid
- self.name = self.args.name
- self.role = nil
- self.uiType = self.args.uiType or 1
- GUI:setVisible(self.view.BtnGrid, false)
- if self.rid == SL:GetMetaValue(EMetaVarGetKey.UID) then
- self.isMe = true
- self:ResOtherRoleInfoMessage(nil, { type = 1, role = self.args.roleInfo })
- else
- self.isMe = false
- SL.Friend:ReqOtherRoleInfoMessage(self.rid, 1)
- end
- end
- ---创建或者刷新界面数据时调用
- function this:Refresh()
- end
- ---显示玩家数据
- ---@param friendInfo UserProtos.RoleInfo
- function this:ShowPlayInfo(friendInfo)
- GUI:Image_loadTexture(self.view.SpPlayer,"1"..friendInfo.career.baseCareer,"Atlas/MUIcon.spriteatlas")
- GUI:Text_setString(self.view.TxtLevel,"等级:"..friendInfo.level)
- ---@type cfg_career_column
- local careerTbl = SL:GetConfigMultiKeys("cfg_career", friendInfo.career.baseCareer
- , friendInfo.career.careerRank, "baseCareer", "careerRank")
- GUI:Text_setString(self.view.TxtCareer, careerTbl.name)
- GUI:Text_setString(self.view.TxtName, friendInfo.name)
- GUI:Text_setTextColor(self.view.TxtName,"#E6E600")
- GUI:Text_setString(self.view.TxtUnion,friendInfo.roleInfoExt.unionName.." "..EUnionPositionToName[friendInfo.roleInfoExt.position])
- end
- ---注册UI事件和服务器消息
- function this:RegistEvents()
- SL:RegisterLuaNetMsg(MessageDef.ResOtherRoleInfoMessage, self.ResOtherRoleInfoMessage, self)
- GUI:AddOnClickEvent(self.view.BtnViewPlayer, self, self.ShowPlayerEquips)
- GUI:AddOnClickEvent(self.view.BtnClose, self, self.CloseMe)
- GUI:AddOnClickEvent(self.view.BtnAddFriend, self, self.AddOrRemoveFriend, true)
- GUI:AddOnClickEvent(self.view.BtnDelFriend, self, self.AddOrRemoveFriend, false)
- GUI:AddOnClickEvent(self.view.BtnAddBlack, self, self.AddOrRemoveBlack, true)
- GUI:AddOnClickEvent(self.view.BtnRemoveBlack, self, self.AddOrRemoveBlack, false)
- GUI:AddOnClickEvent(self.view.BtnPrivateChat, self, self.PrivateChat)
- GUI:AddOnClickEvent(self.view.BtnUnionInvite, self, self.BtnUnionInvite)
- GUI:AddOnClickEvent(self.view.BtnUnionReq, self, self.BtnUnionReq)
- GUI:AddOnClickEvent(self.view.BtnTeamInvite, self, self.TeamInvite)
- GUI:AddOnClickEvent(self.view.BtnTeamReq, self, self.TeamReq)
- GUI:AddOnClickEvent(self.view.BtnTeamLeader, self, self.BtnTeamLeader)
- GUI:AddOnClickEvent(self.view.BtnTeamKickOff, self, self.BtnTeamKickOff)
- GUI:AddOnClickEvent(self.view.BtnLeaveTeam, self, self.BtnLeaveTeam)
- GUI:AddOnClickEvent(self.view.lockButton, self, self.ShowPlayerEquips)
- GUI:AddOnClickEvent(self.view.selectPlayerButton, self, self.OnClickSelectPlayerButton)
- GUI:AddOnClickEvent(self.view.reqPointButton, self, self.OnClickReqPointButton)
- GUI:AddOnClickEvent(self.view.joinButton, self, self.OnClickJoinTeamButton)
- GUI:AddOnClickEvent(self.view.BtnFlowerSend, self, self.OnClickSendFlower)
- end
- function this:OnClickSendFlower()
- GUI:UIPanel_Open("dev/outui/FriendSys/Panel/KLFriendFlowerSend/KLFriendFlowerSendPanel", nil, nil,
- {rid = self.rid})
- --SL:SendLuaNetMsg(LuaMessageIdToSever.FRIEND_SEND_FLOWERS, {61200001, self.rid})
- end
- function this:CloseMe()
- if self.uiType == 2 then
- SL:onLUAEvent(Event.CloseTeamTipsUI)
- end
- GUI:UIPanel_Close(self.filePath)
- end
- ---选择玩家
- function this:OnClickSelectPlayerButton()
- SL:OpenBossHp(self.rid)
- self:CloseMe()
- end
- ---发送位置
- function this:OnClickReqPointButton()
- local x = SL:MeData_GetCoord().x
- local y = SL:MeData_GetCoord().z
- local mapId = SL:GetMetaValue(EMetaVarGetKey.MAP_ID)
- local line = SL:GetMetaValue(EMetaVarGetKey.MAP_LINE)
- local posStr = string.format("pos@%s,%s,%s,%s@",x,y,mapId,line)
- SL:SendChat(7,posStr,nil,nil)
- self:CloseMe()
- end
- ---加入队伍
- function this:OnClickJoinTeamButton()
- if self.otherPlayerTeamId and self.otherPlayerTeamId > 0 then
- SL:RequestApplyAgree(self.otherPlayerTeamId)
- self:CloseMe()
- end
- end
- function this:ShowPlayerEquips()
- --角色装备信息
- GUI:UIPanel_Open("dev/ui/Equip/Panel/KLEquipUI/KLEquipUIPanel", _, _, {
- isOther = true,
- rid = self.rid,
- x = 0,
- isHideMainUI = self.args.isHideMainUI
- })
- self:CloseMe()
- end
- --添加或删除好友
- function this:AddOrRemoveFriend(_, isAdd)
- if isAdd then
- SL:AddFriend(self.rid)
- else
- SL:DelFriend(self.rid)
- end
- self:CloseMe()
- end
- --添加或移除黑名单
- function this:AddOrRemoveBlack(_, isAdd)
- if isAdd then
- SL:AddBlackList(self.rid)
- else
- SL:DelBlackList(self.rid)
- end
- self:CloseMe()
- end
- --私聊
- function this:PrivateChat()
- GUI:UIPanel_Close("dev/ui/FriendSys/Panel/KLFriendMain/KLFriendMainPanel")
- SL:CloseChatUI()
- SL:OpenChatUI({channel=8,rid=self.rid,name=self.name,isHide=self.isHideMainPanel or self.args.isHideMainUI})
- self:CloseMe()
- end
- --邀请加入战盟
- function this:BtnUnionInvite()
-
- end
- --申请加入战盟
- function this:BtnUnionReq()
-
- end
- --邀请入队
- function this:TeamInvite()
- if self.role then
- if SL:MeData_GetTeamId() == 0 then
- SL:TipMessage(SL:GetConfig('cfg_string',22).text, 1, NoticeType.NoticeMid)--请先创建队伍
- return
- end
- --local isFriend = SL:CheckIsFriend(self.rid)
- if self.role.roleInfoExt.unionId ~= 0 and self.role.roleInfoExt.unionId == SL:MeData_GetUnionId() then
- SL:ReqSendTeamInvitation(self.rid, 3)
- else
- SL:ReqSendTeamInvitation(self.rid)
- end
- self:CloseMe()
- end
- end
- --申请入队
- function this:TeamReq()
- if self.role and self.role.roleInfoExt.teamId > 0 then
- SL:RequestApplyAgree(self.role.roleInfoExt.teamId)
- self:CloseMe()
- end
- end
- ---升为队长
- function this:BtnTeamLeader()
- SL:ReqChangeCaptain(self.rid)
- self:CloseMe()
- end
- ---踢出队伍
- function this:BtnTeamKickOff()
- SL:ReqKickOutMember(self.rid)
- self:CloseMe()
- end
- ---离开队伍
- function this:BtnLeaveTeam()
- SL:ReqQuitTeam()
- self:CloseMe()
- end
- ---@param message UserProtos.OtherRoleInfoRes
- function this:ResOtherRoleInfoMessage(id, message)
- self:HideAllButton()
- self.isHideMainPanel = false
- if message.type == 1 and self.rid == message.role.rid then
- self.role = message.role
- self.name = message.role.name
- --角色基本信息
- self:ShowPlayInfo(message.role)
- local rid = message.role.rid
- if self.uiType == 1 then
- --查看装备
- GUI:setVisible(self.view.BtnViewPlayer, true)
- --私聊
- GUI:SetActive(self.view.BtnPrivateChat,true)
- --黑名单
- local inBlack = SL:CheckIsInBlackList(rid)
- if inBlack then
- GUI:setVisible(self.view.BtnRemoveBlack, true)
- else
- GUI:setVisible(self.view.BtnAddBlack, true)
- end
- --好友
- local isFriend = SL:CheckIsFriend(rid)
- if isFriend then
- GUI:setVisible(self.view.BtnDelFriend, true)
- else
- --不是好友且不在黑名单,才显示添加好友
- if not inBlack then
- GUI:setVisible(self.view.BtnAddFriend, true)
- end
- end
- --战盟
- local inUnion = not string.isNullOrEmpty(message.role.roleInfoExt.unionName)
- local meInUnion = not string.isNullOrEmpty(SL:GetMetaValue(EMetaVarGetKey.UNION_NAME))
- if inUnion then
- --对方已有战盟
- --GUI:setVisible(self.view.BtnUnionReq, true)
- elseif not inUnion and meInUnion then
- --对方无战盟 我有战盟 显示战盟邀请
- --GUI:setVisible(self.view.BtnUnionInvite, true)
- end
- --队伍
- local inTeam = message.role.roleInfoExt.teamId > 0
- local meInTeam = SL:MeData_GetTeamId() > 0
- if inTeam and not meInTeam then
- --对方已组队且我无队伍
- GUI:setVisible(self.view.BtnTeamReq, true)
- elseif meInTeam then
- if inTeam then
- --对方有队伍且不是跟我同队
- GUI:setVisible(self.view.BtnTeamInvite, message.role.roleInfoExt.teamId ~= SL:MeData_GetTeamId())
- else
- --我有队伍皆显示邀请组队
- GUI:setVisible(self.view.BtnTeamInvite, true)
- end
- end
- elseif self.uiType == 2 then
- self.isHideMainPanel = true
- local leaderId, teamId
- if self.isMe then
- leaderId = SL:TeamInfo_GetLeaderId()
- teamId = SL:TeamInfo_GetTeamId()
- else
- teamId = message.role.roleInfoExt.teamId
- if teamId == SL:MeData_GetTeamId() and teamId ~= 0 then
- leaderId = SL:TeamInfo_GetLeaderId()
- end
- end
- if SL:MeData_GetTeamId() > 0 then
- --是自己
- if self.rid == SL:GetMetaValue(EMetaVarGetKey.UID) then
- GUI:SetActive(self.view.BtnLeaveTeam,true)
- GUI:SetActive(self.view.reqPointButton,true)
- return
- end
- if teamId == SL:MeData_GetTeamId() then
- --队长点击队员
- if leaderId and leaderId == SL:GetMetaValue(EMetaVarGetKey.UID) then
- GUI:SetActive(self.view.BtnTeamKickOff,true)
- GUI:SetActive(self.view.BtnTeamLeader,true)
- GUI:SetActive(self.view.BtnPrivateChat,true)
- GUI:SetActive(self.view.lockButton,true)
- GUI:SetActive(self.view.selectPlayerButton,true)
- return
- else
- GUI:SetActive(self.view.lockButton,true)
- GUI:SetActive(self.view.selectPlayerButton,true)
- GUI:SetActive(self.view.BtnPrivateChat,true)
- return
- end
- else
- --不同队伍邀请玩家
- GUI:SetActive(self.view.BtnTeamInvite,true)
- GUI:SetActive(self.view.lockButton,true)
- GUI:SetActive(self.view.BtnPrivateChat,true)
- return
- end
- end
- self.otherPlayerTeamId = teamId
- GUI:SetActive(self.view.joinButton,teamId > 0)
- GUI:SetActive(self.view.lockButton,true)
- GUI:SetActive(self.view.BtnPrivateChat,true)
- end
- end
- end
- ---隐藏所有按钮
- function this:HideAllButton()
- GUI:setVisible(self.view.BtnGrid, true)
- GUI:setVisible(self.view.BtnViewPlayer, false)
- GUI:setVisible(self.view.BtnUnionInvite, false)
- GUI:setVisible(self.view.BtnAddFriend, false)
- GUI:setVisible(self.view.BtnDelFriend, false)
- GUI:setVisible(self.view.BtnUnionReq, false)
- GUI:setVisible(self.view.BtnPrivateChat, false)
- GUI:setVisible(self.view.BtnAddBlack, false)
- GUI:setVisible(self.view.BtnRemoveBlack, false)
- GUI:setVisible(self.view.BtnTeamInvite, false)
- GUI:setVisible(self.view.BtnTeamReq, false)
- GUI:setVisible(self.view.BtnTeamLeader, false)
- GUI:setVisible(self.view.BtnTeamKickOff, false)
- GUI:setVisible(self.view.BtnLeaveTeam, false)
- GUI:setVisible(self.view.lockButton, false)
- GUI:setVisible(self.view.selectPlayerButton, false)
- GUI:setVisible(self.view.reqPointButton, false)
- GUI:setVisible(self.view.joinButton, false)
- end
- function this:Close()
- end
- return this
|