972 lines
36 KiB
Lua
972 lines
36 KiB
Lua
MyGuildManager = {}
|
|
local this = MyGuildManager
|
|
local guildSacrificeRewardConfig=ConfigManager.GetConfig(ConfigName.GuildSacrificeRewardConfig)
|
|
local guildHelpConfig=ConfigManager.GetConfig(ConfigName.GuildHelpConfig)
|
|
this.exploreNums = {}
|
|
function this.Initialize()
|
|
this.MyGuildInfo = nil
|
|
this.MyMemInfo = nil
|
|
this.MyGuildMemList = {}
|
|
this.MyGuildApplyList = {}
|
|
this.MyGuildLogList = {}
|
|
this._MemWalkData = {}
|
|
this.MyFeteInfo={}
|
|
this.MyGuidRedPackage={}
|
|
this.PackageNum=0
|
|
end
|
|
|
|
-- 登录初始化数据
|
|
function MyGuildManager.InitBaseData(func)
|
|
if PlayerManager.familyId == 0 then
|
|
if func then func() end
|
|
return
|
|
end
|
|
NetManager.RequestMyGuildInfo(func)
|
|
end
|
|
|
|
-- 初始化所有数据
|
|
function MyGuildManager.InitAllData(func)
|
|
if PlayerManager.familyId == 0 then
|
|
if func then func() end
|
|
return
|
|
end
|
|
-- 有公会刷新一遍数据
|
|
local step = 0
|
|
local function _StepFunc()
|
|
step = step + 1
|
|
if step == 2 then
|
|
if func then func() end
|
|
end
|
|
end
|
|
NetManager.RequestMyGuildInfo(_StepFunc)
|
|
this.RequestMyGuildMembers(_StepFunc)
|
|
-- GuildFightManager.InitData(_StepFunc)
|
|
end
|
|
|
|
-- 设置我的公会信息
|
|
function MyGuildManager.SetMyGuildInfo(msg)
|
|
-- 公会信息
|
|
this.MyGuildInfo = msg.familyBaseInfo
|
|
this.MyFeteInfo.score= this.MyGuildInfo.fete --登录时的奖励进度信息 后续数据刷新由MyGuildManager.MyFeteInfo.score操作
|
|
--Log("我的公会ID:"..this.MyGuildInfo.id)
|
|
if this.MyGuildInfo.id then
|
|
MyGuildManager.SetMyGuildExploreNums(this.MyGuildInfo.id,this.MyGuildInfo.exploreTimes)
|
|
PlayerManager.familyId = this.MyGuildInfo.id
|
|
end
|
|
-- 发送数据更新事件
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.DataUpdate)
|
|
end
|
|
|
|
-- 设置我的公会信息
|
|
function MyGuildManager.SetMyMemInfo(msg)
|
|
-- 成员数据
|
|
this.MyMemInfo = msg.familyUserInfo
|
|
for i = 1, #this.MyMemInfo do
|
|
this.MyMemInfo[i].userName = PracticeManager.SetNameColor(msg.familyUserInfo[i].userName,msg.familyUserInfo[i].practiceLevel)
|
|
end
|
|
-- 发送数据更新事件
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.DataUpdate)
|
|
end
|
|
|
|
--设置我的祭祀信息
|
|
function MyGuildManager.SetMyFeteInfo(msg)
|
|
this.MyFeteInfo.takeFeteReward=msg.familyUserInfo.takeFeteReward --祭祀领取进度
|
|
this.MyFeteInfo.lastFeteGuildId=msg.familyUserInfo.lastFeteGuildId --上次祭祀公会id
|
|
this.MyFeteInfo.lastFeteType=msg.familyUserInfo.lastFeteType --上次祭祀类型 //每日清除 5点推送
|
|
end
|
|
--设置祭祀 进度信息
|
|
function MyGuildManager.SetMyFeteInfo_ByScore(msg)
|
|
this.MyFeteInfo.score=msg.score
|
|
end
|
|
--设置祭祀5点刷新 数据重置
|
|
function MyGuildManager.SetMyFeteInfo_FiveRefresh(msg)
|
|
this.MyFeteInfo.takeFeteReward=msg.takeFeteReward
|
|
this.MyFeteInfo.lastFeteType=msg.lastFeteType
|
|
end
|
|
|
|
|
|
---============================ 行走相关======================================
|
|
-- 请求行走
|
|
function MyGuildManager.RequestWalk(pathlist, func)
|
|
NetManager.GuildWalkRequest(pathlist, func)
|
|
end
|
|
-- 设置公会中玩家得行走数据
|
|
function MyGuildManager.SetWalkData(msg)
|
|
this._MemWalkData = {}
|
|
----Log("==============公会行走数据初始化")
|
|
for i, data in ipairs(msg.familyWalkIndicaiton) do
|
|
----Log("uid = "..data.uid..", name = "..data.name..", 当前位置 = "..data.curPos)
|
|
this._MemWalkData[data.uid] = data
|
|
end
|
|
----Log("==============公会行走数据初始化")
|
|
end
|
|
-- 更新行走数据
|
|
function MyGuildManager.UpdateWalkData(msg)
|
|
if not this._MemWalkData then
|
|
this._MemWalkData = {}
|
|
end
|
|
this._MemWalkData[msg.uid] = msg
|
|
----Log("#NAME?")
|
|
--Log("uid = "..msg.uid..", name = "..msg.name..", 当前位置 = "..msg.curPos)
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.WalkUpdate, msg)
|
|
end
|
|
-- 获取所有行走数据
|
|
function MyGuildManager.GetMemWalkData()
|
|
return this._MemWalkData
|
|
end
|
|
-- 获取某个成员得行走数据
|
|
function MyGuildManager.GetMemWalkDataById(uid)
|
|
return this._MemWalkData[uid]
|
|
end
|
|
---============================ 行走相关end======================================
|
|
|
|
|
|
-- 获取日志信息
|
|
function MyGuildManager.RequestMyGuildLog(func)
|
|
NetManager.RequestMyGuildLog(function(msg)
|
|
this.MyGuildLogList = msg.familyLogInfo
|
|
if func then func() end
|
|
-- 发送日志数据更新事件
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.LogDataUpdate)
|
|
end)
|
|
end
|
|
|
|
-- 获取成员信息
|
|
function MyGuildManager.RequestMyGuildMembers(func)
|
|
NetManager.RequestMyGuildMembers(function(msg)
|
|
this.MyGuildMemList = msg.familyUserInfo
|
|
for i = 1, #this.MyGuildMemList do
|
|
this.MyGuildMemList[i].userName = PracticeManager.SetNameColor(msg.familyUserInfo[i].userName,msg.familyUserInfo[i].practiceLevel)
|
|
end
|
|
table.sort(this.MyGuildMemList, function(a, b)
|
|
if a.seconds == b.seconds then
|
|
return a.position < b.position
|
|
end
|
|
return a.seconds < b.seconds
|
|
end)
|
|
if func then func() end
|
|
-- 发送成员数据更新事件
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.MemberDataUpdate)
|
|
end)
|
|
end
|
|
|
|
-- 获取申请信息
|
|
function MyGuildManager.RequestMyGuildApplyList(func)
|
|
NetManager.RequestMyGuildApply(function(msg)
|
|
for i = 1, #msg.familyApply do
|
|
msg.familyApply[i].name = PracticeManager.SetNameColor(msg.familyApply[i].name,msg.familyApply[i].practiceLevel)
|
|
end
|
|
this.MyGuildApplyList = msg.familyApply
|
|
if func then func() end
|
|
-- 发送申请数据更新事件
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.ApplyDataUpdate)
|
|
-- 刷新服务器红点
|
|
ResetServerRedPointStatus(RedPointType.Guild_Apply)
|
|
end)
|
|
end
|
|
|
|
-- 申请修改图腾
|
|
function MyGuildManager.RequestChangeLogo(logoId, func)
|
|
NetManager.RequestChangeLogo(logoId, function(msg)
|
|
this.MyGuildInfo.icon = logoId
|
|
if func then func() end
|
|
-- 发送申请数据更新事件
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.DataUpdate)
|
|
end)
|
|
end
|
|
--请求可以领取红包数据
|
|
function MyGuildManager.ReuqsetRedPackage(func)
|
|
NetManager.GetAllRedPacketResponse(function(msg)
|
|
local num=0
|
|
local SpecialConfig=ConfigManager.GetConfigData(ConfigName.SpecialConfig,115)
|
|
for i = 1, #msg.info do
|
|
local config=ConfigManager.GetConfigData(ConfigName.GuildRedPackConfig,msg.info[i].redType)
|
|
if config and msg.info[i].isGet==0 and (config.Num-msg.info[i].getCount)>0 then
|
|
if config.BaseType~=2 or PlayerManager.dailyRedPack< tonumber(SpecialConfig.Value) then
|
|
num=num+1
|
|
end
|
|
end
|
|
end
|
|
this.PackageNum=num
|
|
CheckRedPointStatus(RedPointType.Guid_GetPackage)
|
|
CheckRedPointStatus(RedPointType.Guid_SendPackage)
|
|
--CheckRedPointStatus(RedPointType.Guild_RedPacket)
|
|
if func then
|
|
func(msg)
|
|
end
|
|
end)
|
|
|
|
end
|
|
--获取红包数据
|
|
function MyGuildManager.GetRedPackageNum()
|
|
return this.PackageNum
|
|
end
|
|
|
|
-- 获取我的公会信息
|
|
function MyGuildManager.GetMyGuildInfo()
|
|
return this.MyGuildInfo
|
|
end
|
|
|
|
-- 获取我的公会的成员数据
|
|
function MyGuildManager.GetMyGuildMemList()
|
|
return this.MyGuildMemList
|
|
end
|
|
--获取福利红包数据
|
|
function MyGuildManager.GetMyGuidRedPackage()
|
|
return this.MyGuidRedPackage
|
|
end
|
|
--设置福利红包数据
|
|
function MyGuildManager.SetMyGuidRedPackage(data)
|
|
local list={}
|
|
if data then
|
|
for key, value in pairs(data) do
|
|
if value.id and value.num then
|
|
-- --Log(" package id =="..value.id.." num=="..value.num)
|
|
local aaa={}
|
|
aaa.num=value.num
|
|
list[value.id]=aaa
|
|
end
|
|
end
|
|
end
|
|
this.MyGuidRedPackage=list
|
|
end
|
|
|
|
function this.IsHasRedPacket()
|
|
for k , v in pairs(this.MyGuidRedPackage) do
|
|
if v.num > 0 then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
-- 获取我的公会的会长信息
|
|
function MyGuildManager.GetMyGuildMasterInfo()
|
|
for _, v in ipairs(this.MyGuildMemList) do
|
|
if v.position == GUILD_GRANT.MASTER then
|
|
return v
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 获取公会成员数据
|
|
function MyGuildManager.GetMemInfo(memId)
|
|
if not memId then return end
|
|
for _, v in ipairs(this.MyGuildMemList) do
|
|
if v.roleUid == memId then
|
|
return v
|
|
end
|
|
end
|
|
end
|
|
-- 重置公会成员战斗力
|
|
function MyGuildManager.ResetMemForce(memId, force)
|
|
if not memId then return end
|
|
for _, v in ipairs(this.MyGuildMemList) do
|
|
if v.roleUid == memId then
|
|
v.soulForce = force
|
|
break
|
|
end
|
|
end
|
|
-- 发送数据更新事件
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.DataUpdate)
|
|
end
|
|
|
|
-- 获取我再公会中的数据
|
|
function MyGuildManager.GetMyMemInfo()
|
|
return this.MyMemInfo
|
|
end
|
|
|
|
-- 获取公会日志数据
|
|
function MyGuildManager.GetMyGuildLog()
|
|
return this.MyGuildLogList
|
|
end
|
|
|
|
-- 获取公会申请数据
|
|
function MyGuildManager.GetMyGuildApplyList()
|
|
return this.MyGuildApplyList
|
|
end
|
|
|
|
-- 获取我在公会中的职位
|
|
function MyGuildManager.GetMyPositionInGuild()
|
|
if PlayerManager.familyId == 0 then return end
|
|
if not this.MyMemInfo then return end
|
|
return this.MyMemInfo.position
|
|
end
|
|
|
|
-- 获取公会管理数量
|
|
function MyGuildManager.GetAdminMemNum()
|
|
local num = 0
|
|
for _, v in ipairs(this.MyGuildMemList) do
|
|
if v.position == GUILD_GRANT.ADMIN then
|
|
num = num + 1
|
|
end
|
|
end
|
|
return num
|
|
end
|
|
|
|
|
|
---============== 操作=================
|
|
-- 请求操作申请数据
|
|
function MyGuildManager.OperateApply(opType, applyId, func)
|
|
-- 公会战期间无法执行此操作
|
|
--if opType == GUILD_APPLY_OPTYPE.ONE_AGREE or opType == GUILD_APPLY_OPTYPE.ALL_AGREE then
|
|
-- if GuildFightManager.IsInGuildFight() then
|
|
-- PopupTipPanel.ShowTip("公会战期间无法执行此操作")
|
|
-- return
|
|
-- end
|
|
--end
|
|
|
|
if opType == GUILD_APPLY_OPTYPE.ALL_AGREE or opType == GUILD_APPLY_OPTYPE.ALL_REFUSE then
|
|
if #this.MyGuildApplyList == 0 then
|
|
PopupTipPanel.ShowTip(Language[10959])
|
|
return
|
|
end
|
|
end
|
|
NetManager.RequestOperateMyGuildApply(opType, applyId, function()
|
|
if opType == GUILD_APPLY_OPTYPE.ALL_AGREE or opType == GUILD_APPLY_OPTYPE.ALL_REFUSE then
|
|
this.MyGuildApplyList = {}
|
|
elseif opType == GUILD_APPLY_OPTYPE.ONE_AGREE or opType == GUILD_APPLY_OPTYPE.ONE_REFUSE then
|
|
local removeIndex = nil
|
|
for i, v in ipairs(this.MyGuildApplyList) do
|
|
if v.roleUid == applyId then
|
|
removeIndex = i
|
|
break
|
|
end
|
|
end
|
|
-- 删除相应位置的数据
|
|
if removeIndex then
|
|
table.remove(this.MyGuildApplyList, removeIndex)
|
|
end
|
|
end
|
|
-- 发送申请数据更新事件
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.ApplyDataUpdate)
|
|
-- 成功回调
|
|
if func then func() end
|
|
end)
|
|
end
|
|
|
|
-- 请求修改公会宣言
|
|
function MyGuildManager.RequestChangeGuildAnnounce(announce, func)
|
|
local pos = this.GetMyPositionInGuild()
|
|
if pos == GUILD_GRANT.MEMBER then
|
|
PopupTipPanel.ShowTip(Language[10960])
|
|
return
|
|
end
|
|
if not announce or announce == "" then
|
|
PopupTipPanel.ShowTip(Language[10961])
|
|
return
|
|
end
|
|
NetManager.RequestChangeGuildBase(1, announce, function(msg)
|
|
if msg.result == 0 then
|
|
PopupTipPanel.ShowTip(msg.err)
|
|
return
|
|
end
|
|
this.MyGuildInfo.annouce = announce
|
|
if func then func() end
|
|
-- 发送数据更新事件
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.DataUpdate)
|
|
end)
|
|
end
|
|
|
|
-- 请求修改公会名称
|
|
function MyGuildManager.RequestChangeGuildName(name, func)
|
|
if not NameManager.CheckStringRight(name) then
|
|
PopupTipPanel.ShowTip("名称含有敏感字符")
|
|
return
|
|
end
|
|
local pos = this.GetMyPositionInGuild()
|
|
if pos == GUILD_GRANT.MEMBER then
|
|
PopupTipPanel.ShowTip(Language[10962])
|
|
return
|
|
end
|
|
-- 判断物品数量
|
|
local cost = ConfigManager.GetConfigData(ConfigName.GuildSetting, 1).RenameCost
|
|
local haveNum = BagManager.GetItemCountById(cost[1][1])
|
|
if haveNum < cost[1][2] then
|
|
PopupTipPanel.ShowTip(Language[10839])
|
|
return
|
|
end
|
|
if not name or name == "" then
|
|
PopupTipPanel.ShowTip(Language[10963])
|
|
return
|
|
end
|
|
local config = ConfigManager.GetConfigData(ConfigName.GuildSetting, 1)
|
|
local minLen, maxLen = config.NameSize[1], config.NameSize[2]
|
|
local len = StringWidth(name)
|
|
if len < minLen or len > maxLen then
|
|
PopupTipPanel.ShowTip(Language[10844])
|
|
return
|
|
end
|
|
|
|
NetManager.RequestChangeGuildBase(0, name, function(msg)
|
|
if msg.result == 0 then
|
|
PopupTipPanel.ShowTip(msg.err)
|
|
return
|
|
end
|
|
this.MyGuildInfo.name = name
|
|
if func then func() end
|
|
-- 发送数据更新事件
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.DataUpdate)
|
|
end)
|
|
end
|
|
-- 请求修改公会申请类型
|
|
function MyGuildManager.RequestChangeJoinType(joinType, limitLevel, func)
|
|
local pos = this.GetMyPositionInGuild()
|
|
if pos == GUILD_GRANT.MEMBER then return end
|
|
|
|
NetManager.RequestChangeJoinType(joinType, limitLevel, function()
|
|
this.MyGuildInfo.joinType = joinType
|
|
if func then func() end
|
|
-- 发送数据更新事件
|
|
--Game.GlobalEvent:DispatchEvent(GameEvent.Guild.DataUpdate)
|
|
end)
|
|
end
|
|
|
|
-- 请求退出公会
|
|
function MyGuildManager.RequestQuitGuild(func)
|
|
-- 公会战期间无法执行此操作
|
|
if GuildFightManager.IsInGuildFight() then
|
|
PopupTipPanel.ShowTip(Language[10893])
|
|
return
|
|
end
|
|
local pos = this.GetMyPositionInGuild()
|
|
if pos == GUILD_GRANT.MASTER then
|
|
PopupTipPanel.ShowTip(Language[10964])
|
|
return
|
|
end
|
|
NetManager.RequestQuitGuild(function()
|
|
PlayerManager.familyId = 0
|
|
this.MyGuildInfo = nil
|
|
this.MyMemInfo = nil
|
|
this.MyFeteInfo={}
|
|
this.MyGuildMemList = {}
|
|
this.MyGuildApplyList = {}
|
|
this.MyGuildLogList = {}
|
|
this.MyGuidRedPackage={}
|
|
this.PackageNum=0
|
|
if func then func() end
|
|
-- 退出公会成功事件
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.OnQuitGuild)
|
|
--清援助数据
|
|
MyGuildManager.SetGuildHelpInfo_FiveRefresh()
|
|
-- 退出公会成功
|
|
PopupTipPanel.ShowTip(Language[10965])
|
|
-- 刷新服务器红点
|
|
ResetServerRedPointStatus(RedPointType.Guild_Apply)
|
|
ResetServerRedPointStatus(RedPointType.Guild_Shop)
|
|
ResetServerRedPointStatus(RedPointType.Shop_Guild_Check)
|
|
end)
|
|
end
|
|
|
|
-- 请求任命官职
|
|
function MyGuildManager.AppointmentPos(tId, tPos, func)
|
|
-- 公会战期间无法执行此操作
|
|
if GuildFightManager.IsInGuildFight() then
|
|
PopupTipPanel.ShowTip(Language[10893])
|
|
return
|
|
end
|
|
|
|
if tId == PlayerManager.uid then
|
|
PopupTipPanel.ShowTip(Language[10939])
|
|
return
|
|
end
|
|
|
|
-- 判断我是否有权限
|
|
local pos = MyGuildManager.GetMyPositionInGuild()
|
|
if pos == GUILD_GRANT.MEMBER then
|
|
PopupTipPanel.ShowTip(Language[10966])
|
|
return
|
|
end
|
|
--
|
|
if tPos == GUILD_GRANT.MASTER and pos ~= GUILD_GRANT.MASTER then
|
|
PopupTipPanel.ShowTip(Language[10938])
|
|
return
|
|
end
|
|
-- 如果委任官员判断官员数量是否已达上限
|
|
if tPos == GUILD_GRANT.ADMIN then
|
|
local adminNum = this.GetAdminMemNum()
|
|
local guildData = this.GetMyGuildInfo()
|
|
local maxNum = ConfigManager.GetConfigData(ConfigName.GuildLevelConfig, guildData.levle).OfficalNum
|
|
if adminNum >= maxNum then
|
|
PopupTipPanel.ShowTip(Language[10946])
|
|
return
|
|
end
|
|
end
|
|
-- 判断目标成员职位是否符合条件
|
|
local tData = this.GetMemInfo(tId)
|
|
if tPos == tData.position then
|
|
PopupTipPanel.ShowTip(Language[10967]..GUILD_GRANT_STR[tPos])
|
|
return
|
|
end
|
|
-- 管理之间无法操作
|
|
if pos == GUILD_GRANT.ADMIN and tData.position == GUILD_GRANT.ADMIN then
|
|
PopupTipPanel.ShowTip(Language[10968])
|
|
return
|
|
end
|
|
|
|
NetManager.RequestMyGuildAppointment(tId, tPos, function()
|
|
-- 成员数据变动
|
|
this.RequestMyGuildMembers()
|
|
if func then func() end
|
|
end)
|
|
end
|
|
|
|
-- 请求踢人
|
|
function MyGuildManager.RequestKickOut(tId, func)
|
|
-- 公会战期间无法执行此操作
|
|
if GuildFightManager.IsInGuildFight() then
|
|
PopupTipPanel.ShowTip(Language[10893])
|
|
return
|
|
end
|
|
|
|
if tId == PlayerManager.uid then
|
|
PopupTipPanel.ShowTip(Language[10939])
|
|
return
|
|
end
|
|
|
|
-- 判断我是否有权限
|
|
local pos = MyGuildManager.GetMyPositionInGuild()
|
|
if pos == GUILD_GRANT.MEMBER then
|
|
PopupTipPanel.ShowTip(Language[10902])
|
|
return
|
|
end
|
|
-- 判断目标职位是否符合条件
|
|
local tData = this.GetMemInfo(tId)
|
|
-- 管理之间无法操作
|
|
if tData.position == GUILD_GRANT.MASTER then
|
|
PopupTipPanel.ShowTip(Language[10969])
|
|
return
|
|
elseif pos == GUILD_GRANT.ADMIN and tData.position == GUILD_GRANT.ADMIN then
|
|
PopupTipPanel.ShowTip(Language[10968])
|
|
return
|
|
end
|
|
|
|
NetManager.RequestKickOutFormMyGuild(tId, function()
|
|
-- 成员数据变动
|
|
this.RequestMyGuildMembers()
|
|
if func then func() end
|
|
end)
|
|
end
|
|
|
|
-- 请求退出公会
|
|
function MyGuildManager.RequestDismissGuild(dType, func)
|
|
-- 公会战期间无法执行解散公会的操作
|
|
if dType == 1 then
|
|
if GuildFightManager.IsInGuildFight() then
|
|
PopupTipPanel.ShowTip(Language[10893])
|
|
return
|
|
end
|
|
end
|
|
local pos = this.GetMyPositionInGuild()
|
|
if pos ~= GUILD_GRANT.MASTER then
|
|
PopupTipPanel.ShowTip(Language[10902])
|
|
return
|
|
end
|
|
NetManager.RequestDismissGuild(dType, function()
|
|
if func then func() end
|
|
-- 解散公会成功
|
|
local destroyTime = ConfigManager.GetConfigData(ConfigName.GuildSetting, 1).DestroyTime
|
|
local timeStr = ""
|
|
if destroyTime < 60 then
|
|
timeStr = destroyTime .. Language[10316]
|
|
elseif destroyTime >= 60 and destroyTime < 3600 then
|
|
timeStr = math.floor(destroyTime/60)..Language[10031]
|
|
else
|
|
timeStr = math.floor(destroyTime/3600)..Language[10970]
|
|
end
|
|
PopupTipPanel.ShowTip(dType == 1 and string.format(Language[10971], timeStr) or Language[10972])
|
|
-- 发送数据更新事件
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.DismissStatusChanged)
|
|
end)
|
|
end
|
|
|
|
-- 判断商店栏位是否解锁
|
|
local _SortUnLockLevel = nil
|
|
function MyGuildManager.GetGuildShopSortIsUnLock(sort)
|
|
if not _SortUnLockLevel then
|
|
_SortUnLockLevel = {}
|
|
local guildLevelConfig = ConfigManager.GetConfig(ConfigName.GuildLevelConfig)
|
|
for level, data in ConfigPairs(guildLevelConfig) do
|
|
for sort = 1, data.ShopSort do
|
|
if not _SortUnLockLevel[sort] then
|
|
_SortUnLockLevel[sort] = level
|
|
end
|
|
end
|
|
end
|
|
end
|
|
local unLockLevel = _SortUnLockLevel[sort]
|
|
-- 没有解锁等级 999级解锁
|
|
if not unLockLevel then return false, 999 end
|
|
-- 判断是否解锁
|
|
local isUnLock = this.GetMyGuildInfo().levle >= unLockLevel
|
|
return isUnLock, unLockLevel
|
|
end
|
|
|
|
---=========== 服务器推送方法================
|
|
-- 被提出公会
|
|
function MyGuildManager.BeKickOut(msg)
|
|
-- uid 为0表示公会解散
|
|
LogPink("msg.uid "..msg.uid)
|
|
if msg.uid == PlayerManager.uid or msg.uid == 0 then
|
|
PlayerManager.familyId = 0
|
|
this.MyGuildInfo = nil
|
|
this.MyMemInfo = nil
|
|
this.MyFeteInfo={}
|
|
this.MyGuildMemList = {}
|
|
this.MyGuildApplyList = {}
|
|
this.MyGuildLogList = {}
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.BeKickOut)
|
|
-- 添加tip显示
|
|
GuildManager.AddGuildTip(GUILD_TIP_TYPE.KICKOUT, msg.uid)
|
|
-- 刷新服务器红点
|
|
ResetServerRedPointStatus(RedPointType.Guild_Apply)
|
|
ResetServerRedPointStatus(RedPointType.Guild_Shop)
|
|
ResetServerRedPointStatus(RedPointType.Shop_Guild_Check)
|
|
Timer.New(function ()
|
|
UIManager.OpenPanel(UIName.MainPanel)
|
|
end,0.3):Start()
|
|
else
|
|
local rIndex = nil
|
|
for index, mem in ipairs(this.MyGuildMemList) do
|
|
if mem.roleUid == msg.uid then
|
|
rIndex = index
|
|
break
|
|
end
|
|
end
|
|
if rIndex then
|
|
local rMem = table.remove(this.MyGuildMemList, rIndex)
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.KickOut, rMem.roleUid)
|
|
end
|
|
LogPink("msg.uid "..msg.uid)
|
|
--清除援助信息
|
|
-- MyGuildManager.DelSingleGuildHelpInfo(msg.uid)
|
|
end
|
|
end
|
|
|
|
-- 我的职位更新
|
|
function MyGuildManager.UpdateGuildPosition(msg)
|
|
local pos = msg.position
|
|
local uid = msg.uid
|
|
if uid == PlayerManager.uid then
|
|
local oldPos = this.MyMemInfo.position
|
|
this.MyMemInfo.position = pos
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.PositionUpdate)
|
|
-- 加入tip显示
|
|
GuildManager.AddGuildTip(GUILD_TIP_TYPE.POS, pos, oldPos)
|
|
-- 降职重置红点儿
|
|
if pos == GUILD_GRANT.MEMBER then
|
|
-- 刷新服务器红点
|
|
ResetServerRedPointStatus(RedPointType.Guild_Apply)
|
|
end
|
|
end
|
|
|
|
-- 更新成员列表里的职位
|
|
for _, v in ipairs(this.MyGuildMemList) do
|
|
if v.roleUid == uid then
|
|
v.position = pos
|
|
break
|
|
end
|
|
end
|
|
-- 发送数据更新事件
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.MemberDataUpdate)
|
|
end
|
|
|
|
|
|
--公会祭祀红点检测
|
|
function MyGuildManager.CheckGuildFeteRedPoint()
|
|
if PlayerManager.familyId == 0 then
|
|
return
|
|
end
|
|
if this.MyFeteInfo.lastFeteType==0 then --未祭祀
|
|
return true
|
|
end
|
|
|
|
local d={}--进度条可领取
|
|
for i = 1, 3 do
|
|
if this.MyFeteInfo.score and this.MyFeteInfo.score>=guildSacrificeRewardConfig[i].Score and this.MyGuildInfo.id and this.MyGuildInfo.id==this.MyFeteInfo.lastFeteGuildId then --有未领取 并且是当前公会 与上次祭祀公会相同
|
|
table.insert(d,i)
|
|
end
|
|
end
|
|
|
|
for n = 1, #d do
|
|
for index, v in ipairs(this.MyFeteInfo.takeFeteReward) do --已领
|
|
if d[n]==v then
|
|
table.remove(d,n) --删除已领数据 剩余未领取数据
|
|
end
|
|
end
|
|
end
|
|
|
|
local isOn =false
|
|
--若剩余数据 有未领取
|
|
isOn= #d>0
|
|
return isOn
|
|
end
|
|
|
|
|
|
|
|
this.isPanelRequest = false
|
|
--公会援助
|
|
function MyGuildManager.SetMyAidInfo(msg)
|
|
this.MyFeteInfo.guildHelpInfo = msg.familyUserInfo.guildHelpInfo
|
|
this.MyFeteInfo.guildHelpTime = msg.familyUserInfo.guildHelpTime
|
|
this.MyFeteInfo.isTakeGuildHelpReward = msg.familyUserInfo.isTakeGuildHelpReward
|
|
this.MyFeteInfo.GuildAidTimeStamp = msg.familyUserInfo.lastHelpSendTime
|
|
end
|
|
function MyGuildManager.SetMyAidBoxStateInfo(boxState)
|
|
this.MyFeteInfo.isTakeGuildHelpReward = boxState
|
|
MyGuildManager.RefreshAidRedPot()
|
|
end
|
|
this.allGuildHelpInfo = {}--援助 公会援助所有信息
|
|
--设置援助5点刷新 数据重置
|
|
function MyGuildManager.SetGuildHelpInfo_FiveRefresh()
|
|
this.MyFeteInfo.guildHelpInfo = nil
|
|
this.MyFeteInfo.guildHelpTime = 0
|
|
this.allGuildHelpInfo = {}
|
|
MyGuildManager.RefreshAidRedPot()
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.RefreshGuildAid)
|
|
end
|
|
--初始化工会援助所有信息
|
|
function MyGuildManager.SetAllGuildHelpInfo(msg)
|
|
for i = 1, #msg.guildHelpInfoIndication do
|
|
if msg.guildHelpInfoIndication[i].uid and msg.guildHelpInfoIndication[i].uid > 0 then
|
|
local singleHelpInfo = {}
|
|
singleHelpInfo.uid = msg.guildHelpInfoIndication[i].uid
|
|
singleHelpInfo.name = PracticeManager.SetNameColor(msg.guildHelpInfoIndication[i].name,msg.guildHelpInfoIndication[i].practiceLevel)
|
|
--Log("singleHelpInfo.name:"..tostring(singleHelpInfo.name))
|
|
singleHelpInfo.guildHelpInfo = {}
|
|
for j = 1, #msg.guildHelpInfoIndication[i].guildHelpInfo do
|
|
if msg.guildHelpInfoIndication[i].guildHelpInfo[j].num ~= -1 then
|
|
table.insert(singleHelpInfo.guildHelpInfo,{type = msg.guildHelpInfoIndication[i].guildHelpInfo[j].type,--碎片id
|
|
num = msg.guildHelpInfoIndication[i].guildHelpInfo[j].num,--总获得数量
|
|
hadtakenum = msg.guildHelpInfoIndication[i].guildHelpInfo[j].hadtakenum, })--已领取数量
|
|
end
|
|
end
|
|
--Log(" msg.guildHelpInfoIndication[i].uid ".. msg.guildHelpInfoIndication[i].uid)
|
|
this.allGuildHelpInfo[msg.guildHelpInfoIndication[i].uid] = singleHelpInfo
|
|
end
|
|
end
|
|
MyGuildManager.RefreshAidRedPot()
|
|
end
|
|
--当公会成员退出时清除求援信息
|
|
function MyGuildManager.DelSingleGuildHelpInfo(Deluid)
|
|
-- --LogGreen("DelSingleGuildHelpInfo "..Deluid)
|
|
for uid, value in pairs(this.allGuildHelpInfo) do
|
|
if uid == Deluid then
|
|
this.allGuildHelpInfo[uid] = nil
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.RefreshGuildAid)
|
|
MyGuildManager.RefreshAidRedPot()
|
|
end
|
|
end
|
|
end
|
|
--推送更新工会援助信息
|
|
function MyGuildManager.SetSingleGuildHelpInfo(msg)
|
|
--LogGreen("msg.uid "..msg.uid)
|
|
--LogGreen("#this.allGuildHelpInfo "..LengthOfTable(this.allGuildHelpInfo))
|
|
local isStarAdd = true
|
|
for uid, value in pairs(this.allGuildHelpInfo) do
|
|
--LogGreen("uid "..uid.." "..msg.uid)
|
|
if uid == msg.uid then
|
|
isStarAdd = false
|
|
this.allGuildHelpInfo[uid].uid = msg.uid
|
|
this.allGuildHelpInfo[uid].name = PracticeManager.SetNameColor(msg.name,msg.practiceLevel)
|
|
this.allGuildHelpInfo[uid].guildHelpInfo = {}
|
|
--LogGreen("msg.guildHelpInfo "..#msg.guildHelpInfo)
|
|
for j = 1, #msg.guildHelpInfo do
|
|
--LogGreen("推送更新工会援助信息 "..msg.uid.." "..msg.guildHelpInfo[j].type.." "..msg.guildHelpInfo[j].num.." "..msg.guildHelpInfo[j].hadtakenum)
|
|
if msg.guildHelpInfo[j].num ~= -1 then
|
|
table.insert(this.allGuildHelpInfo[uid].guildHelpInfo,{type = msg.guildHelpInfo[j].type,--碎片id
|
|
num = msg.guildHelpInfo[j].num,--总获得数量
|
|
hadtakenum = msg.guildHelpInfo[j].hadtakenum, })--已领取数量
|
|
else
|
|
if this.allGuildHelpInfo[uid] then
|
|
this.allGuildHelpInfo[uid] = nil
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if isStarAdd then
|
|
if msg.uid and msg.uid > 0 then
|
|
local singleHelpInfo = {}
|
|
singleHelpInfo.uid = msg.uid
|
|
singleHelpInfo.name = PracticeManager.SetNameColor(msg.name,msg.practiceLevel)
|
|
singleHelpInfo.guildHelpInfo = {}
|
|
-- --LogGreen("msg.guildHelpInfo "..#msg.guildHelpInfo)
|
|
for j = 1, #msg.guildHelpInfo do
|
|
-- --LogGreen("推送更新工会援助信息 "..msg.uid.." "..msg.guildHelpInfo[j].type)
|
|
if msg.guildHelpInfo[j].num ~= -1 then
|
|
table.insert(singleHelpInfo.guildHelpInfo,{type = msg.guildHelpInfo[j].type,--碎片id
|
|
num = msg.guildHelpInfo[j].num,--总获得数量
|
|
hadtakenum = msg.guildHelpInfo[j].hadtakenum, })--已领取数量
|
|
end
|
|
end
|
|
LogRed(" msg.uid ".. msg.uid)
|
|
this.allGuildHelpInfo[msg.uid] = singleHelpInfo
|
|
end
|
|
end
|
|
MyGuildManager.SetSingleGuildHelpInfoRefreshMyData(msg)
|
|
end
|
|
--自己发的援助更新自己信息
|
|
function MyGuildManager.SetSingleGuildHelpInfoRefreshMyData(msg)
|
|
if msg then
|
|
if msg.uid == PlayerManager.uid then
|
|
-- LogPink("自己发的援助更新自己信息 "..msg.uid.." "..msg.guildHelpInfo[1].type)
|
|
this.MyFeteInfo.guildHelpInfo = msg.guildHelpInfo
|
|
end
|
|
end
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.RefreshGuildAid)
|
|
MyGuildManager.RefreshAidRedPot()
|
|
end
|
|
--公会援助
|
|
function MyGuildManager.SetMyAidInfoHadtakenum(chipId,hadtakenum)
|
|
if this.MyFeteInfo.guildHelpInfo and #this.MyFeteInfo.guildHelpInfo > 0 then
|
|
for i = 1, #this.MyFeteInfo.guildHelpInfo do
|
|
if this.MyFeteInfo.guildHelpInfo[i].type == chipId then
|
|
this.MyFeteInfo.guildHelpInfo[i].hadtakenum = this.MyFeteInfo.guildHelpInfo[i].hadtakenum + hadtakenum
|
|
end
|
|
end
|
|
end
|
|
MyGuildManager.RefreshAidRedPot()
|
|
end
|
|
--更新自己援助次数
|
|
function MyGuildManager.SetSingleGuildHelpguildHelpTimeData()
|
|
if this.MyFeteInfo.guildHelpTime and this.MyFeteInfo.guildHelpTime > 0 then
|
|
this.MyFeteInfo.guildHelpTime = this.MyFeteInfo.guildHelpTime + 1
|
|
else
|
|
this.MyFeteInfo.guildHelpTime = 1
|
|
end
|
|
MyGuildManager.RefreshAidRedPot()
|
|
end
|
|
--更新自己援助CD时间
|
|
function MyGuildManager.SetGuildHelpCDTimeData()
|
|
this.MyFeteInfo.GuildAidTimeStamp = GetTimeStamp()
|
|
end
|
|
function MyGuildManager.GetAllGuildHelpInfo()
|
|
local curAllGuildHelpInfo = {}
|
|
--LogGreen("this.allGuildHelpInfo "..LengthOfTable(this.allGuildHelpInfo))
|
|
for key, value in pairs(this.allGuildHelpInfo) do
|
|
--LogGreen("value.guildHelpInfo "..#value.guildHelpInfo)
|
|
for j = 1, #value.guildHelpInfo do
|
|
local aidMaxNum = 5
|
|
for k = 1, #guildHelpConfig[1].RecourseReward do
|
|
if guildHelpConfig[1].RecourseReward[k][2] == value.guildHelpInfo[j].type then
|
|
aidMaxNum = guildHelpConfig[1].RecourseReward[k][3]
|
|
end
|
|
end
|
|
--LogGreen("aidMaxNum "..aidMaxNum .." ".. value.guildHelpInfo[j].num .." "..value.uid .." ".. PlayerManager.uid)
|
|
if aidMaxNum ~= value.guildHelpInfo[j].num and value.uid ~= PlayerManager.uid then
|
|
table.insert(curAllGuildHelpInfo,{type = value.guildHelpInfo[j].type,--碎片id
|
|
num = value.guildHelpInfo[j].num,--总获得数量
|
|
hadtakenum = value.guildHelpInfo[j].hadtakenum,
|
|
uid = value.uid,
|
|
name = value.name,
|
|
})--已领取数量
|
|
end
|
|
end
|
|
end
|
|
--LogGreen("curAllGuildHelpInfo "..#curAllGuildHelpInfo)
|
|
return curAllGuildHelpInfo
|
|
end
|
|
this.allGuildHelpRecordInfo = {}--援助 公会援助记录所有信息
|
|
--初始化工会援助记录所有信息
|
|
function MyGuildManager.SetAllGuildHelpLogInfo(msg)
|
|
this.allGuildHelpRecordInfo = msg.guildHelpLog
|
|
end
|
|
--推送更新工会援助记录所有信息
|
|
function MyGuildManager.SetSingleGuildHelpLogInfo(msg)
|
|
table.insert(this.allGuildHelpRecordInfo,msg.guildHelpLog)
|
|
end
|
|
--获取我的公会援助红点
|
|
function MyGuildManager.GetMyGuildHelpRedPoint()
|
|
if not PlayerManager.familyId or PlayerManager.familyId == 0 then return false end
|
|
--是否还有援助次数
|
|
local isShowRedPoint = false
|
|
if this.MyFeteInfo.guildHelpInfo then
|
|
isShowRedPoint = #this.MyFeteInfo.guildHelpInfo < ConfigManager.GetConfigData(ConfigName.GuildHelpConfig,1).RecourseTime[1]
|
|
else
|
|
isShowRedPoint = true
|
|
end
|
|
if not isShowRedPoint then
|
|
for i = 1, #this.MyFeteInfo.guildHelpInfo do
|
|
if this.MyFeteInfo.guildHelpInfo[i].num > this.MyFeteInfo.guildHelpInfo[i].hadtakenum then
|
|
isShowRedPoint = true
|
|
end
|
|
end
|
|
end
|
|
return isShowRedPoint
|
|
end
|
|
--获取公会军团援助红点
|
|
function MyGuildManager.GetMyAidOtherGuildHelpRedPoint()
|
|
if not PlayerManager.familyId or PlayerManager.familyId == 0 or LengthOfTable(this.allGuildHelpInfo) < 1 then return false end
|
|
for key, value in pairs(this.allGuildHelpInfo) do
|
|
if value.uid ~= PlayerManager.uid and this.MyFeteInfo.guildHelpTime < ConfigManager.GetConfigData(ConfigName.GuildHelpConfig,1).HelpTime[1]
|
|
and LengthOfTable(value.guildHelpInfo) > 0 then
|
|
for j = 1, #value.guildHelpInfo do
|
|
local aidMaxNum = 5
|
|
for k = 1, #guildHelpConfig[1].RecourseReward do
|
|
if guildHelpConfig[1].RecourseReward[k][2] == value.guildHelpInfo[j].type then
|
|
aidMaxNum = guildHelpConfig[1].RecourseReward[k][3]
|
|
end
|
|
end
|
|
--LogGreen("aidMaxNum "..aidMaxNum .." ".. value.guildHelpInfo[j].num .." "..value.uid .." ".. PlayerManager.uid)
|
|
if aidMaxNum > value.guildHelpInfo[j].num then
|
|
--Log("公会军团援助红点返回true")
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
--获取公会援助宝箱红点
|
|
function MyGuildManager.GetGuildHelpBoxRedPoint()
|
|
if not PlayerManager.familyId or PlayerManager.familyId == 0 then return false end
|
|
local chipMaxNum = ConfigManager.GetConfigData(ConfigName.GuildHelpConfig,1).RecourseTime[2]
|
|
local curFinishAidChipNum = 0
|
|
if this.MyFeteInfo.guildHelpInfo and #this.MyFeteInfo.guildHelpInfo > 0 then
|
|
for i = 1, #this.MyFeteInfo.guildHelpInfo do
|
|
local curguildHelpInfo = this.MyFeteInfo.guildHelpInfo[i]
|
|
if curguildHelpInfo.hadtakenum == chipMaxNum then
|
|
curFinishAidChipNum = curFinishAidChipNum + 1
|
|
end
|
|
end
|
|
end
|
|
if not MyGuildManager.MyFeteInfo.isTakeGuildHelpReward and curFinishAidChipNum >= ConfigManager.GetConfigData(ConfigName.GuildHelpConfig,1).RecourseTime[1] then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
function MyGuildManager.RefreshAidRedPot()
|
|
if not PlayerManager.familyId or PlayerManager.familyId == 0 then return end
|
|
CheckRedPointStatus(RedPointType.Guild_AidBox)
|
|
CheckRedPointStatus(RedPointType.Guild_AidGuild)
|
|
CheckRedPointStatus(RedPointType.Guild_AidMy)
|
|
end
|
|
function MyGuildManager.ShowGuildAidCdTime(_isShowTips)
|
|
local isShowTips = _isShowTips or true
|
|
-- 判断是否在冷却
|
|
local _CurTimeStamp = GetTimeStamp()
|
|
local stampTime = ConfigManager.GetConfigData(ConfigName.GuildHelpConfig,1).RecourseCD
|
|
if this.MyFeteInfo.GuildAidTimeStamp and _CurTimeStamp - this.MyFeteInfo.GuildAidTimeStamp < stampTime then
|
|
if isShowTips then
|
|
local cd = math.floor(stampTime - (_CurTimeStamp - this.MyFeteInfo.GuildAidTimeStamp))
|
|
PopupTipPanel.ShowTip(Language[10973]..GetLeftTimeStrByDeltaTime(cd)..Language[10974])
|
|
end
|
|
return false
|
|
end
|
|
return true
|
|
end
|
|
|
|
-- 设置我的公会信息
|
|
function MyGuildManager.SetMyGuildExploreNums(id,nums)
|
|
this.exploreNums[id] = nums
|
|
CheckRedPointStatus(RedPointType.zhognzhichengcheng)
|
|
end
|
|
|
|
function MyGuildManager.GetMyGuildExploreNums()
|
|
if not this.MyGuildInfo or not this.MyGuildInfo.id then
|
|
return 0
|
|
end
|
|
return this.exploreNums[this.MyGuildInfo.id] or 0
|
|
end
|
|
return this |