miduo_client/Assets/ManagedResources/~Lua/Modules/Guild/MyGuildManager.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