forked from endernon/PGRData
393 lines
No EOL
14 KiB
Lua
393 lines
No EOL
14 KiB
Lua
local XUiPlayerInfo = XLuaUiManager.Register(XLuaUi, "UiPlayerInfo")
|
|
|
|
function XUiPlayerInfo:OnStart(data, chatContent, isOpenFromSetting)
|
|
self.Data = data
|
|
self.ChatContent = chatContent
|
|
self.IsOpenFromSetting = isOpenFromSetting --是否从设置预览进入
|
|
self.Tab = {
|
|
BaseInfo = 1,
|
|
FightInfo = 2,
|
|
AppearanceInfo = 3,
|
|
}
|
|
--ButtonCallBack
|
|
self.BtnChat.CallBack = function() self:OnBtnChat() end
|
|
self.BtnAddFriend.CallBack = function() self:OnBtnAddFriend() end
|
|
self.BtnReport.CallBack = function() self:OnBtnReport() end
|
|
self.BtnClose.CallBack = function() self:OnBtnClose() end
|
|
self.BtnReplace.CallBack = function() self:OnBtnReplaceClick() end
|
|
self.BtnOut.CallBack = function() self:OnBtnOutClick() end
|
|
self.BtnRequestGuild.CallBack = function() self:OnBtnRequestGuildClick() end
|
|
self.BtnInviteGuild.CallBack = function() self:OnBtnInviteGuildClick() end
|
|
self.BtnBuildMentorships.CallBack = function() self:OnBtnBuildMentorshipsClick() end
|
|
self.BtnDisconnect.CallBack = function() self:OnBtnDisconnectClick() end
|
|
self.BtnGraduation.CallBack = function() self:OnBtnDisconnectClick() end
|
|
self.BtnBlock.CallBack = function() self:OnBtnBlockClick() end
|
|
|
|
self.PanelBaseInfo = nil
|
|
self.PanelFightInfo = nil
|
|
self.PanelAppearanceInfo = nil
|
|
self.TabPanels = {}
|
|
--self.TabGroup:Init({ self.BtnBaseInfo, self.BtnFightInfo, self.BtnAppearance }, function(index) self:OnTabGroupClick(index) end)
|
|
--self.TabGroup:SelectIndex(self.Tab.BaseInfo)
|
|
self.BtnBaseInfo:SetDisable(true)
|
|
self.BtnFightInfo:SetDisable(true)
|
|
self.BtnAppearance:SetDisable(true)
|
|
self:UpdateInfo(self.Tab.BaseInfo)
|
|
end
|
|
|
|
function XUiPlayerInfo:OnDestroy()
|
|
if self.PanelBaseInfo then
|
|
self.PanelBaseInfo:Destroy()
|
|
end
|
|
end
|
|
|
|
function XUiPlayerInfo:OnTabGroupClick(index)
|
|
--功能未完成,暂时屏蔽
|
|
if index == self.Tab.FightInfo or index == self.Tab.AppearanceInfo then
|
|
XUiManager.TipText("CommonNotOpen")
|
|
return
|
|
end
|
|
self:UpdateInfo(index)
|
|
end
|
|
|
|
function XUiPlayerInfo:OnBtnChat()
|
|
-- 联机中不给跳转,防止跳出联机房间
|
|
local unionFightData = XDataCenter.FubenUnionKillRoomManager.GetUnionRoomData()
|
|
if unionFightData and unionFightData.Id then
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("UnionCantLeaveRoom"))
|
|
return
|
|
end
|
|
|
|
XUiHelper.CloseUiChatServeMain()
|
|
|
|
if XLuaUiManager.IsUiShow("UiSocial") then
|
|
XLuaUiManager.CloseWithCallback("UiPlayerInfo", function()
|
|
XEventManager.DispatchEvent(XEventId.EVENT_FRIEND_OPEN_PRIVATE_VIEW, self.Data.Id)
|
|
end)
|
|
else
|
|
XLuaUiManager.Open("UiSocial", function()
|
|
XEventManager.DispatchEvent(XEventId.EVENT_FRIEND_OPEN_PRIVATE_VIEW, self.Data.Id)
|
|
end)
|
|
end
|
|
end
|
|
|
|
function XUiPlayerInfo:OnBtnAddFriend()
|
|
XDataCenter.SocialManager.ApplyFriend(self.Data.Id)
|
|
end
|
|
|
|
function XUiPlayerInfo:OnBtnReport()
|
|
local data = { Id = self.Data.Id, TitleName = self.Data.Name, PlayerLevel = self.Data.Level, PlayerIntroduction = self.Data.Sign }
|
|
XLuaUiManager.Open("UiReport", data, self.ChatContent)
|
|
end
|
|
|
|
function XUiPlayerInfo:OnBtnClose()
|
|
self:Close()
|
|
end
|
|
|
|
function XUiPlayerInfo:UpdateInfo(index)
|
|
if self.Data.Id == XPlayer.Id then
|
|
self.BtnAddFriend.gameObject:SetActiveEx(false)
|
|
self.BtnChat.gameObject:SetActiveEx(false)
|
|
self.BtnReport.gameObject:SetActiveEx(false)
|
|
self.Mask.gameObject:SetActiveEx(false)
|
|
self.BtnBlock.gameObject:SetActiveEx(false)
|
|
elseif XDataCenter.SocialManager.CheckIsFriend(self.Data.Id) then
|
|
self.BtnAddFriend.gameObject:SetActiveEx(false)
|
|
self.BtnChat.gameObject:SetActiveEx(true)
|
|
self.BtnReport.gameObject:SetActiveEx(true)
|
|
self.Mask.gameObject:SetActiveEx(true)
|
|
self.BtnBlock.gameObject:SetActiveEx(true)
|
|
else
|
|
self.BtnAddFriend.gameObject:SetActiveEx(true)
|
|
self.BtnChat.gameObject:SetActiveEx(false)
|
|
self.BtnReport.gameObject:SetActiveEx(true)
|
|
self.Mask.gameObject:SetActiveEx(true)
|
|
self.BtnBlock.gameObject:SetActiveEx(true)
|
|
end
|
|
|
|
if index == self.Tab.BaseInfo then
|
|
if not self.PanelBaseInfo then
|
|
local obj = CS.UnityEngine.Object.Instantiate(self.Obj:GetPrefab("PlayerInfoBase"))
|
|
obj.transform:SetParent(self.PanelContent, false)
|
|
self.PanelBaseInfo = XUiPlayerInfoBase.New(obj, self)
|
|
self.TabPanels[index] = self.PanelBaseInfo
|
|
self.TabPanels[index].Type = self.Tab.BaseInfo
|
|
else
|
|
self.PanelBaseInfo:UpdateInfo()
|
|
end
|
|
self:UpdateGuildInfo()
|
|
elseif index == self.Tab.FightInfo then
|
|
if not self.PanelFightInfo then
|
|
local obj = CS.UnityEngine.Object.Instantiate(self.Obj:GetPrefab("PlayerInfoFight"))
|
|
obj.transform:SetParent(self.PanelContent, false)
|
|
self.PanelFightInfo = XUiPlayerInfoFight.New(obj, self)
|
|
self.TabPanels[index] = self.PanelFightInfo
|
|
self.TabPanels[index].Type = self.Tab.FightInfo
|
|
else
|
|
self.PanelFightInfo:UpdateInfo()
|
|
end
|
|
elseif index == self.Tab.AppearanceInfo then
|
|
if not self.PanelAppearanceInfo then
|
|
local obj = CS.UnityEngine.Object.Instantiate(self.Obj:GetPrefab("PlayerInfoAppearance"))
|
|
obj.transform:SetParent(self.PanelContent, false)
|
|
self.PanelAppearanceInfo = XUiPlayerInfoAppearance.New(obj, self)
|
|
self.TabPanels[index] = self.PanelAppearanceInfo
|
|
self.TabPanels[index].Type = self.Tab.AppearanceInfo
|
|
else
|
|
self.PanelAppearanceInfo:UpdateInfo()
|
|
end
|
|
end
|
|
self:UpdateMentorInfo()
|
|
self:ActivePanel(index)
|
|
end
|
|
|
|
function XUiPlayerInfo:UpdateGuildInfo()
|
|
-- 如果自己有公会
|
|
--查看一个有公会的玩家
|
|
-- 同一个公会 :管理级别以上:更换职位、踢出公会
|
|
-- 不同公会 :都不显示
|
|
--查看一个没有公会的玩家 :管理级别以上:邀请入会
|
|
-- 如果自己没有公会
|
|
--查看一个有公会的玩家 :申请入会
|
|
--查看一个没有公会的玩家 :都不显示
|
|
self:ResetGuildBtns()
|
|
if not self.Data then return end
|
|
if not XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.Guild, false, true) then
|
|
self.BtnRequestGuild.gameObject:SetActiveEx(false)
|
|
return
|
|
end
|
|
local targetGuildId = self.Data.GuildDetail and self.Data.GuildDetail.GuildId
|
|
local targetRankLevel = self.Data.GuildDetail and self.Data.GuildDetail.GuildRankLevel
|
|
|
|
if self.Data.Id == XPlayer.Id then return end
|
|
|
|
if XDataCenter.GuildManager.IsJoinGuild() then
|
|
local isAdministor = XDataCenter.GuildManager.IsGuildAdminister()
|
|
local myRankLevel = XDataCenter.GuildManager.GetCurRankLevel()
|
|
if XDataCenter.GuildManager.CheckMemberOperatePermission(self.Data.Id) then
|
|
self.BtnOut.gameObject:SetActiveEx(true)
|
|
self.BtnReplace.gameObject:SetActiveEx(true)
|
|
else
|
|
if isAdministor then
|
|
self.BtnInviteGuild.gameObject:SetActiveEx(true)
|
|
end
|
|
end
|
|
else
|
|
if targetGuildId ~= nil and targetGuildId > 0 then
|
|
self.BtnRequestGuild.gameObject:SetActiveEx(true)
|
|
end
|
|
end
|
|
end
|
|
|
|
function XUiPlayerInfo:UpdateMentorInfo()
|
|
local mentorData = XDataCenter.MentorSystemManager.GetMentorData()
|
|
local IsSelf = self.Data.Id == XPlayer.Id
|
|
local IsMyMentorShip = mentorData:IsMyMentorShip(self.Data.Id)
|
|
local IdentityType = self.Data.MentorDetail and self.Data.MentorDetail.MentorType or XMentorSystemConfigs.IdentityType.None
|
|
local IsSameIdentity = IdentityType == mentorData:GetIdentity()
|
|
local IsCanShow = not IsSelf and not IsSameIdentity and IdentityType ~= XMentorSystemConfigs.IdentityType.None
|
|
local IsCanGraduatLevel = self:CheckIsCanGraduatLevel(mentorData)
|
|
self.BtnBuildMentorships.gameObject:SetActiveEx(IsCanShow and not IsMyMentorShip)
|
|
self.BtnDisconnect.gameObject:SetActiveEx((not IsCanGraduatLevel) and IsCanShow and IsMyMentorShip)
|
|
self.BtnGraduation.gameObject:SetActiveEx(IsCanGraduatLevel and IsCanShow and IsMyMentorShip)
|
|
end
|
|
|
|
function XUiPlayerInfo:ResetGuildBtns()
|
|
self.BtnRequestGuild.gameObject:SetActiveEx(false)
|
|
self.BtnInviteGuild.gameObject:SetActiveEx(false)
|
|
self.BtnOut.gameObject:SetActiveEx(false)
|
|
self.BtnReplace.gameObject:SetActiveEx(false)
|
|
end
|
|
|
|
function XUiPlayerInfo:HasModifyGuildAccess()
|
|
if not XDataCenter.GuildManager.IsGuildAdminister() then
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("GuildNotAdministor"))
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
function XUiPlayerInfo:ChecGuildKickOut()
|
|
if not XDataCenter.GuildManager.IsJoinGuild() then
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("GuildKickOutByAdministor"))
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
function XUiPlayerInfo:OnBtnReplaceClick()
|
|
-- 中途被踢出公会
|
|
if self:ChecGuildKickOut() then return end
|
|
-- 职位变更
|
|
if self:HasModifyGuildAccess() then return end
|
|
-- 是否有更换职位的权利
|
|
local memberList = XDataCenter.GuildManager.GetMemberList()
|
|
local memberInfo = memberList[self.Data.Id]
|
|
if memberInfo then
|
|
XLuaUiManager.Open("UiGuildChangePosition", XGuildConfig.TipsType.ChangePosition, memberInfo)
|
|
end
|
|
end
|
|
|
|
function XUiPlayerInfo:OnBtnOutClick()
|
|
-- 中途被踢出公会
|
|
if self:ChecGuildKickOut() then return end
|
|
-- 职位变更
|
|
if self:HasModifyGuildAccess() then return end
|
|
|
|
local title = CS.XTextManager.GetText("GuildDialogTitle")
|
|
local content = CS.XTextManager.GetText("GuildIsKickMember")
|
|
|
|
XUiManager.DialogTip(title, content, XUiManager.DialogType.Normal, function()
|
|
end, function()
|
|
XDataCenter.GuildManager.GuildKickMember(self.Data.Id, function()
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("GuildKickMemberSuccess"))
|
|
self:Close()
|
|
end)
|
|
end)
|
|
end
|
|
|
|
-- 申请入会
|
|
function XUiPlayerInfo:OnBtnRequestGuildClick()
|
|
if not self.Data then return end
|
|
if self.Data.GuildDetail and self.Data.GuildDetail.GuildId and self.Data.GuildDetail.GuildId > 0 then
|
|
XDataCenter.GuildManager.ApplyToJoinGuildRequest(self.Data.GuildDetail.GuildId, function()
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("GuildApplyRequestSuccess"))
|
|
self:Close()
|
|
end)
|
|
end
|
|
end
|
|
|
|
-- 邀请入会
|
|
function XUiPlayerInfo:OnBtnInviteGuildClick()
|
|
if not self.Data then return end
|
|
-- 中途被踢出公会
|
|
if self:ChecGuildKickOut() then return end
|
|
-- 职位变更
|
|
if self:HasModifyGuildAccess() then return end
|
|
|
|
XDataCenter.GuildManager.GuildRecruit(self.Data.Id, function()
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("GuildSendRequestSuccess"))
|
|
self:Close()
|
|
end, true)
|
|
end
|
|
|
|
-- 缔结师徒关系
|
|
function XUiPlayerInfo:OnBtnBuildMentorshipsClick()
|
|
if not self.Data then return end
|
|
|
|
local mentorData = XDataCenter.MentorSystemManager.GetMentorData()
|
|
local IsCanGraduatLevel = self:CheckIsCanGraduatLevel(mentorData)
|
|
local hintStr = ""
|
|
|
|
if not mentorData:IsCanDoApply(true) then
|
|
return
|
|
else
|
|
if mentorData:IsTeacher() then
|
|
local IsHasTeacher = self.Data.MentorDetail.MentorId and self.Data.MentorDetail.MentorId > 0
|
|
if IsHasTeacher then
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("MentorDoApplyTeachaeMaxHint"))
|
|
return
|
|
end
|
|
if IsCanGraduatLevel then
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("MentorDoApplyLevelOverHint"))
|
|
return
|
|
end
|
|
end
|
|
end
|
|
|
|
XDataCenter.MentorSystemManager.ApplyMentorRequest({ self.Data.Id }, function()
|
|
XUiManager.TipText("MentorShipBuildSendHint")
|
|
self:Close()
|
|
end)
|
|
end
|
|
|
|
-- 解除师徒关系
|
|
function XUiPlayerInfo:OnBtnDisconnectClick()
|
|
if not self.Data then return end
|
|
local hintStr = ""
|
|
local mentorData = XDataCenter.MentorSystemManager.GetMentorData()
|
|
local lastLoginTime = mentorData:GetMenberLastLoginTimeById(self.Data.Id)
|
|
local IsOverTime = XDataCenter.MentorSystemManager.JudgeFailPassTime(lastLoginTime)
|
|
|
|
local IsCanGraduatLevel = self:CheckIsCanGraduatLevel(mentorData)
|
|
if IsCanGraduatLevel then
|
|
if IsOverTime then
|
|
hintStr = "MentorDoGraduateFailPassHint"
|
|
else
|
|
hintStr = "MentorDoGraduateHint"
|
|
end
|
|
else
|
|
if IsOverTime then
|
|
hintStr = "MentorDoMentorShipDisconnectFailPassHint"
|
|
else
|
|
hintStr = "MentorDoMentorShipDisconnectHint"
|
|
end
|
|
end
|
|
self:TipDialog(nil, function()
|
|
XDataCenter.MentorSystemManager.TickMentorRequest(self.Data.Id, function()
|
|
XUiManager.TipText("MentorShipDisconnectHint")
|
|
self:Close()
|
|
end)
|
|
end, hintStr)
|
|
end
|
|
|
|
--拉黑
|
|
function XUiPlayerInfo:OnBtnBlockClick()
|
|
if not XFunctionManager.JudgeCanOpen(XFunctionManager.FunctionName.SocialFriend) then
|
|
XUiManager.TipText("FunctionNotOpen")
|
|
return
|
|
end
|
|
|
|
if XDataCenter.SocialManager.GetBlackData(self.Data.Id) then
|
|
XUiManager.TipText("SocialBlackEnterOver")
|
|
return
|
|
end
|
|
|
|
local content = CS.XTextManager.GetText("SocialBlackTipsDesc")
|
|
local sureCallback = function()
|
|
local cb = function()
|
|
self:UpdateInfo(self.Tab.BaseInfo)
|
|
end
|
|
XDataCenter.SocialManager.RequestBlackPlayer(self.Data.Id, cb)
|
|
end
|
|
XUiManager.DialogTip(nil, content, XUiManager.DialogType.Normal, nil, sureCallback)
|
|
end
|
|
|
|
function XUiPlayerInfo:CheckIsCanGraduatLevel(mentorData)
|
|
local IsCanGraduatLevel = false
|
|
if mentorData:IsTeacher() then
|
|
IsCanGraduatLevel = self.Data.Level >= XMentorSystemConfigs.GetMentorSystemData("GraduateLv")
|
|
elseif mentorData:IsStudent() then
|
|
IsCanGraduatLevel = XPlayer.Level >= XMentorSystemConfigs.GetMentorSystemData("GraduateLv")
|
|
end
|
|
return IsCanGraduatLevel
|
|
end
|
|
|
|
function XUiPlayerInfo:SetGameObjActive(obj, active)
|
|
if obj then
|
|
obj.GameObject:SetActiveEx(active)
|
|
end
|
|
end
|
|
|
|
function XUiPlayerInfo:ActivePanel(index)
|
|
for _, v in pairs(self.TabPanels) do
|
|
if v.Type == index then
|
|
v.GameObject:SetActiveEx(true)
|
|
else
|
|
v.GameObject:SetActiveEx(false)
|
|
end
|
|
end
|
|
end
|
|
|
|
function XUiPlayerInfo:TipDialog(cancelCb, confirmCb, TextKey)
|
|
XLuaUiManager.Open("UiDialog", CS.XTextManager.GetText("TipTitle"), CS.XTextManager.GetText(TextKey),
|
|
XUiManager.DialogType.Normal, cancelCb, confirmCb)
|
|
end
|
|
|
|
function XUiPlayerInfo:OnEnable()
|
|
|
|
end
|
|
|
|
function XUiPlayerInfo:OnDisable()
|
|
|
|
end |