--新的命格管理 GiftManager = {} local this = GiftManager local giftConfig=ConfigManager.GetConfig(ConfigName.GiftConfig) local equipConfig=ConfigManager.GetConfig(ConfigName.EquipConfig) function this.Initialize() this.allHeroGifts={} this.playerGifts={} end --初始化命石 function this.InitGemsInfo(msg) end --初始化英雄礼物 function this.InitHeroGift(id,list) this.allHeroGifts[id]=list end --初始化主角礼物 function this.InitPlayerGift(list) this.playerGifts=list end --获取收取等级和最大数量 function this.GetCollectLvAndNum() local lv=0 local maxNum=0 local collect=0 local curNum=0 for i=1,#this.playerGifts do local id=this.playerGifts[i] if equipConfig[id] then collect=collect+equipConfig[id].Gift end end if CheckFunctionOpen(FUNCTION_OPEN_TYPE.Train) then collect=collect+HeroManager.ReturnGiftCount() end for k, v in ConfigPairs(giftConfig) do if collect>=v.Gift then lv=v.Id curNum=v.Box else maxNum=v.Box break end end if maxNum==0 then maxNum=curNum end return lv,curNum,maxNum end --设置英雄礼物 type 1:穿 2:脱 function this.SetHeroGift(id,list,type) if this.allHeroGifts[id]==nil then this.allHeroGifts[id]={} end for i=1,#list do if type==1 then table.insert(this.allHeroGifts[id],list[i]) elseif type==2 then table.removebyvalue(this.allHeroGifts[id],list[i]) end end HeroManager.ChangeHeroGift(id,this.allHeroGifts[id]) end --设置主角礼物 function this.SetPlayerGift(list) for i=1,#list do table.insert(this.playerGifts,list[i]) end end function this.GetHeroGifts(_id) if this.allHeroGifts[_id] then return this.allHeroGifts[_id] end return {} end function this.GetPlayerGifts() return this.playerGifts end function this.changeGiftsByType(_type,_list) end --获取英雄礼物增加的属性 function this.GetHeroGiftAddPro(_id) local data={} if not this.allHeroGifts[_id] then LogError("英雄gift======================nil") return data end local addPro=0 if this.playerGifts and #this.playerGifts>0 then for i=1,#this.playerGifts do local id=this.playerGifts[i] if equipConfig[id] and equipConfig[id].HeroGitUp and equipConfig[id].HeroGitUp>0 then addPro=addPro + equipConfig[id].HeroGitUp end end end --HeroGitUp local list=this.allHeroGifts[_id] for i=1,#list do local id=list[i] local pro = equipConfig[id].Property if pro and #pro>0 then for k = 1, #pro do local key=pro[k][1] local value=pro[k][2] if tonumber(key)~=0 and tonumber(key)~=nil then if not data[key] then data[key] = 0 end data[key] = data[key] + value end end end if CheckFunctionOpen(FUNCTION_OPEN_TYPE.Train) then local t=HeroManager.ReturnGiftAtt() for k, v in ipairs(data) do data[k]=data[k]*(1+t) end end --英雄礼物不会加成主角属性 -- local pro2 = equipConfig[id].PlayerProperty -- if pro2 and #pro2>0 then -- for k = 1, #pro2 do -- if not data[pro2[k][1]] then -- data[pro2[k][1]] = 0 -- end -- data[pro2[k][1]] = data[pro2[k][1]] + pro2[k][2] -- end -- end end if addPro>0 then for k, v in pairs(data) do data[k]=math.floor(v*(1+addPro/10000)+0.5) end end return data end --检测英雄红点 function this.CheckRoleRedPointById(_id) local isOpen=CheckFunctionOpen(FUNCTION_OPEN_TYPE.Gift) if isOpen==false then return false end local lv,cur,max=this.GetCollectLvAndNum() if this.allHeroGifts[_id] then local list=this.allHeroGifts[_id] if #list>=cur then return false end local allEquip = BagManager.GetBagItemDataByItemType(ItemBaseType.HeroGift) for i=1,#allEquip do if CheckListIsContainValue1(list,allEquip[i].id)==false then return true end end else return false end return false end --检测主角红点 function this.CheckPlayerRedPoint() local isOpen=CheckFunctionOpen(FUNCTION_OPEN_TYPE.Gift) if isOpen==false then return false end local allEquip = BagManager.GetBagItemDataByItemType(ItemBaseType.PlayerGift) for i=1,#allEquip do if CheckListIsContainValue1(this.playerGifts,allEquip[i].id)==false then return true end end return false end --获取英雄潜能等级 function this.GetHeroPotencyLvById(did) local lv=0 if this.playerGifts and #this.playerGifts>0 then for i=1,#this.playerGifts do local id=this.playerGifts[i] if equipConfig[id] and equipConfig[id].PotentialNew and #equipConfig[id].PotentialNew>0 and type(equipConfig[id].PotentialNew[1])~="userdata" then lv=lv+equipConfig[id].PotentialNew[2] end end end if this.allHeroGifts and this.allHeroGifts[did] then local list=this.allHeroGifts[did] for i=1,#list do local id=list[i] if equipConfig[id] and equipConfig[id].PotentialNew and #equipConfig[id].PotentialNew>0 and type(equipConfig[id].PotentialNew[1])~="userdata" then lv=lv+equipConfig[id].PotentialNew[2] end end end --LogError("礼物增加 潜能 lv====================================="..lv) return lv end --获取主角礼物增加的属性 function this.GetPlayerGiftAddPro() local data={} for i=1,#this.playerGifts do local id=this.playerGifts[i] local pro = equipConfig[id].PlayerProperty if pro and #pro>0 then for k = 1, #pro do local key=pro[k][1] local value= pro[k][2] if tonumber(key) ~=nil and tonumber(key)~=0 then if key~=0 and key~=nil then if not data[key] then data[key] = 0 end data[key] = data[key] + value end end end end local pro2 = equipConfig[id].Property if pro2 and #pro2>0 and pro2[1][1]~=0 and pro2[1][1]~=nil then for k = 1, #pro2 do local key=pro2[k][1] local value=pro2[k][2] if tonumber(key) ~=nil and tonumber(key)~=0 then if not data[key] then data[key] = 0 end if value and value~=0 then LogError("pro2[k][1]==="..key.." value=="..value) data[key] = data[key] + value end end end end end return data end function this.CheckGemRed() return false end function this.CheckSuperGemRed() return false end return this